While Kubernetes clusters significantly increase development speed and enable DevOps best practices, the configuration, management, and maintenance of essential services such as logging, monitoring, and managing certifications prove to be time-consuming. Thankfully, BKPR aims to eliminate this bottleneck by providing pre-configured, tested, and ready-to-use solutions that can be easily tweaked for your purpose.
Table of Contents
What is Bitnami Kubernetes Production Runtime (BKPR)
Bitnami Kubernetes Production Runtime (BKPR) is an open-source project that compiles a collection of services that will help you get your production Kubernetes cluster set up with logging/monitoring, certificate, and DNS management in just a few clicks. With a 0.1.0 release in late 2018, the project's contributors helped make it available for AKS, GKE, and EKS.
BKPR consists of a collection of Kubernetes manifests written in Jsonnet.
It leverages the following components to achieve its goal of reducing the complexity required to deploy and run applications and services on top of a Kubernetes cluster:
- Ingress stack (Nginx, cert-manager, OAuth2 Proxy and ExternalDNS);
- Logging Stack (Eleastricsearch, Fluentd, and Kibana);
- Monitoring stack (Prometheus, Alertmanager and Grafana).
The binary kubeprod evaluates the manifests and applies them to the Kubernetes cluster of your choice.
How to Install Bitnami Kubernetes Production Runtime (BKPR)
First, download and install kubeprod. You will need to download the binary kubeprod on the workstation you plan to create and manage your Kubernetes cluster. Currently, 1.7.1 is the latest version and the one that we used for this guide. Please review this link to download the appropriate version to your system (Mac OS X, Windows, or Linux).
Make sure that you run a Kubernetes version that is compatible with BKPR.
Bitnami provided a matrix for that. You can find it here:
Visually, running the kubeprod install looks like that:
How to Set Up Bitnami Kubernetes Production Runtime on Google Kubernetes Engine (GKE)
We won't be listing every detail on the installation process to get BKPR running on your GKE cluster since Bitnami provides a well-documented page here. If you have any problems with it, they also have this troubleshooting guide.
The environment variable GCLOUD_PROJECT is worth mentioning because it's not just your project name but your project ID.
Since BKPR creates and manages a Google Cloud DNS zone used to map external access to the cluster's services (Grafana, Prometheus, etc.), you will need to configure your domain registrar to use the NS records provided by Google. You can find the NS records to use if you navigate on your GCP Dashboard to Network services > Cloud DNS:
The DNS propagation can take anywhere from 1 hour to 24 hours, and in some cases, up to 48hours. Feel free to use https://www.whatsmydns.net/ to check the DNS propagation status.
Verifying BKPR Installation on GKE is Complete
Once you've waited long enough and your DNS changes have propagated, you can now access different dashboards:
Grafana will include 3 default dashboards that will give you an overview of your cluster's workload:
Now that we've deployed BKPR which required some initial setup, let's see our pods and services running on our GKE cluster:
You can see all components from the Ingress, Logging, and Monitoring stack are running.
The illustrations below will help you understand how the different services are connected to each other.
Bitnami Kubernetes Production Runtime (BKPR) and Kubeapps
Bitnami recommends installing Kubeapps to access an open-source web-based UI for deploying and managing applications in your Kubernetes cluster.
The dashboard provides the ability to:
- Browse Helm charts and deploy them to your cluster.
- Browse and provision external services from the Service Catalog.
- Upgrade, manage and delete applications that are deployed in the cluster.
You can find the step-by-step instructions on deploying Kubeapps to your cluster with the link below:
Need help on how to use the dashboard? Bitnami has excellent documentation here:
While it is certainly a decent option to use Kubeapps to deploy an application to your cluster quickly, it doesn't fit the DevOps methodology and forces you to use the dashboard every time you need to modify something to your deployment. However, it would be a solid option for people who enjoy configuring their applications with a WebUI or just started managing a Kubernetes Cluster.
Managing a production Kubernetes cluster isn't an easy task. If you had to deploy and maintain independent logging, monitoring, and functional Ingresses for your cluster, it would be incredibly time-consuming.
Thankfully Bitnami offers BKPR, and it works right out of the box. Bitnami already has everything configured and tested for you. However, you might run into issues if you plan to use it long-term and make manual adjustments to those manifest templates that kubeprod provides.
Bitnami also mentions that using a tool like kubecfg, which they update frequently, will help you manipulate those jsonnet manifests and perhaps manage them through a GitOps-style pipeline. But very little documentation is provided for those use cases.
You may also be interested in:
More cost-effective than hiring in-house, with Nearshore Boost, our nearshore software development service, you can ensure your business stays competitive with an expanded team and a bigger global presence, you can be flexible as you respond to your customers’ needs.
Learn more about our services by booking a free consultation with us today!