With the recent announcement of VMware and Bitnami joining forces, I wanted to revisit the kubeapps project on Enterprise PKS earlier today. I followed the community documentation but ran into some smaller issues (see my GitHub comments here) that were coming up in the MongoDB deployment initially.
UPDATE: At first I thought you needed to enable privileged containers in PKS but actually you don’t have to do that! There was a typo in my configuration which led to an unknown flag for the MongoDB deployment. I used the flag “mongodb.securityContext.enable=false” when deploying the Helm chart but it should have been “mongodb.securityContext.enabled=false”. Thanks to Andres from the Bitnami team for catching this! The instructions below have been updated!
Install Helm
Add the bitnami repo:
helm repo add bitnami https://charts.bitnami.com/bitnami
Add a “kubeapps” namespace to deploy into
kubectl create namespace kubeapps
Add a Service Account to Tiller
vi rbac-config-tiller.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
kind: ServiceAccount
name: tiller
namespace: kube-system
---
kubectl create -f rbac-config-tiller.yaml
Leverage newly created service account for Tiller:
helm init --service-account tiller
Create Service account for kubeapps-operator
kubectl create serviceaccount kubeapps-operator
kubectl create clusterrolebinding kubeapps-operator \
--clusterrole=cluster-admin \
--serviceaccount=default:kubeapps-operator
kubectl get secret $(kubectl get serviceaccount kubeapps-operator -o jsonpath='{.secrets[].name}') -o jsonpath='{.data.token}' | base64 --decode
Copy the secret for use in the kubeapps dashboard later on.
Since NSX-T brings an out-of-the-box capability for exposing kubeapps to an external IP address, we can use LoadBalancer and skip the port-forwarding section of the documentation. Following what I found in another bug, I set some extra flags for disabling IPv6:
helm install --name kubeapps --namespace kubeapps bitnami/kubeapps \
--set frontend.service.type=LoadBalancer \
--set mongodb.securityContext.enabled=false \
--set mongodb.mongodbEnableIPv6=false
After a few minutes, the deployed services & deployments should be up and running:
Follow then part three of the instructions to access the dashboard.