Evolution of application deployment over the past 20 years.
Configure your local and remote lab environments.
Covers the resource types that are included with Kubernetes.
•Pod
•Job
Using helm to manage Kubernetes resources
Example microservice application.
Kubernetes manifests to deploy the demo application.
Explore how custom resources can add functionality
Install additional software to enhance the deployment.
Improving the DevX when working with Kubernetes.
How to safely upgrade your clusters and nodes.
Implement CI/CD for your applications (with GitOps!)
Kluctl provides a lightweight GitOps controller that keeps your cluster in sync with configuration stored in Git. The project works similarly to ArgoCD or Flux but leverages the familiar kluctl
CLI. We'll use it to continuously deploy our demo application to both staging and production.
All of the files used in this lesson live in 14-cicd/kluctl-gitops:
deployment.yaml
– top‑level deployment that installs the Kluctl controller and web UI.clusters/
– per‑cluster configuration. Each cluster contains a KluctlDeployment
pointing back to our repo.Taskfile.yaml
– helper tasks for deploying and interacting with the controller.version: "3"
tasks:
deploy-staging-cluster:
desc: "Deploy kluctl gitops staging target"
cmds:
- kluctl deploy -t staging
deploy-production-cluster:
desc: "Deploy kluctl gitops production target"
cmds:
- kluctl deploy -t production
# task deploy-staging-cluster
# task deploy-production-cluster
# task get-webui-password
# task port-forward-webui
Access http://localhost:8080
and log in as admin using the password from the secret. The interface shows the status of each KluctlDeployment
and lets you trigger manual reconciliations.
Each KluctlDeployment
polls Git every five minutes. When new manifests are merged, the controller automatically applies them and prunes resources that no longer exist in Git.
Our GitHub Action builds container images and updates the manifests with the new tags. Once that pull request merges, Kluctl detects the update and rolls out the new images to staging and production.
Releases work the same way: tagging the repository kicks off the build pipeline, pushes images with the tag, and opens a PR updating the manifests. Merging the PR triggers the controller to deploy the release.
With Kluctl managing our clusters we have a fully automated path from GitHub to Kubernetes.