# mmumshad/kubernetes-the-hard-way architecture

> Architecture diagram of the GitHub repository mmumshad/kubernetes-the-hard-way, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mmumshad/kubernetes-the-hard-way
- Repository: https://github.com/mmumshad/kubernetes-the-hard-way

## Overview

Kubernetes The Hard Way is a learning tutorial for manually building a local, highly available Kubernetes cluster. Its principal workflow takes the learner from hypervisor setup through cluster bootstrap, worker configuration, networking, and validation. The numbered guide chapters document that progression; separate platform directories provide VirtualBox/Vagrant or Apple Silicon setup, and tools and deployment manifests support selected lab tasks. The graph reflects the README and repository paths; source excerpts are limited, so implementation-level calls between tutorial steps are not asserted.

Main entry points: [`docs/15-dns-addon.md`](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/15-dns-addon.md) (DNS add-on), [`VirtualBox/docs/01-prerequisites.md`](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/VirtualBox/docs/01-prerequisites.md) (VirtualBox setup), [`apple-silicon/docs/01-prerequisites.md`](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/apple-silicon/docs/01-prerequisites.md) (Apple Silicon setup), [`vagrant/Vagrantfile`](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/vagrant/Vagrantfile) (Vagrant environment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Local platforms"]
  node_virtualbox["VirtualBox setup"]
  node_apple["Apple Silicon setup"]
  node_vagrant["Vagrant environment"]
  node_appledeploy["Multipass deployment"]
  node_compute["Compute resources"]
end

subgraph group_bootstrap["Cluster bootstrap"]
  node_clienttools["Client tools<br/>[03-client-tools.md]"]
  node_ca["Certificate authority"]
  node_kubeconfig["Kubernetes configuration"]
  node_encryption["Data encryption"]
  node_etcd["etcd bootstrap"]
  node_controllers["Control plane bootstrap"]
  node_cri["Worker runtime"]
  node_workers["Worker bootstrap"]
  node_tls["TLS worker bootstrap"]
end

subgraph group_operations["Cluster operations"]
  node_kubectl["kubectl access"]
  node_network["Pod networking"]
  node_kubelet["API to kubelet"]
  node_dns["DNS add-on<br/>[15-dns-addon.md]"]
  node_coredns["CoreDNS manifest<br/>[coredns.yaml]"]
  node_smoke["Smoke test<br/>[16-smoke-test.md]"]
  node_e2e["End-to-end tests<br/>[17-e2e-tests.md]"]
end

subgraph group_support["Lab support"]
  node_certcheck["Certificate checker"]
  node_approve["Approve CSR tool<br/>[approve-csr.sh]"]
  node_certverify["Certificate verification<br/>[cert_verify.sh]"]
end

node_learner(("Learner"))

node_learner -->|"follows option"| node_virtualbox
node_learner -.->|"follows option"| node_apple
node_virtualbox -->|"sets up"| node_vagrant
node_apple -.->|"sets up"| node_appledeploy
node_vagrant -->|"provides VMs"| node_compute
node_appledeploy -.->|"provides VMs"| node_compute
node_learner -->|"follows guide"| node_compute
node_compute -->|"continues to"| node_clienttools
node_clienttools -->|"continues to"| node_ca
node_ca -->|"continues to"| node_kubeconfig
node_kubeconfig -->|"continues to"| node_encryption
node_encryption -->|"continues to"| node_etcd
node_etcd -->|"continues to"| node_controllers
node_controllers -->|"continues to"| node_cri
node_cri -->|"continues to"| node_workers
node_workers -->|"continues to"| node_tls
node_tls -->|"continues to"| node_kubectl
node_kubectl -->|"continues to"| node_network
node_network -->|"continues to"| node_kubelet
node_kubelet -->|"continues to"| node_dns
node_dns -->|"uses manifest"| node_coredns
node_dns -->|"continues to"| node_smoke
node_smoke -->|"continues to"| node_e2e
node_learner -->|"checks certificates"| node_certcheck
node_learner -->|"uses for CSRs"| node_approve
node_learner -.->|"verifies certificates"| node_certverify

click node_virtualbox "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/VirtualBox/docs/01-prerequisites.md"
click node_apple "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/apple-silicon/docs/01-prerequisites.md"
click node_vagrant "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/vagrant/Vagrantfile"
click node_appledeploy "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/apple-silicon/deploy-virtual-machines.sh"
click node_clienttools "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/03-client-tools.md"
click node_ca "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/04-certificate-authority.md"
click node_kubeconfig "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/05-kubernetes-configuration-files.md"
click node_encryption "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/06-data-encryption-keys.md"
click node_etcd "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/07-bootstrapping-etcd.md"
click node_controllers "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/08-bootstrapping-kubernetes-controllers.md"
click node_cri "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/09-install-cri-workers.md"
click node_workers "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/10-bootstrapping-kubernetes-workers.md"
click node_tls "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/11-tls-bootstrapping-kubernetes-workers.md"
click node_kubectl "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/12-configuring-kubectl.md"
click node_network "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/13-configure-pod-networking.md"
click node_kubelet "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/14-kube-apiserver-to-kubelet.md"
click node_dns "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/15-dns-addon.md"
click node_coredns "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/deployments/coredns.yaml"
click node_smoke "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/16-smoke-test.md"
click node_e2e "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/17-e2e-tests.md"
click node_certcheck "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/tools/kubernetes-certs-checker.xlsx"
click node_approve "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/tools/approve-csr.sh"
click node_certverify "https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/apple-silicon/scripts/cert_verify.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_virtualbox,node_apple,node_vagrant,node_appledeploy,node_compute toneBlue
class node_clienttools,node_ca,node_kubeconfig,node_encryption,node_etcd,node_controllers,node_cri,node_workers,node_tls toneAmber
class node_kubectl,node_network,node_kubelet,node_dns,node_coredns,node_smoke,node_e2e toneMint
class node_certcheck,node_approve,node_certverify toneRose
class node_learner toneIndigo
```

## Components

### Local platforms

- [VirtualBox setup](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/VirtualBox/docs/01-prerequisites.md): `VirtualBox/docs/01-prerequisites.md`
- [Apple Silicon setup](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/apple-silicon/docs/01-prerequisites.md): `apple-silicon/docs/01-prerequisites.md`
- [Vagrant environment](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/vagrant/Vagrantfile): `vagrant/Vagrantfile`
- [Multipass deployment](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/apple-silicon/deploy-virtual-machines.sh): `apple-silicon/deploy-virtual-machines.sh`
- **Compute resources**

### Cluster bootstrap

- [Client tools](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/03-client-tools.md): `docs/03-client-tools.md`
- [Certificate authority](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/04-certificate-authority.md): `docs/04-certificate-authority.md`
- [Kubernetes configuration](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/05-kubernetes-configuration-files.md): `docs/05-kubernetes-configuration-files.md`
- [Data encryption](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/06-data-encryption-keys.md): `docs/06-data-encryption-keys.md`
- [etcd bootstrap](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/07-bootstrapping-etcd.md): `docs/07-bootstrapping-etcd.md`
- [Control plane bootstrap](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/08-bootstrapping-kubernetes-controllers.md): `docs/08-bootstrapping-kubernetes-controllers.md`
- [Worker runtime](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/09-install-cri-workers.md): `docs/09-install-cri-workers.md`
- [Worker bootstrap](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/10-bootstrapping-kubernetes-workers.md): `docs/10-bootstrapping-kubernetes-workers.md`
- [TLS worker bootstrap](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/11-tls-bootstrapping-kubernetes-workers.md): `docs/11-tls-bootstrapping-kubernetes-workers.md`

### Cluster operations

- [kubectl access](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/12-configuring-kubectl.md): `docs/12-configuring-kubectl.md`
- [Pod networking](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/13-configure-pod-networking.md): `docs/13-configure-pod-networking.md`
- [API to kubelet](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/14-kube-apiserver-to-kubelet.md): `docs/14-kube-apiserver-to-kubelet.md`
- [DNS add-on](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/15-dns-addon.md): `docs/15-dns-addon.md`
- [CoreDNS manifest](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/deployments/coredns.yaml): `deployments/coredns.yaml`
- [Smoke test](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/16-smoke-test.md): `docs/16-smoke-test.md`
- [End-to-end tests](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/docs/17-e2e-tests.md): `docs/17-e2e-tests.md`

### Lab support

- [Certificate checker](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/tools/kubernetes-certs-checker.xlsx): `tools/kubernetes-certs-checker.xlsx`
- [Approve CSR tool](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/tools/approve-csr.sh): `tools/approve-csr.sh`
- [Certificate verification](https://github.com/mmumshad/kubernetes-the-hard-way/blob/master/apple-silicon/scripts/cert_verify.sh): `apple-silicon/scripts/cert_verify.sh`

### Other components

- **Learner**

## Connections

- Learner → VirtualBox setup: follows option
- Learner → Apple Silicon setup: follows option
- VirtualBox setup → Vagrant environment: sets up
- Apple Silicon setup → Multipass deployment: sets up
- Vagrant environment → Compute resources: provides VMs
- Multipass deployment → Compute resources: provides VMs
- Learner → Compute resources: follows guide
- Compute resources → Client tools: continues to
- Client tools → Certificate authority: continues to
- Certificate authority → Kubernetes configuration: continues to
- Kubernetes configuration → Data encryption: continues to
- Data encryption → etcd bootstrap: continues to
- etcd bootstrap → Control plane bootstrap: continues to
- Control plane bootstrap → Worker runtime: continues to
- Worker runtime → Worker bootstrap: continues to
- Worker bootstrap → TLS worker bootstrap: continues to
- TLS worker bootstrap → kubectl access: continues to
- kubectl access → Pod networking: continues to
- Pod networking → API to kubelet: continues to
- API to kubelet → DNS add-on: continues to
- DNS add-on → CoreDNS manifest: uses manifest
- DNS add-on → Smoke test: continues to
- Smoke test → End-to-end tests: continues to
- Learner → Certificate checker: checks certificates
- Learner → Approve CSR tool: uses for CSRs
- Learner → Certificate verification: verifies certificates
