Install and Use Kubeapps with the Bitnami Kubernetes Sandbox

Introduction

Kubernetes is the recommended way to manage containers in production. To make it even easier to work with Kubernetes, Bitnami offers Kubeapps, a set of tools to super-charge your Kubernetes cluster with:

  • Your own application dashboard, allowing you to deploy Kubernetes-ready applications into your cluster with a single click.
  • Kubeless, a Kubernetes-native Serverless Framework, compatible with serverless.com.
  • SealedSecrets, a way to encrypt a Secret into a SealedSecret, which is safe to store... even for a public repository.

Kubeapps binaries are available for both Linux and OS X, and Kubeapps has been tested with both minikube and Google Kubernetes Engine (GKE).

This guide explains how to install and get started with Kubeapps using the Bitnami Kubernetes Sandbox. The Bitnami Kubernetes Sandbox provides a complete development environment for containerized applications. It includes ready-to-run versions of a Kubernetes cluster, together with local volume provisioner, Helm, Ingress controller and Kubernetes Dashboard to offer as close to a production cluster as possible without any configuration pains.

Assumptions and prerequisites

This guide assumes that you have:

Although this guide uses the Bitnami Kubernetes Sandbox, Kubeapps can be used with any Kubernetes (v1.8.4+) cluster with Helm 3.x configured following the steps outlined in this guide.

Tip

On GKE, you must either be an "Owner" or have the "Container Engine Admin" role in order to install Kubeapps.

Step 1: Configure kubectl to work with the Bitnami Kubernetes Sandbox

The first step is to configure your locally installed copy of kubectl to communicate with the Bitnami Kubernetes Sandbox. Follow these steps:

  • Connect to the Bitnami Kubernetes Sandbox using SFTP.

  • Download the /etc/kubernetes/admin.conf file to your local system.

  • Edit the downloaded file and update the server variable to reflect the public IP address of the running Bitnami Kubernetes Sandbox instance.

    ...
    - cluster
    server: https://SERVER-IP:6443
    ...
    
  • Move the downloaded file to ~/.kube/sandbox.conf:

    sudo mv admin.conf ~/.kube/sandbox.conf
    
  • Set the KUBECONFIG environment variable to reflect the new configuration file:

    export KUBECONFIG=~/.kube/sandbox.conf
    
  • Your locally installed copy of kubectl should now be configured to use the Bitnami Kubernetes Sandbox. Verify this by executing kubectl cluster-info and checking the output.

Once you have configured kubectl to work with the Bitnami Kubernetes Sandbox, the next step is to install and access Kubeapps, and start deploying applications on your cluster. Watch the video below to learn how to install and use Kubeapps to deploy applications on Kubernetes or continue reading for instructions:

Step 2: Install Kubeapps

To install Kubeapps, execute the commands below on your local system:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install --namespace kubeapps kubeapps bitnami/kubeapps

It may take a few minutes for all Kubeapps services to start. You can check the status of the deployment using the command below:

kubectl get pods -w --namespace kubeapps

Proceed to the next step only after confirming that all Kubeapps services have successfully started.

Step 3: Log in to the Kubeapps Dashboard

Once all Kubeapps services are running, obtain a Kubernetes API token as follows:

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 generated API token, as you will need it to log in to Kubeapps.

Tip

It's not recommended to create cluster-admin users for Kubeapps production usage. Please refer to the Kubeapps access control documentation to configure fine-grained access control for users.

Next, run the following commands to start the Kubeapps Dashboard:

export POD_NAME=$(kubectl get pods -n kubeapps -l "app=kubeapps,release=kubeapps" -o jsonpath="{.items[0].metadata.name}")
kubectl port-forward -n kubeapps $POD_NAME 8080:8080

This will start an HTTP proxy on port 8080 for secure access to the Kubeapps Dashboard. You can now access the Kubeapps Dashboard by browsing to http://127.0.0.1:8080. Here's what you should see:

Kubeapps Dashboard loginPaste the API token generated earlier into the "Kubernetes API Token" field to log in to the Kubeapps Dashboard. Here is what you should see:Kubeapps Dashboard welcome page

Step 4: Deploy an application with Kubeapps

Once you have the Kubeapps Dashboard up and running, you can start deploying applications into your cluster.

  • Start with the Dashboard welcome page:
Kubeapps Dashboard
  • Use the "Catalog" menu to select an application from the list of available charts. This example assumes you want to deploy MariaDB.
MariaDB deployment
  • Click the "Deploy" button.
MariaDB namespace
  • You can customize the deployment by editing the form or YAML configuration file. Click "Deploy" to proceed.
MariaDB namespace

The application will now be deployed. You will be able to track the new Kubernetes deployment directly from the browser.

The "Notes" section of the deployment page contains important information to help you use the application, including how to obtain the MariaDB credentials using the command line. Alternatively, click the eye icon (in the "Application Secrets" section) to view the MariaDB credentials directly in your browser.

MariaDB deployment notes
Tip

To remove a deployment, click the "Delete" button on the deployment detail page. To remove Kubeapps from the cluster, execute the command helm delete kubeapps.

Useful links

To learn more about the topics discussed in this guide, visit the links below: