Flight Plan: Automate Cloud Orchestration with Kubernetes

This BoosterPack was created and authored by: BigBitBus

DAIR BoosterPacks are free, curated packages of cloud-based tools and resources about a specific emerging technology, built by experienced Canadian businesses who have built products or services using that technology and are willing to share their expertise.

Overview

Kubernetes has emerged as the cloud native containerization platform of choice for business IT applications. Using Kubernetes effectively, can deliver some great benefits to any business:

  • Cloud-agnostic containerized apps that run in any public or private cloud.
  • Promoting healthy DevOps and SecOps practices through standardized, repeatable workflows defined in code.
  • Automating operational tasks like scaling, deployments, patching and rollbacks
  • Cross-layer monitoring and alerting for continuous feedback and improvement
  • Improving infrastructure utilization and granular cost control
  • Reducing manual labour and human error in IT and operations

Kubernetes are a powerful, robust, resilient, and extensible containerization platform and armed with this toolkit, you will avoid false starts and red herrings, saving you time and money that can be invested elsewhere in your business and your product. Further, this Boosterpack is intended to get you to market faster and decrease the downtime of applications developed and deployed using good Kubernetes practices.

Flight Plan: Automate Cloud Orchestration with Kubernetes

Installing or acquiring a Kubernetes cluster does not automatically provide business value. While there are a variety of ways of installing Kubernetes in an organization’s public or private cloud environment or a developer laptop, developers and IT operations engineers often find it challenging to map their application and processes to Kubernetes.

The opportunity cost of running a suboptimal Kubernetes-based development and production workflow can be a huge drain on any business by slowing down release cycles, causing outages, inflating cloud bills, and burning through expensive engineering hours as the teams iterate and try to learn how to correctly deploy their software applications on Kubernetes.

Regrettably, many containerization initiatives fail for one reason – Kubernetes can be complex and challenging to graspThe Sample Solution in this BoosterPack aims to alleviate much of the pain of learning and navigating the Kubernetes landscape to quickly become productive.

The Kubernetes Sample Solution covers:

  1. Installing and configuring a single-node Kubernetes cluster on AWS or Azure (using the DAIR Cloud Platform) for development and testing.
  2. Deploying a stateful To-Do List Web Application that includes a frontend (Vue.js), backend (Django Restful Framework), and database (PostgreSQL) on Kubernetes.
  3. Using community-driven and custom-written Kubernetes Helm Charts – which help you define, install, and upgrade even the most complex Kubernetes application – to deploy software and components into the Kubernetes cluster.
  4. Managing software deployments into the Kubernetes cluster, including container image management using Skaffold.
  5. Enabling the Kubernetes dashboard to navigate the Kubernetes cluster.
  6. Adding infrastructure monitoring via the Prometheus stack, which includes Grafana dashboards.
  7. Configuring NGINX ingress to make the cluster’s service accessible from outside the cluster.
  8. Examples about how to manage application secrets and configuration.
  9. Advanced topics like resource limits, auto-scaling, and namespaces.
  10. Discussion around some of the pitfalls and remediation for common Kubernetes challenges.

The graphic below shows the application (in red) surrounded by the key Kubernetes and cloud native concepts that the KAT BoosterPack highlights.

Resources

BigBitBus has published an open-source project on GitHub called the Kubernetes Automation Toolkit. The GitHub repository is the best source of regularly updated information updates and we recommend you follow this open-source GitHub project while you experiment with the KAT BoosterPack. We also recommend that you visit the code and documentation repository to improve your familiarity with Kubernetes concepts, give you helpful hints and provide the most up-to-date documentation.

https://GitHub.com/BigBitBusInc/kubernetes-automation-toolkit

Kubernetes is an open source CNCF (Cloud Native Computing Foundation) project. It is very well documented and there is a large ecosystem of free and commercial training available for various aspects of Kubernetes. We list the most relevant and valuable resources below:

  • Kubernetes Documentation: In our opinion, the number one resource for beginners and advanced users alike.
  • Helm: The package manager for Kubernetes.
  • Prometheus and Grafana: The de-facto cloud-native open-source monitoring stack.
  • Microk8s: Autonomous, production-grade Kubernetes, on cloud, clusters, workstations, Edge and IoT.
  • Skaffold: Standard workflows for building, pushing, and deploying an application.

