2. September 2020

Kubeapps missing permission when installing by Helm

Kubeapps allows you to create service catalog in Kubernetes cluster.

You can deploy Kubeapps to the cluster using Helm. Helm is pretty cool and the app should work out of box.

What if you encounter following errors:

Web interface is not accessible:

Sorry! Something went wrong.
Unable to load Kubeapps configuration: Network Error

Tiller proxy is crashing immediatelly after installation:

kubeapps-internal-tiller-proxy-... 0/1     CrashLoopBackOff

Web interface displays error after login:

Sorry! Something went wrong.
You don't have sufficient permissions to use the namespace kubeapps

App Repositories also displays error:

App Repositories
You don't have sufficient permissions to fetch App Repositories in all namespaces
Ask your administrator for the following RBAC roles:

list apprepositories (kubeapps.com) in all namespaces.
See the documentation for more info on access control in Kubeapps.

The reason for the error might be simple. You’re using Helm 3 to install the application and in that case you must specify following parameter when starting installation:

--set useHelm3=true

How to fix the situation? Uninstall Kubeapps and install it again with the parameter:

helm uninstall kubeapps
helm install kubeapps --namespace kubeapps bitnami/kubeapps --set useHelm3=true

If the problem still persists, check the definition of clusterrolebinding. It might happen that it’s defined for namespace ‘default’. Change it to ‘kubeapps’:

kubectl edit clusterrolebinding kubeapps-operator

Change namespaces from default to kubeapps, save it. Reload the web interface. The catalog should start working.

19. December 2019

Install Jenkins by Helm to Kubernetes on Azure

Here you can find instructions for installing Jenkins on Kubernetes running on Microsoft Azure. The main advantage of deployment Jenkins on Kubernetes is the automatic scaling of agents.

How to do it?

First of all, you’ll need an account at portal.azure.com. Microsoft provides credit for new registration. If you have MSDN subscription you’ll get some credit which is available at portal my.visualstudio.com.

Software prerequisites:

  • Install Docker Desktop (not Desktop Enterprise). The installation also contains kubectl command from Kubernetes.
  • Install Helm.
  • Install Azure CLI.

Create Kubernetes infrastructure.

az aks create -n kube-jenkins --resource-group kube-jenkins-group \
  --node-count 1 --node-vm-size Standard_B2ms

Retrieve credentials for working with Kubernetes cluster on Azure.

az aks get-credentials -g kube-jenkins-group -n kube-jenkins

Switch to newly created Kubernetes.

kubectl config use-context kube-jenkins

Install Jenkins on Kubernetes by Helm.

helm install jenkins stable/jenkins

Retrieve password for admin user to login to Kubernetes.

printf $(kubectl get secret --namespace default jenkins \
  -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo

Create a tunnel from your computer to Kubernetes cluster. It will allow you to access port 8080 on localhost and the request will be forwarded to Jenkins on Kubernetes. With this command you do not need to install Ingress controller, so the setup is a little bit more secure than exposing Jenkins to internet.

export POD_NAME=$(kubectl get pods --namespace default \
  -l "app.kubernetes.io/component=jenkins-master" \
  -l "app.kubernetes.io/instance=jenkins" -o jsonpath="{.items[0].metadata.name}")
  echo http://127.0.0.1:8080
  kubectl --namespace default port-forward $POD_NAME 8080:8080

Go to web browser and type URL http://localhost:8080

Login is admin and password was retrieved by the command above.

If you’d like to remove Jenkins installation just type:

helm uninstall jenkins

5. December 2019

Helm 3.x fails with Error: must either provide a name or specify –generate-name

If you follow tutorials on using Helm, it might happen that they’re outdated, because they’re targeting Helm 2.x.

Following command for install will fail with error:

helm install -n aks-georgik-rocks aks-georgik-rocks-chart
Error: must either provide a name or specify --generate-name

The fix is simple. The syntax for helm 3.x is following:

helm install [NAME] [CHART] [flags]

Just remove -n. The command will look like this:

helm install aks-georgik-rocks aks-georgik-rocks-chart