Workshop materials for new Kubernetes and NKE (Nine Kubernetes Engine) users.
- NKE cluster running with
kubectlaccess configured - ArgoCD deployed
- Container registry available
- ingress-nginx controller deployed
- Loki + Grafana for observability
.
├── kubectl-demo.sh # kubectl commands to run during the demo
├── demo-app/ # Example Python app
│ ├── app.py # Flask app (reads ConfigMap, writes to PVC)
│ ├── Dockerfile
│ └── requirements.txt
├── helm/workshop-app/ # Helm chart for the demo app
│ ├── Chart.yaml
│ ├── values.yaml
│ └── templates/
│ ├── configmap.yaml # App config mounted as /config/app.json
│ ├── pvc.yaml # Persistent storage for notes
│ ├── deployment.yaml # App deployment with probes & env vars
│ ├── service.yaml # ClusterIP service
│ ├── ingress.yaml # nginx Ingress
│ └── serviceaccount.yaml
└── argocd/
└── workshop-app.yaml # ArgoCD Application CR
Walk through kubectl-demo.sh section by section. Covers:
- Cluster info and node inspection
- Namespaces
- Pods — run, inspect, logs, exec
- Deployments — create, scale, rolling update, rollback
- Services — ClusterIP, LoadBalancer
- ConfigMaps and Secrets
- PersistentVolumeClaims
- Ingress
- Labels and selectors
- Debugging and troubleshooting
- Working with YAML manifests
- Observability with Loki/Grafana
cd demo-app
docker build -t registry.example.com/workshop/demo-app:latest .
docker push registry.example.com/workshop/demo-app:latestOption A — apply the ArgoCD Application directly:
kubectl apply -f argocd/workshop-app.yamlOption B — install with Helm manually (for demonstration):
helm install workshop-app helm/workshop-app \
--namespace workshop \
--create-namespace \
--set image.repository=registry.example.com/workshop/demo-app \
--set ingress.host=workshop.example.comkubectl get pods -n workshop
kubectl get ingress -n workshop
curl http://workshop.example.comThings to show with the running app:
- ConfigMap change: edit
values.yamlconfig, push, watch ArgoCD sync - Scaling: change
replicaCount, observe pod info changing per request - PVC persistence: add notes, delete the pod, see notes survive
- Logs: view in Grafana/Loki with
{namespace="workshop"} - Rolling update: change the image tag, watch zero-downtime rollout
Edit helm/workshop-app/values.yaml to change:
| Value | Description | Default |
|---|---|---|
image.repository |
Container image | registry.example.com/workshop/demo-app |
ingress.host |
Hostname for the app | workshop.example.com |
config.title |
Page title | NKE Workshop |
config.theme_color |
UI accent color | #1a73e8 |
config.message |
Welcome message | Welcome to the NKE Kubernetes Workshop! |
persistence.size |
PVC size | 1Gi |