Tutorials

We highly recommend that you visit the code and documentation repository for the Kubernetes Automation Toolkit to get acquainted with Kubernetes concepts and pick up some helpful hints within the documentation.

https://GitHub.com/BigBitBusInc/kubernetes-automation-toolkit

The table below provides a non-comprehensive list of links to tutorials the author has found to be most useful.

Tutorial ContentSummary
Kubernetes: Official tutorials These tutorials will introduce you to many Kubernetes aspects. Best of all, some of them use the Katakoda playground to practice on a virtual Kubernetes cluster in the cloud ahead of trying to install Kubernetes on your system(s).
Helm: Official tutorialsHelm is the most popular package manager for Kubernetes. There is a quick-start guide, details on how to install Helm, and a tutorial on the basics of using Helm.

As a best practice, we highly recommend you consult the official websites and support channels of all components you install in your Kubernetes environment.

Documentation

Please see the table below for a set of documentation resources for the BigBitBus Kubernetes Application Toolkit (KAT) BoosterPack.

 

DocumentSummary
Main README for the BigBitBus Kubernetes Automation ToolkitAn up to date README for the BoosterPack code. This README file also contains a concise introduction to containers and important Kubernetes concepts. We highly recommend users read this document.
Django To-Do API Application README and CodeDjango Python To-Do backend interface and a detailed README file; includes Helm Chart deployed using Skaffold.
Vue.js To-Do Single-page-application README and CodeTo-Do application frontend implemented in Vue.js and a README file; includes Helm chart deployed using Skaffold.
Monitoring and Dashboard README and Helm ValuesInstallation and configuration monitoring with Prometheus and Grafana into the Kubernetes cluster, using standard Helm Charts created by the Prometheus community.
Local Installation Instructions (on a VM running within your PC)How to install KAT locally on your PC (ideal for a standalone development environment)

Support

BigBitBus has published an open-source project on GitHub called the Kubernetes Automation Toolkit (KAT) with documentation available to answer many troubleshooting topics. If you find a bug or have ideas about how to improve the code or BoosterPack, feel free to open an issue in the GitHub repository.

If you’re unable to find the answer you’re looking for, feel free to post your questions in the DAIR Slack channel or [email protected]

Best Practices

  1. Kubernetes and cloud native technology is constantly evolving. Do not assume it is a time-bound project to “move” to Kubernetes and then assume it is “done” with the end of the project. Your team will need to constantly adjust, evolve, and innovate to stay current and keep your applications running in the Kubernetes world.
  2. Understand that power lies with the open-source cloud native community and not any one company or product owner. Knowing how to get help via the community (for example, by opening GitHub issues, contributing back to the project via pull requests, and reporting bugs into open-source Git projects) is a very useful method of getting ahead in your Kubernetes journey.
  3. Any software or component deployed or modified in Kubernetes should be defined as code (IaC YAML manifests and Helm Charts for example) and version controlled using Git or other Supply Chain Management systems, instead of using manual Command Line Interface commands to modify the state of the cluster.
  4. Users should keep their Kubernetes clusters and Helm Charts updated because cloud native technology is undergoing constant development. For example, the Kubernetes APIs are routinely updated without backward compatibility, rendering older Helm Charts unusable.
  5. The Sample Solution contains a section “What this BoosterPack is Not” which will help you understand the limitations of the KAT BoosterPack.

Tips and Traps

  1. Do not make Stack Overflow or GitHub issues your first point of support when learning or debugging Kubernetes. In many forums, information can be out of context, outdated, and worse – biased. Go to the official source first, all successful open-source projects have good and up-to-date documentation.
  2. Be discerning: There are lots of free Helm Charts downloadable from all over the internet to install almost anything on your Kubernetes cluster. Don’t get overambitious and install things without asking yourself 3 questions:
  • Do I need this new component?
  • Have I vetted the Helm Chart, ensuring it comes from a reputable source?
  • Is there a clean rollback path?

Just as you wouldn’t install spyware-infused executables on your laptop or click on malware links, you shouldn’t install unknown Helm Charts on your infrastructure!

The Kubernetes Automation Toolkit (KAT) BoosterPack presents an end-to-end example for building and shipping software on the Kubernetes platform.

Sample Solution