# hamedsafikhani/k8s-learning architecture

> Architecture diagram of the GitHub repository hamedsafikhani/k8s-learning, 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/hamedsafikhani/k8s-learning
- Repository: https://github.com/hamedsafikhani/k8s-learning

## Overview

This repository is a hands-on Kubernetes learning lab, not an application with its own runtime. Its principal workflow is for a learner to use kind to create a cluster, then apply manifests with kubectl and observe Kubernetes resources. The graph covers the implemented learning stages evident in the tree and README. Source excerpts were unavailable, so links between individual manifests are not inferred; README topics without corresponding files are not represented as implemented subsystems.

Main entry points: [`00-cluster/kind-config.yaml`](https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/kind-config.yaml) (kind configuration), [`00-cluster/kind-config-ingress.yaml`](https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/kind-config-ingress.yaml) (Ingress kind config), [`00-cluster/ingress-nginx.yaml`](https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/ingress-nginx.yaml) (Ingress controller manifest), [`02-pods/pod-basic.yaml`](https://github.com/hamedsafikhani/k8s-learning/blob/main/02-pods/pod-basic.yaml) (Basic Pod)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cluster["Cluster setup"]
  node_kind_config["kind configuration<br/>[kind-config.yaml]"]
  node_kind_ingress_config["Ingress kind config"]
  node_ingress["Ingress controller manifest<br/>[ingress-nginx.yaml]"]
end

subgraph group_workloads["Workloads"]
  node_pod_basic["Basic Pod<br/>[pod-basic.yaml]"]
  node_pod_multi["Multi-container Pod"]
  node_pod_exercises["Pod failure exercises"]
  node_deployment["Deployment<br/>[deployment.yaml]"]
  node_deployment_recreate["Recreate Deployment"]
  node_replicaset["ReplicaSet<br/>[replicaset.yaml]"]
  node_deployment_exercises["Deployment exercises"]
end

subgraph group_networking["Networking and config"]
  node_echo_deployment["Echo workload"]
  node_services["Service manifests"]
  node_configmap["ConfigMap<br/>[configmap.yaml]"]
  node_full_config["Full configuration example<br/>[full-example.yaml]"]
end

subgraph group_state["Storage and resources"]
  node_pvc["PVC demo<br/>[pvc-demo.yaml]"]
  node_resource_deployment["Resource and probe example"]
end

node_learner(("Learner"))
node_kind["kind"]
node_kubectl["kubectl"]
node_cluster_runtime["Kubernetes cluster"]

node_learner -->|"creates cluster with"| node_kind
node_kind_config -->|"configures"| node_kind
node_kind_ingress_config -->|"configures"| node_kind
node_kind -->|"creates"| node_cluster_runtime
node_learner -->|"applies manifests with"| node_kubectl
node_pod_basic -->|"is read by"| node_kubectl
node_pod_multi -->|"is read by"| node_kubectl
node_pod_exercises -->|"is read by"| node_kubectl
node_deployment -->|"is read by"| node_kubectl
node_deployment_recreate -->|"is read by"| node_kubectl
node_replicaset -->|"is read by"| node_kubectl
node_deployment_exercises -->|"is read by"| node_kubectl
node_ingress -->|"is read by"| node_kubectl
node_echo_deployment -->|"is read by"| node_kubectl
node_services -->|"is read by"| node_kubectl
node_configmap -->|"is read by"| node_kubectl
node_full_config -->|"is read by"| node_kubectl
node_pvc -->|"is read by"| node_kubectl
node_resource_deployment -->|"is read by"| node_kubectl
node_kubectl -->|"creates resources in"| node_cluster_runtime

click node_kind_config "https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/kind-config.yaml"
click node_kind_ingress_config "https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/kind-config-ingress.yaml"
click node_ingress "https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/ingress-nginx.yaml"
click node_pod_basic "https://github.com/hamedsafikhani/k8s-learning/blob/main/02-pods/pod-basic.yaml"
click node_pod_multi "https://github.com/hamedsafikhani/k8s-learning/blob/main/02-pods/pod-multi-container.yaml"
click node_pod_exercises "https://github.com/hamedsafikhani/k8s-learning/tree/main/02-pods/exercises"
click node_deployment "https://github.com/hamedsafikhani/k8s-learning/blob/main/03-deployments/deployment.yaml"
click node_deployment_recreate "https://github.com/hamedsafikhani/k8s-learning/blob/main/03-deployments/deployment-recreate.yaml"
click node_replicaset "https://github.com/hamedsafikhani/k8s-learning/blob/main/03-deployments/replicaset.yaml"
click node_deployment_exercises "https://github.com/hamedsafikhani/k8s-learning/tree/main/03-deployments/exercises"
click node_echo_deployment "https://github.com/hamedsafikhani/k8s-learning/blob/main/04-services/echo-deployment.yaml"
click node_services "https://github.com/hamedsafikhani/k8s-learning/tree/main/04-services"
click node_configmap "https://github.com/hamedsafikhani/k8s-learning/blob/main/05-config/configmap.yaml"
click node_full_config "https://github.com/hamedsafikhani/k8s-learning/blob/main/05-config/full-example.yaml"
click node_pvc "https://github.com/hamedsafikhani/k8s-learning/blob/main/06-storage/pvc-demo.yaml"
click node_resource_deployment "https://github.com/hamedsafikhani/k8s-learning/blob/main/07-resources/deployment-full.yaml"

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_kind_config,node_kind_ingress_config,node_ingress toneBlue
class node_pod_basic,node_pod_multi,node_pod_exercises,node_deployment,node_deployment_recreate,node_replicaset,node_deployment_exercises toneAmber
class node_echo_deployment,node_services,node_configmap,node_full_config toneMint
class node_pvc,node_resource_deployment toneRose
class node_learner,node_kind,node_kubectl,node_cluster_runtime toneIndigo
```

## Components

### Cluster setup

- [kind configuration](https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/kind-config.yaml): `00-cluster/kind-config.yaml`
- [Ingress kind config](https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/kind-config-ingress.yaml): `00-cluster/kind-config-ingress.yaml`
- [Ingress controller manifest](https://github.com/hamedsafikhani/k8s-learning/blob/main/00-cluster/ingress-nginx.yaml): `00-cluster/ingress-nginx.yaml`

### Workloads

- [Basic Pod](https://github.com/hamedsafikhani/k8s-learning/blob/main/02-pods/pod-basic.yaml): `02-pods/pod-basic.yaml`
- [Multi-container Pod](https://github.com/hamedsafikhani/k8s-learning/blob/main/02-pods/pod-multi-container.yaml): `02-pods/pod-multi-container.yaml`
- [Pod failure exercises](https://github.com/hamedsafikhani/k8s-learning/tree/main/02-pods/exercises): `02-pods/exercises`
- [Deployment](https://github.com/hamedsafikhani/k8s-learning/blob/main/03-deployments/deployment.yaml): `03-deployments/deployment.yaml`
- [Recreate Deployment](https://github.com/hamedsafikhani/k8s-learning/blob/main/03-deployments/deployment-recreate.yaml): `03-deployments/deployment-recreate.yaml`
- [ReplicaSet](https://github.com/hamedsafikhani/k8s-learning/blob/main/03-deployments/replicaset.yaml): `03-deployments/replicaset.yaml`
- [Deployment exercises](https://github.com/hamedsafikhani/k8s-learning/tree/main/03-deployments/exercises): `03-deployments/exercises`

### Networking and config

- [Echo workload](https://github.com/hamedsafikhani/k8s-learning/blob/main/04-services/echo-deployment.yaml): `04-services/echo-deployment.yaml`
- [Service manifests](https://github.com/hamedsafikhani/k8s-learning/tree/main/04-services): `04-services`
- [ConfigMap](https://github.com/hamedsafikhani/k8s-learning/blob/main/05-config/configmap.yaml): `05-config/configmap.yaml`
- [Full configuration example](https://github.com/hamedsafikhani/k8s-learning/blob/main/05-config/full-example.yaml): `05-config/full-example.yaml`

### Storage and resources

- [PVC demo](https://github.com/hamedsafikhani/k8s-learning/blob/main/06-storage/pvc-demo.yaml): `06-storage/pvc-demo.yaml`
- [Resource and probe example](https://github.com/hamedsafikhani/k8s-learning/blob/main/07-resources/deployment-full.yaml): `07-resources/deployment-full.yaml`

### Other components

- **Learner**
- **kind**
- **kubectl**
- **Kubernetes cluster**

## Connections

- Learner → kind: creates cluster with
- kind configuration → kind: configures
- Ingress kind config → kind: configures
- kind → Kubernetes cluster: creates
- Learner → kubectl: applies manifests with
- Basic Pod → kubectl: is read by
- Multi-container Pod → kubectl: is read by
- Pod failure exercises → kubectl: is read by
- Deployment → kubectl: is read by
- Recreate Deployment → kubectl: is read by
- ReplicaSet → kubectl: is read by
- Deployment exercises → kubectl: is read by
- Ingress controller manifest → kubectl: is read by
- Echo workload → kubectl: is read by
- Service manifests → kubectl: is read by
- ConfigMap → kubectl: is read by
- Full configuration example → kubectl: is read by
- PVC demo → kubectl: is read by
- Resource and probe example → kubectl: is read by
- kubectl → Kubernetes cluster: creates resources in
