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!)
Helm provides a helm create
command that scaffolds the boilerplate for a new chart. The repository for this course contains two examples:
helm create
so you can explore all of the default files generated by Helm.Every chart has a Chart.yaml
defining its metadata. Here is the file from the minimal example:
apiVersion: v2
name: minimal
description: A tiny helm chart for educational purposes
type: application
version: 0.1.0
appVersion: 1.26.0
type
can be application
or library
. Application charts install resources into the cluster while library charts expose reusable templates for other charts.
The values.yaml
file provides default configuration. For the minimal chart:
environment: production
configData:
- key: conditionalKey
value: "this will be included"
enabled: true
A second values file (values-alt.yaml
) shows how different environments can override these defaults.
Templates live in the templates/
directory. The _helpers.tpl
file defines reusable variables such as envShort
:
{{- define "envShort" -}}
{{- if eq .Values.environment "production" -}}
prod
{{- else -}}
non-prod
{{- end -}}
{{- end -}}
The chart renders a ConfigMap
that uses this helper and loops over configData
items:
apiVersion: v1
kind: ConfigMap
metadata:
name: helm-{{ .Release.Name }}-configmap
data:
appVersion: {{ .Chart.AppVersion }}
environment: {{ .Values.environment | quote }}
envShort: {{ template "envShort" . }}
{{- range .Values.configData }}
{{- if .enabled }}
{{ .key }}: {{ .value | quote }}
{{- end }}
{{- end }}
A simple NOTES.txt
file prints information after installation:
Hi \U1F44B -- you just deployed {{ template "envShort" . }}
Use helm upgrade --install
to deploy the chart from a local path:
helm upgrade --install demo ./minimal -n 05-helm --create-namespace
Passing an alternate values file modifies the rendered output:
helm upgrade --install demo ./minimal -f values-alt.yaml -n 05-helm
Inspect the resulting config map with:
kubectl get configmap -n 05-helm -o yaml
When finished, delete the namespace to clean up:
kubectl delete namespace 05-helm
Helm also supports hooks for running resources before or after installs and upgrades. They are useful for tasks like database migrations or cleanup jobs and are covered briefly in the video.
You can find these example charts in the course repository if you want to explore further.