/kubeapps

A web-based UI for deploying and managing applications in Kubernetes clusters

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Kubeapps

CircleCI

Kubeapps is a web-based UI for deploying and managing applications in Kubernetes clusters. Kubeapps allows you to:

  • Browse and deploy Helm charts from chart repositories
  • Inspect, upgrade and delete Helm-based applications installed in the cluster
  • Add custom and private chart repositories (supports ChartMuseum and JFrog Artifactory)
  • Browse and provision external services from the Service Catalog and available Service Brokers
  • Connect Helm-based applications to external services with Service Catalog Bindings
  • Secure authentication and authorization based on Kubernetes Role-Based Access Control

Quickstart

Kubeapps assumes a working Kubernetes cluster (v1.8+), Helm (2.10.0+) installed in your cluster and kubectl installed and configured to talk to your Kubernetes cluster. Kubeapps has been tested with Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE),minikube and Docker for Desktop Kubernetes. Kubeapps works on RBAC-enabled clusters and this configuration is encouraged for a more secure install.

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

IMPORTANT: Kubeapps v1.0.0-alpha.4 and below used the kubeapps CLI to install Kubeapps, Tiller and other components. Please see the migration guide when upgrading from a previous version to v1.0.0-alpha.5 and above.

Use the Helm chart to install the latest version of Kubeapps:

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

IMPORTANT This assumes an insecure Helm installation, which is not recommended in production. See the documentation to learn how to secure Helm and Kubeapps in production.

The above commands will deploy Kubeapps into the kubeapps namespace in your cluster, it may take a few seconds to execute. For more information on installing and configuring Kubeapps, checkout the chart README.

Once it has been deployed and the Kubeapps pods are running, port-forward to access the Dashboard:

export POD_NAME=$(kubectl get pods -n kubeapps -l "app=kubeapps,release=kubeapps" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 in your browser to access the Kubeapps Dashboard"
kubectl port-forward -n kubeapps $POD_NAME 8080:8080

Dashboard login page

Access to the dashboard requires a Kubernetes API token to authenticate with the Kubernetes API server. Read the Access Control documentation for more information on configuring users for Kubeapps.

The following commands create a ServiceAccount and ClusterRoleBinding named kubeapps-operator which will enable the dashboard to authenticate and manage resources on the Kubernetes cluster:

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

Use the following command to reveal the authorization token that should be used to authenticate the Kubeapps dashboard with the Kubernetes API:

kubectl get secret $(kubectl get serviceaccount kubeapps-operator -o jsonpath='{.secrets[].name}') -o jsonpath='{.data.token}' | base64 --decode

NOTE: It's not recommended to create cluster-admin users for Kubeapps. Please refer to the Access Control documentation to configure more fine-grained access.

Dashboard main page

To remove Kubeapps from your cluster, simply run:

helm delete --purge kubeapps
kubectl delete crd apprepositories.kubeapps.com

To delete the kubeapps-operator ServiceAccount and ClusterRoleBinding,

kubectl delete clusterrolebinding kubeapps-operator
kubectl delete serviceaccount kubeapps-operator

Build from Source

Please refer to the Kubeapps Build Guide for instructions on setting up the build environment and building Kubeapps from source.

Developer Documentation

Please refer to the Kubeapps Developer Documentation for instructions on setting up the developer environment for developing on Kubeapps and its components.

Next Steps

Use Kubeapps to easily manage your applications running in your cluster, or look under the hood to see what's included in Kubeapps.

For a more detailed and step-by-step introduction to Kubeapps, read our introductory walkthrough.

Useful Resources

Differences from Monocular

The Monocular project was designed to run a public search and discovery website for Helm repositories (e.g. https://hub.kubeapps.com). Following its 1.0 release, Monocular is focused on delivering the experience for the Helm Hub.

Versions of Monocular 0.7 and older include a basic ability to install, view and delete Helm releases in a Kubernetes cluster. To focus on the Helm Hub experience, these features have been removed since the 1.0 release and are no longer supported. We recommend users of Monocular's in-cluster features try Kubeapps as it provides a more featured, robust and secure solution to managing Helm applications in your cluster.

Community

Click here to sign up to the Kubernetes Slack org.