It is fascinating how integration patterns are transforming toward more light and agile type of architecture. I see cloud-native development approach plays a vital role in this, where each integration service is becoming independent and elastic.
Let’s demonstrates that by deploying App Connect Server on the OpenShift platform. There are two main steps:
- Install Helm on OpenShift
- Deploy App Connect via IBM charts
Install Helm
- download Helm client
source /dev/stdin <<< "$(curl -s https://storage.googleapis.com/kubernetes-helm/helm-v2.9.0-linux-amd64.tar.gz | tar xz)"
- create OpenShift project for Helm server (
tiller
)oc new-project tiller
- set the tiller project/namespace .. that will enable Helm client to fetch the server-side
export TILLER_NAMESPACE=tiller
- initialize Helm client
cd linux-amd64 ./helm init
- set the service-account for Helm server to give it the required access privileges
oc process -f https://github.com/openshift/origin/raw/master/examples/helm/tiller-template.yaml -p TILLER_NAMESPACE="${TILLER_NAMESPACE}" -p HELM_VERSION=v2.9.0 | oc create -f -
- verify Helm client and server deployment
./helm version Client: &version.Version{SemVer:"v2.9.0", GitCommit:"f6025bb9ee7daf9fee0026541c90a6f557a3e0bc", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.9.0", GitCommit:"f6025bb9ee7daf9fee0026541c90a6f557a3e0bc", GitTreeState:"clean"}
Deploy App Connect
- create a project/namespace
oc new-project ace
- grant tiller to access the project
oc policy add-role-to-user edit "system:serviceaccount:${TILLER_NAMESPACE}:tiller"
- apply SCC to enable ace with the necessary access permissions
oc create -f https://raw.githubusercontent.com/IBM/cloud-pak/master/spec/security/scc/ibm-anyuid-scc.yaml
- create a service-account for to blind the SCC with ace deployment
oc create sa ibm-ace-sa
- add the SCC to the service account
oc adm policy add-scc-to-user ibm-anyuid-scc -z ibm-ace-sa
- add IBM charts to your local repo
helm repo add stable https://raw.githubusercontent.com/IBM/charts/master/repo/stable
- load App Connect image to local docker registry
docker load -i ibm-ace-server-11.0.0.5.tar.gz
- tag App Connect image with your registry host
docker tag ibm-ace-server:11.0.0.5 docker-registry.default.svc:5000/ace/ibm-ace-server:11.0.0.5
- push App Connect image to cluster registry
docker push docker-registry.default.svc:5000/ace/ibm-ace-server:11.0.0.5
- deploy App Connect
helm install --name ace-dev stable/ibm-ace-server-dev --set license=accept --set image.repository.aceonly={docker-repo/ace-image-name} --set image.tag={image-tag}
- ` you may update the chart values: image path & tag via the cli`
- verify the deploymnet
oc get pod
the result should similar to this
NAME READY STATUS RESTARTS AGE
ace-ibm-ace-5dcd4976f7-2jzqt 1/1 Running 0 6m
ace-ibm-ace-5dcd4976f7-k4vb5 1/1 Running 0 7m
ace-ibm-ace-5dcd4976f7-xdk6t 1/1 Running 0 7m
tiller-deploy-9d8996745-j5vxq 1/1 Running 0 4h
Big shout out to Rob Convery and his team for the well documented resources: ace-helm & ace-docker