Skip to content

Setup with Helm

You can deploy Dirigible via Helm Chart in a Kubernetes cluster.

Prerequisites

Steps


  1. Add the Eclipse Dirigible Helm repository:

    helm repo add dirigible https://eclipse.github.io/dirigible
    
    helm repo update
  2. Verify Eclipse Dirigible Helm chart:

    helm pull dirigible/dirigible --prov
    
    curl -o ~/.gnupg/pubring.gpg https://eclipse.github.io/dirigible/charts/pubring.gpg
    
    helm verify dirigible-<version>.tgz
    You shoul see message:
    Signed by: 
    Using Key With Fingerprint: 
    Chart Hash Verified:
  3. Basic:

    helm install dirigible dirigible/dirigible

    ???+ info "Access" This will install Eclipse Dirigible Deployment and Service with ClusterIP only. To access the Dirigible instance execute the command that was printed in the console.

     Example:
    
     ```
     export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=dirigible,app.kubernetes.io/instance=dirigible" -o jsonpath="{.items[0].metadata.name}")
     echo "Visit http://127.0.0.1:8080 to use your application"
     kubectl --namespace default port-forward $POD_NAME 8080:8080    
     ```
    
     - Navigate to: [http://127.0.0.1:8080](http://127.0.0.1:8080)
     - Login with: `dirigible`/`dirigible`
    
  4. Kubernetes:

    === "Basic"

     ```
     helm install dirigible dirigible/dirigible \
     --set ingress.enabled=true \
     --set ingress.host=<ingress-host>
     ```
    
     This will expose the Dirigible instance through Ingress host (**`http://...`**).
    

    === "Istio"

     !!! info "Prerequisites"
    
         Install [Istio](https://istio.io/latest/docs/setup/getting-started/).
    
         ```
         kubectl label namespace default istio-injection=enabled
         ```
    
     ```
     helm install dirigible dirigible/dirigible \
     --set istio.enabled=true \
     --set ingress.host=<ingress-host>
     ```
    
     This will install Eclipse Dirigible `Deployment`, `Service` with `ClusterIP` only and Istio `Gateway` and `Virtual Service`. To access the Dirigible instance execute the command that was printed in the console.
    
     ```
     kubectl get svc istio-ingressgateway -n istio-system \
     -o jsonpath="{.status.loadBalancer.ingress[*].hostname}"
     ```
    

    === "PostgreSQL"

     ```
     helm install dirigible dirigible/dirigible \
     --set ingress.enabled=true \
     --set ingress.host=<ingress-host> \
     --set database.enabled=true
     ```
    
     This will install also `PostgreSQL` database with `1Gi` storage and update the Dirigible datasource configuration to consume the database.
    

    === "PostgreSQL & Keycloak"

     ```
     helm install dirigible dirigible/dirigible \
     --set ingress.enabled=true \
     --set ingress.host=<ingress-host> \
     --set database.enabled=true \
     --set keycloak.enabled=true \
     --set keycloak.install=true \
     --set keycloak.database.enabled=true
     ```
    
     In addition `Keycloak` will be deployed and configured.
     
     !!! info "Disable HTTPS"
    
         In some cases you might want to disable the "Required HTTPS" for Keycloak.
         
         - Login to the `PostgreSQL` Pod:
    
         ```
         kubectl exec -it keycloak-database-<pod-uuid> /bin/bash
         ```
         
         - Connect to the `keycloak` database:
    
         ```
         psql --u keycloak
         ```
    
         - Set the `ssl_required` to `NONE`:
    
         ```
         update REALM set ssl_required='NONE' where id = 'master';
         ```
    
         - Restart the `Keycloak` pod to apply the updated configuration:
    
         ```
         kubectl delete pod keycloak-<pod-uuid>
         ```
    
         Now the `Required HTTPS` should be disabled and the keycloak instance should be accessible via **`http://`**
    

    === "GCP Cloud SQL Postgre & Keycloak"

     !!! info "Prerequisites"
         - Install the [gcloud CLI](https://cloud.google.com/sdk/docs/install)
         - Install [kubectl](https://kubernetes.io/docs/tasks/tools/) and [configure cluster access](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#default_cluster_kubectl)
         - Install [Helm](https://helm.sh/docs/intro/install/)
    
     !!! info "Info"
         - You can check the [blog](https://www.dirigible.io/blogs/2022/08/10/gcp-gke-dns-istio-letsencrypt-postgresql-keycloak/) for more details.
    
     ```
     helm upgrade --install dirigible dirigible -n dirigible-demo \
     --set volume.enabled=true \
     --set serviceAccount.create=false \
     --set keycloak.serviceAccountCreate=false \
     --set ingress.tls=true \
     --set keycloak.enabled=true \
     --set keycloak.install=true \
     --set istio.enabled=true \
     --set istio.enableHttps=true \
     --set gke.cloudSQL=true \  
     --set gke.projectId=<your-project-id> \
     --set gke.region=<your-gke-cluster-region> \
     --set ingress.host=<your-domain>
     ```
    
  5. Kyma:

    === "Basic"

     ```
     helm install dirigible dirigible/dirigible \
     --set kyma.enabled=true \
     --set kyma.apirule.host=<kyma-host>
     ```
    
     This will install additionally an `ApiRule` and XSUAA `ServiceInstance` and `ServiceBinding`. The appropriate roles should be assigned to the user.
    

    === "PostgreSQL"

     ```
     helm install dirigible dirigible/dirigible \
     --set kyma.enabled=true \
     --set kyma.apirule.host=<kyma-host> \
     --set database.enabled=true
     ```
    
     This will install also `PostgreSQL` database with `1Gi` storage and update the Dirigible datasource configuration to consume the database.
    

    === "PostgreSQL & Keycloak"

     ```
     helm install dirigible dirigible/dirigible \
     --set kyma.enabled=true \
     --set kyma.apirule.host=<kyma-host> \
     --set database.enabled=true \
     --set keycloak.enabled=true \
     --set keycloak.install=true
     ```
    
     In addition `Keycloak` will be deployed and configured.
    
     !!! info "Disable HTTPS"
    
         In some cases you might want to disable the "Required HTTPS" for Keycloak.
         
         - Login to the `PostgreSQL` Pod:
    
         ```
         kubectl exec -it keycloak-database-<pod-uuid> /bin/bash
         ```
         
         - Connect to the `keycloak` database:
    
         ```
         psql --u keycloak
         ```
    
         - Set the `ssl_required` to `NONE`:
    
         ```
         update REALM set ssl_required='NONE' where id = 'master';
         ```
    
         - Restart the `Keycloak` pod to apply the updated configuration:
    
         ```
         kubectl delete pod keycloak-<pod-uuid>
         ```
    
         Now the `Required HTTPS` should be disabled and the keycloak instance should be accessible via **`http://`**
    
  6. Uninstall:

    helm uninstall dirigible

Configuration

The following table lists all the configurable parameters expose by the Dirigible chart and their default values.

Generic

NameDescriptionDefault
dirigible.imageCustom Dirigible image""
image.repositoryDirigible image repodirigiblelabs/dirigible-all
image.repositoryKymaDirigible Kyma image repodirigiblelabs/dirigible-sap-kyma
image.repositoryKeycloakDirigible Keycloak image repodirigiblelabs/dirigible-keycloak
image.pullPolicyImage pull policyIfNotPresent
service.typeService typeClusterIP
service.portService port8080
replicaCountNumber of replicas1
imagePullSecretsImage pull secrets[]
nameOverrideName override""
fullnameOverrideFullname override""
podSecurityContextPod security context{}
nodeSelectorNode selector{}
tolerationsTolerations[]
affinityAffinity{}
resourcesResources{}

Basic

NameDescriptionDefault
volume.enabledVolume to be mountedtrue
volume.storageVolume storage size1Gi
database.enabledDatabase to be deployedfalse
database.imageDatabase imagepostgres:13
database.driverDatabase JDBC driverorg.postgresql.Driver
database.storageDatabase storage size1Gi
database.usernameDatabase usernamedirigible
database.passwordDatabase passworddirigible
ingress.enabledIngress to be createdfalse
ingress.annotationsIngress annotations{}
ingress.hostIngress host""
ingress.tlsIngress tlsfalse

Istio

NameDescriptionDefault
istio.enabledIstio to be enablefalse
istio.gatewayNameIstio gateway namegateway
istio.serversPortNumberIstio servers port number80
istio.serversPortNameIstio servers port namehttp
istio.serversPortProtocolIstio servers port protocolHTTP
istio.serversHostIstio servers host*
istio.virtualserviceNameIstio virtual service namedirigible
istio.virtualserviceHostsIstio virtual service hosts*
istio.virtualserviceGatewaysIstio virtual service gatewaygateway
istio.virtualserviceDestinationIstio virtual service destinationdirigible
istio.virtualservicePortIstio virtual service port8080

Kyma

NameDescriptionDefault
kyma.enabledKyma environment to be usedfalse
kyma.apirule.enabledKyma ApiRule to be createdtrue
kyma.apirule.hostKyma host to be used in ApiRule""

Keycloak

NameDescriptionDefault
keycloak.enabledKeycloak environment to be usedfalse
keycloak.installKeycloak to be installedfalse
keycloak.nameKeycloak deployment namekeycloak
keycloak.imageKeycloak imagejboss/keycloak:12.0.4
keycloak.usernameKeycloak usernameadmin
keycloak.passwordKeycloak passwordadmin
keycloak.replicaCountKeycloak number of replicas1
keycloak.realmKeycloak realm to be setmaster
keycloak.clientIdKeycloak clientId to be useddirigible
keycloak.database.enabledKeycloak database to be usedfalse
keycloak.database.enabledKeycloak database to be usedtrue
keycloak.database.imageKeycloak database imagepostgres:13
keycloak.database.storageKeycloak database storage size1Gi
keycloak.database.usernameKeycloak database usernamekeycloak
keycloak.database.passwordKeycloak database passwordkeycloak

Usage

Specify the parameters you which to customize using the --set argument to the helm install command. For instance,

helm install dirigible dirigible/dirigible \
--set ingress.enabled=true \
--set ingress.host=my-ingress-host.com

The above command sets the ingress.host to my-ingress-host.com.

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

helm install dirigible dirigible/dirigible --values values.yaml

TIP

You can use the default values.yaml.

Released under the EPL-2.0 License.