Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Cloud Native Lab

A hands-on learning and experimentation repository for cloud-native technologies, Linux Foundation and CNCF-related training, Kubernetes certification preparation, automation, observability, security and Go development.

Repository description: Hands-on cloud-native labs for Kubernetes, Linux, containers, Go, observability, GitOps, security, CNCF technologies, and the Kubestronaut certification journey.

Cloud Native Lab path through the five Kubestronaut certifications

The Kubestronaut path combines cloud-native foundations, application development, cluster administration, and Kubernetes security. The suggested learning sequence is KCNA → CKAD → CKA → KCSA → CKS, although CNCF does not require the exams to be completed in that order. To earn Kubestronaut recognition, all five certifications must be active at the same time.

The status labels in the diagram describe the content available in this repository. They do not represent an individual's certification status.

For requirements, renewal planning, ethical exam preparation, and official sources, read the complete Kubestronaut learning path.

Long-form documentation is built with MkDocs:

./scripts/docs-serve.sh
# or: make docs-serve

The script creates .venv-docs and installs the pinned dependencies automatically on first use.


Overview

This repository is a long-term, practical workspace for studying and demonstrating cloud-native engineering skills. It provides executable exercises, Kubernetes manifests, Bash scripts, Go examples, troubleshooting scenarios, and documentation covering a wide range of cloud-native topics.

The repository is structured to support personal study and to serve as a public technical portfolio. It is designed to grow gradually and remain lightweight, with each lab being small, focused, and reproducible.


Objectives

  • Prepare for the five certifications required for Kubestronaut recognition
  • Build foundation tracks for KCNA and KCSA
  • Prepare for the Certified Kubernetes Application Developer (CKAD) exam
  • Prepare later for CKA (Certified Kubernetes Administrator) and CKS (Certified Kubernetes Security Specialist)
  • Practise Kubernetes application development and administration
  • Build Custom Resource Definitions (CRDs)
  • Develop controllers and Operators
  • Improve Linux and networking knowledge
  • Experiment with containers and container runtimes
  • Explore observability (Prometheus, Grafana, OpenTelemetry)
  • Explore GitOps (Argo CD, Flux)
  • Practise cloud-native security
  • Develop Kubernetes-related tools with Go
  • Document troubleshooting scenarios and lessons learned

Repository Structure

cloud-native-lab/
├── certifications/      # Kubestronaut certification preparation
├── kubernetes-labs/     # General Kubernetes exercises
├── go-labs/             # Go code for Kubernetes tooling
├── linux-labs/          # Linux administration exercises
├── container-labs/      # Container and runtime exercises
├── observability-labs/  # Prometheus, Grafana, OpenTelemetry
├── gitops-labs/         # GitOps with Argo CD and Flux
├── security-labs/       # Security practices and tools
├── networking-labs/     # Networking concepts and tools
├── cncf-labs/           # CNCF project explorations
├── automation/          # Scripts, Makefiles, GitHub Actions
├── docs/                # Cheatsheets, templates, notes
├── examples/            # Sample applications
├── scripts/             # Utility scripts
└── tests/               # Manifest and integration tests

Current Focus

Active track: CKAD (Certified Kubernetes Application Developer)

- [x] Repository foundation
- [ ] KCNA preparation
- [ ] CKAD application design and build
- [ ] CKAD application deployment
- [ ] CKAD observability and maintenance
- [ ] CKAD configuration and security
- [ ] CKAD services and networking
- [ ] CKAD mock exams
- [ ] CKA preparation
- [ ] KCSA preparation
- [ ] CKS preparation
- [ ] Kubernetes Operators with Go

Certification Tracks

Track Status Directory
KCNA Foundation certifications/kcna/
CKAD In Progress certifications/ckad/
CKA Planned certifications/cka/
KCSA Foundation certifications/kcsa/
CKS Planned certifications/cks/

Certification requirements evolve. Confirm the current path in the official CNCF Kubestronaut FAQ.


Technologies

Area Tools and Technologies
Kubernetes kubectl, Kind, Minikube, k3d, Helm, Kustomize
Containers Docker, containerd, BuildKit, Podman
Go client-go, controller-runtime, cobra, Prometheus client
Observability Prometheus, Grafana, OpenTelemetry, Loki
GitOps Argo CD, Flux
Security Falco, OPA/Gatekeeper, Kyverno, Trivy, Cosign
Networking CoreDNS, Cilium, Calico, Istio, Gateway API
CNCF Projects Various graduated and incubating projects
Automation Bash, Make, GitHub Actions

Prerequisites

The following tools are required to run the labs locally.

Core (required):

Optional (required for specific labs):

Run the prerequisite check:

make check
# or
bash scripts/check-prerequisites.sh

Getting Started

# 1. Clone the repository
git clone https://github.com/ferreiraad/cloud-native-lab.git
cd cloud-native-lab

# 2. Check prerequisites
make check

# 3. Create a local Kind cluster
make cluster-create

# 4. Explore a lab (example)
cd certifications/ckad/application-design-and-build/multi-container-pod
cat README.md

Running the Labs

Each lab directory contains:

  • README.md — objective, instructions and learning outcomes
  • namespace.yaml — namespace for the exercise
  • resources.yaml (or individual YAML files) — Kubernetes manifests
  • validate.sh — validation commands
  • cleanup.sh — cleanup commands

Run a lab:

kubectl apply -f namespace.yaml
kubectl apply -f resources.yaml
bash validate.sh

Validation

Validate all Kubernetes manifests:

make validate

Run linters:

make lint

Cleanup

Each lab has a cleanup.sh script. To clean up a specific lab:

bash cleanup.sh

To delete the Kind cluster:

make cluster-delete

Learning Method

  1. Read the lab README.md before attempting any commands
  2. Try to complete the exercise without looking at the answer
  3. Use kubectl explain and kubectl --help to discover options
  4. Run the validation script to confirm correct behaviour
  5. Run the cleanup script before moving to the next lab
  6. Review the key commands section and note anything new
  7. For CKAD preparation, practice the imperative command versions as well

Roadmap

See roadmap.md for the full development plan.


Security

See SECURITY.md for responsible disclosure guidelines and security practices followed in this repository.


Contributing

See .github/CONTRIBUTING.md and CODE_OF_CONDUCT.md.


Disclaimer

This repository is for learning purposes only. The exercises, scripts and configurations are intended to run against local development clusters (Kind, Minikube, k3d) and should not be applied to production environments without careful review and adaptation.

No certification vendor endorses this repository. All trademarks belong to their respective owners.


Licence

Apache License 2.0

About

Hands-on cloud-native labs for Kubernetes, Linux, containers, Go, observability, GitOps, security, CNCF technologies, and CKAD/CKA certification preparation.

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages