KubeApps

Introduction

KubeApps is a web-based UI for deploying and managing applications in Kubernetes clusters.

You can:

  1. Deploy apps internally; browsing from Helm chart to repositories and deploy into your cluster
  2. Manage your apps that are deployed in your clusters
  3. Service catalog to browse and provision external services

Helm

So what is Helm?

It is a Kubernetes package and operations manager. It allows describing the application structure through convenient helm-charts and managing it with simple commands. This means packaging Kubernetes releases into a convenient zip file.

A Helm chart can contain any number of Kubernetes objects, all of which are deployed as part of the chart. Helm is made up of two components:

  1. A server called Tiller, which runs inside your Kubernetes cluster
  2. A client called Helm that runs on your local machine

A package is called a chart to keep with the maritime theme. With the Helm client, you can browse package repositories (containing published charts) and deploy them into your Kubernetes cluster. Helm will then pull the chart and talk to Tiller to create a release (instance of a Chart).

Why is it important?

It changes the way the server-side applications are defined, stored and managed. Adoption of Helm might well be the key to mass adoption of micro services, as using this package manager simplifies their management greatly.

helm 2.x only supported

Go to Desktop > Start Window > Command Prompt > Run as Administrator

Enter the following commands below:

kubectl -n kube-system create sa tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller

By default, Helm installs a deployment called tiller-deploy into the kube-system namespace. When RBAC is enabled, using Helm commands while running things in your regular namespace requires extra authorization to access the resources in the kube-system namespace.

The point of these commands above is to create a service account, create a ClusterRoleBinding to cluster-admin so Helm is allowed to do interesting things.

This is what you should see after entering the above commands.

Create kubernetes admin account

We will be creating an admin service account. This is the guide we will be using:

https://medium.com/@kanrangsan/creating-admin-user-to-access-kubernetes-dashboard-723d6c9764e4

Create admin service account

apiVersion: v1
kind: ServiceAccount
metadata:  
	name: admin-user  
	namespace: kube-system

Enter the following code into dashboard-adminuser.yml

Save the yml file to C:/Users/administrator directory

Then run the yml file on Administrator: Command Prompt via this command

kubectl apply -f dashboard-adminuser.yml

Install KubeApps

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

Check deployments

kubectl get pods -n kubeapps

Create Kubernetes API token

kubectl create serviceaccount kubeapps-operator
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator

Get kubeapps frontend pod name

kubectl get pods -n kubeapps -l "app=kubeapps,release=kubeapps" -o jsonpath="{.items[0].metadata.name}"

Redirect Port

Use the pod name found at the previous step

kubectl port-forward -n kubeapps <pod name> 8080:8080

This will start an HTTP proxy for secure access to the Kubeapps Dashboard. Leave the port running. Visit http://127.0.0.1:8080/ in your preferred web browser to open the Dashboard. Here's what you should see:

Paste token previously generated in token.txt file

kubeapps/getting-started.md at master · kubeapps/kubeapps

Head back to File Explorer and find the token.txt file.

kubeapps/getting-started.md at master · kubeapps/kubeapps
kubeapps/getting-started.md at master · kubeapps/kubeapps

Copy and paste the above token text into the login page as shown below.

After inserting the token, you should get the above page which is the dashboard

Deploy applications (e.g. Wordpress)

Click on Catalog

Search for 'apache' and click on apache

Click on Deploy

Enter 'my-web' for Name then click Submit.

Scroll to the right, take note of the port number highlighted. As shown in the image below,

Enter:

172.20.0.10:<port number>

Desktop

Now you have a working apache http server.

Head back to Kubeapps window and click on Upgrade at the top right corner.

Click on 'Values (YAML)' then scroll down and find the 'cloneHtdocsFromGit' section.

Edit the following code section cloneHtdocsFromGit with the above code then click Submit.

Wait for the application to make the relevant changes and switched over to 'Ready' state.

Reload the page with the ip address of 172.20.0.10:<port number>

You will see a page with its static content, taken from the git repository.

You've come to the end of this lab. Thank you!