Getting started with DevOps Plan Helm Chart

This quick start guide shows you how to deploy DevOps Plan on IBM OpenShift, to a local Kubernetes Cluster, or with Emissary-ingress Load Balancer.

Before you can deploy DevOps Plan on, you must first:
  • Setup your environment by installing OpenShift CLI, Helm CLI and having access to OpenShift Cluster. For more information about how to get started with OpenShift and Helm, see Getting started with OpenShift and Getting Started with Helm. Setup the environment with OpenShift 4.13 and higher, the OpenShift CLI, and Helm 3.16 and higher.
  • DevOps Plan requires a PostgreSQL database and a Keycloak to create TeamSpace, Applications, and add users to sign in. The PostgreSQL database may be running in your cluster or on hardware that resides outside of your cluster. The values used to connect to the database and Keycloak are required when installing DevOps Plan. The helm chart provides the PostgreSQL database and Keycloak by default. You can disable and use your own PostgreSQL database and Keycloak.
  • Configure IBM License Service on OpenShift and copy the upload secret and configmap to the namespace/project where the DevOps Plan server will be installed. For more information, see DevOps Plan Licensing Requirements.
This guide shows you how to access DevOps Plan Helm Chart and install it in your own OpenShift cluster environment, a local Kubernetes Cluster, or Emissary-ingress Load Balancer.
  1. Download the Helm Chart.
  2. Get a key to the entitled registry.
    1. Log in the MyIBM Container Software Library with the IBMid and password that are associated with the entitled software.
    2. Copy your entitlement key from the Entitlement Keys section and set it to Entitlement Key when created the imagePullSecret.
  3. Add the Helm Repository:
    helm repo add ibm-helm https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm/
  4. List the available chart versions:
    helm repo update
    helm search repo ibm-helm/ibm-devopsplan
  5. Create the Namespace:
    kubectl create namespace devopsplan
  6. Create an ImagePullSecret:
    oc create secret docker-registry ibm-entitlement-key \
      --namespace devopsplan \
      --docker-username=cp \
      --docker-password=<EntitlementKey> \
      --docker-server=cp.icr.io
  7. Install the chart:
    • Install on OpenShift Cluster
    • Install on Local Kubernetes Cluster
    • Install with Emissary-ingress Load Balancer
    • To install DevOps Plan on an OpenShift Cluster:
      1. Set the OpenShift DNS name for the domain name:
        DOMAIN=$(oc get --namespace=openshift-ingress-operator ingresscontroller/default -ojsonpath='{.status.domain}')
      2. Install the Helm Chart:
        helm install ibm-devopsplan ibm-helm/ibm-devopsplan-prod \
          --namespace devopsplan \
          --set global.imagePullSecrets={ibm-entitlement-key} \
          --set global.domain=${DOMAIN}
        Note: If your cluster's default storage class does not support ReadWriteMany, set:
        --set global.persistence.rwxStorageClass=<rwx_storage_class> > --set securityContext.fsGroup=65531
    • To install DevOps Plan on a Local Kubernetes Cluster:
      1. Download the ibm-devopsplan-prod chart from the devops-plan repository and unpack it in a local directory.
        helm pull ibm-helm/ibm-devopsplan-prod --untar
      2. Install the Helm Chart:
        helm install ibm-devopsplan ibm-helm/ibm-devopsplan-prod \
          -f ibm-devopsplan-prod/values-nginx.yaml \
          --namespace devopsplan \
          --set global.imagePullSecrets={ibm-entitlement-key} \
          --set global.persistence.rwoStorageClass=[default_storage_class] \
          --set keycloak.service.ipAddress=[vm_ip_address]
        Note: If your cluster's default storage class does not support ReadWriteMany, set:
        --set global.persistence.rwxStorageClass=<rwx_storage_class>
    • To install DevOps Plan with Emissary-ingress Load Balancer:
      1. Check OpenSSL Version and ensure that your OpenSSL version is 1.1.1 or later:
        openssl version
        # Example output: OpenSSL 1.1.1s  1 Nov 2022
      2. Check Port 443 availability:
        netstat -anp | grep 443 | grep LISTEN
      3. Install Emissary-ingress by using Helm. For detailed instructions, see the official quick start guide.
        # Add Helm repo and update
        helm repo add datawire https://app.getambassador.io
        helm repo update
        
        # Create namespace and install Emissary
        kubectl create namespace emissary
        kubectl apply -f https://app.getambassador.io/yaml/emissary/3.9.1/emissary-crds.yaml
        kubectl wait --timeout=90s --for=condition=available deployment emissary-apiext -n emissary-system
        
        helm install emissary-ingress --namespace emissary datawire/emissary-ingress
        kubectl -n emissary wait --for=condition=available --timeout=90s deploy -lapp.kubernetes.io/instance=emissary-ingress
        Verify resources:
        kubectl get all -n emissary
        kubectl get all -n emissary-system
        If the EXTERNAL-IP remains in a pending state, assign an external IP address:
        IPADDRESS=<Your_External_IP_Address>
        kubectl patch service emissary-ingress -n emissary -p "{\"spec\": {\"externalIPs\": [\"$IPADDRESS\"]}}"
      4. Generate Ingress Secrets:
        DOMAIN=<Your_External_IP_Address>.nip.io
        NAMESPACE=devopsplan
        
        kubectl create namespace $NAMESPACE
          helm pull ibm-helm/ibm-devopsplan-prod --untar
        
          chmod +x ibm-devopsplan-prod/files/*.sh \
          && bash ibm-devopsplan-prod/files/certificate.sh -n $NAMESPACE -s ingress $DOMAIN
        Verify the secrets:
        kubectl get secret -n $NAMESPACE | grep ingress
      5. Install DevOps Plan:
        helm upgrade --install ibm-devopsplan ./ibm-devopsplan-prod \
          -f ibm-devopsplan-prod/values-emissary.yaml \
          --namespace $NAMESPACE \
          --set global.imagePullSecrets={ibm-entitlement-key} \
          --set global.certSecretName=ingress \
          --set global.domain=$DOMAIN \
          --set global.persistence.rwoStorageClass=<Your storage class name> \
          --set replicaCount=<Number_of_replica>
        Note: Ensure that your global.imagePullSecrets are formatted with braces: {ibm-entitlement-key}. If you are using an external Keycloak, replace -f values-emissary.yaml with --set ingress.type=mapping.
      6. Verify the installation:
        kubectl get mapping -n $NAMESPACE
        helm status ibm-devopsplan -n $NAMESPACE
        Access URLs:
        echo "https://ibm-devopsplan-keycloak.${DOMAIN}"
        echo "https://ibm-devopsplan.${DOMAIN}"
  8. Enable License Metrics.
    By default, the global.licenseMetric parameter is set to false. You must set it to to true during the helm install/upgrade.
    --set global.licenseMetric=true 
    Note: Before you can enable license metrics, you must have IBM License Service installed on your OpenShift environment. For more information on installing IBM License Service, see DevOps Plan Licensing Requirements.
  9. You can uninstall and delete the chart by using the helm delete command:
    helm delete ibm-devopsplan --namespace devopsplan