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.
-
Download the Helm Chart.
-
Get a key to the entitled registry.
- Log in the MyIBM Container Software Library with the
IBMid and password that are associated with the entitled software.
- Copy your entitlement key from the Entitlement Keys section
and set it to Entitlement Key when created the imagePullSecret.
-
Add the Helm Repository:
helm repo add ibm-helm https://raw.githubusercontent.com/IBM/charts/master/repo/ibm-helm/
-
List the available chart versions:
helm repo update
helm search repo ibm-helm/ibm-devopsplan
-
Create the Namespace:
kubectl create namespace devopsplan
-
Create an ImagePullSecret:
oc create secret docker-registry ibm-entitlement-key \
--namespace devopsplan \
--docker-username=cp \
--docker-password=<EntitlementKey> \
--docker-server=cp.icr.io
-
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:
- Set the OpenShift DNS name for the domain
name:
DOMAIN=$(oc get --namespace=openshift-ingress-operator ingresscontroller/default -ojsonpath='{.status.domain}')
- 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:
- 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
- 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:
- 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
- Check Port 443
availability:
netstat -anp | grep 443 | grep LISTEN
- 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\"]}}"
- 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
- 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.
- 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}"
-
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.
-
You can uninstall and delete the chart by using the helm delete command:
helm delete ibm-devopsplan --namespace devopsplan