Home / Keptn v1 Docs / Release 0.12.x / Operate Keptn / Advanced Install Options
When executing keptn install
, Keptn is installed via a Helm chart, which can also be done using the Helm CLI directly.
Therefore, the helm CLI is required to execute of the following command:
helm install keptn https://github.com/keptn/keptn/releases/download/0.12.0/keptn-0.12.0.tgz -n keptn --create-namespace --wait --set=continuous-delivery.enabled=true,control-plane.apiGatewayNginx.type=LoadBalancer
helm install jmeter-service https://github.com/keptn/keptn/releases/download/0.12.0/jmeter-service-0.12.0.tgz -n keptn --create-namespace --wait
helm install helm-service https://github.com/keptn/keptn/releases/download/0.12.0/helm-service-0.12.0.tgz -n keptn --create-namespace --wait
Note: To continue with Keptn after the installation with Helm, we recommend authenticating the Ketpn CLI as explained here.
As shown above, the helm install
or helm upgrade
commands offer a flag called --set
, which can be used to specify several configuration options using the format key1=value1,key2=value2,...
.
The full list of available flags can be found in the helm-charts.
helm upgrade keptn keptn --install -n keptn --create-namespace --wait --version=0.12.0 --repo=https://charts.keptn.sh --set=control-plane.apiGatewayNginx.type=LoadBalancer
For example, the Control Plane with the Execution Plane (for Continuous Delivery) can be installed by the following command:
helm upgrade keptn keptn --install -n keptn --create-namespace --wait --version=0.12.0 --repo=https://charts.keptn.sh --set=continuous-delivery.enabled=true
For example, the Control Plane with the Execution Plane (for Continuous Delivery) and a LoadBalancer
for exposing Keptn can be installed by the following command:
helm upgrade keptn keptn --install -n keptn --create-namespace --wait --version=0.12.0 --repo=https://charts.keptn.sh --set=continuous-delivery.enabled=true,control-plane.apiGatewayNginx.type=LoadBalancer
The following section contains instructions for installing Keptn in an air-gapped / offline installation scenario.
The following artifacts need to be available locally:
Download Keptn Helm Charts
Download the Helm charts from the Keptn 0.12.0 release:
Move the helm charts to a directory on your local machine, e.g., offline-keptn
.
For convenience, the following script creates this directory and downloads the required helm charts into it:
mkdir offline-keptn
cd offline-keptn
curl -L https://github.com/keptn/keptn/releases/download/0.12.0/keptn-0.12.0.tgz -o keptn-0.12.0.tgz
curl -L https://github.com/keptn/keptn/releases/download/0.12.0/helm-service-0.12.0.tgz -o helm-service-0.12.0.tgz
curl -L https://github.com/keptn/keptn/releases/download/0.12.0/jmeter-service-0.12.0.tgz -o jmeter-service-0.12.0.tgz
cd ..
Download Containers/Images
Within the Helm Charts several Docker Images are referenced (Keptn specific and some third party dependencies). We recommend to pulling, re-tagging and pushing those images to a local registry that the Kubernetes cluster can reach.
We are providing a helper script for this in our Git repository: https://github.com/keptn/keptn/blob/master/installer/airgapped/pull_and_retag_images.sh
For convenience, you can use the following commands to download and execute the script:
cd offline-keptn
curl -L https://raw.githubusercontent.com/keptn/keptn/0.12.0/installer/airgapped/pull_and_retag_images.sh -o pull_and_retag_images.sh
chmod +x pull_and_retag_images.sh
KEPTN_TAG=0.12.0 ./pull_and_retag_images.sh "your-registry.localhost:5000/"
cd ..
Please mind the trailing slash for the registry url (e.g., your-registry.localhost:5000/
).
Installation
Keptn’s Helm chart allows you to specify the name of all images, which can be especially handy in air-gapped systems where you cannot access DockerHub for pulling the images.
We are providing a helper script for this in our Git repository: https://github.com/keptn/keptn/blob/master/installer/airgapped/install_keptn.sh
For convenience, you can use the following commands to download and execute the script:
cd offline-keptn
curl -L https://raw.githubusercontent.com/keptn/keptn/0.12.0/installer/airgapped/install_keptn.sh -o install_keptn.sh
chmod +x install_keptn.sh
./install_keptn.sh "your-registry.localhost:5000/" keptn-0.12.0.tgz helm-service-0.12.0.tgz jmeter-service-0.12.0.tgz
cd ..
The Helm chart allows customizing the root-context for the Keptn API and Bridge.
By default, the Keptn API is located under http://HOSTNAME/api
and the Keptn Bridge is located under http://HOSTNAME/bridge
.
By specifying a value for control-plane.prefixPath
, the used prefix for the root-context can be configured.
For example, if a user sets control-plane.prefixPath=/mykeptn
in the Helm install/upgrade command,
the Keptn API is located under http://HOSTNAME/mykeptn/api
and the Keptn Bridge is located under http://HOSTNAME/mykeptn/bridge
:
helm upgrade keptn keptn --install -n keptn --create-namespace --wait --version=0.12.0 --repo=https://charts.keptn.sh --set=control-plane.apiGatewayNginx.type=LoadBalancer,continuous-delivery.enabled=true,control-plane.prefixPath=/mykeptn
If you want to use an externally hosted MongoDB instead of the MongoDB installed by Keptn, please use the helm upgrade
command as shown below. Basically, provide the MongoDB host, port, user, and password in form of a connection string.
helm upgrade keptn keptn --install -n keptn --create-namespace
--set=control-plane.mongo.enabled=false,
control-plane.mongo.external.connectionString=<YOUR_MONGODB_CONNECTION_STRING>,
control-plane.mongo.auth.database=<YOUR_DATABASE_NAME>
If you are already using an Ingress-Controller and want to create an ingress object for Keptn, you can leverage the ingress section of the helm chart. By default enabled is set to false.
The Helm chart allows customizing the ingress object to your needs. When enabled is set the true, the chart allows you to specify optional parameters of host, path, pathType, tls, and annotations. This will cater for alot of different Ingress-Controllers and configurations.
helm upgrade keptn keptn --install -n keptn --create-namespace
--set=control-plane.ingress.enabled=true,
control-plane.ingress.annotations=<YOUR_ANNOTATIONS>,
control-plane.ingress.host=<YOUR_HOST>,
control-plane.ingress.path=<YOUR_PATH>,
control-plane.ingress.pathType=<YOUR_PATH_TYPE>,
control-plane.ingress.tls=<YOUR_TLS>