Kubernetes demonstration
| cluster-config | ||
| LICENSE | ||
| README.md | ||
Kubernetes Local Cluster Demonstration
Kubernetes demonstration on your local machine
Prerequisites
- Make sure to have docker or a OCI compatibile container engine installed
- Make sure the docker/oci engine is running
- Install
kubectlfor interacting with the kube api: - Install
kind- mac/brew:
brew install kind - mac/macports:
sudo port selfupdate && sudo port install kind - win/choco:
choco install kind - win/winget:
winget install Kubernetes.kind - linux: tbd
- mac/brew:
- Have at least 8GB RAM and 20GB disk
Create cluster
kind create cluster --config cluster-config/config.yaml(1 control plane, 3 nodes)- Once complete, look at what is running in all namespaces:
kubectl get pods -A
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-76f75df574-ddznd 1/1 Running 0 7m16s
kube-system coredns-76f75df574-ftv2c 1/1 Running 0 7m16s
kube-system etcd-demo-control-plane 1/1 Running 0 7m31s
kube-system kindnet-jj8bv 1/1 Running 0 7m16s
kube-system kube-apiserver-demo-control-plane 1/1 Running 0 7m31s
kube-system kube-controller-manager-demo-control-plane 1/1 Running 0 7m31s
kube-system kube-proxy-2wr8l 1/1 Running 0 7m16s
kube-system kube-scheduler-demo-control-plane 1/1 Running 0 7m31s
local-path-storage local-path-provisioner-7577fdbbfb-jj2b7 1/1 Running 0 7m16s
You will want to wait for all pods to become ready (showing 1/1 in the READY field) and once complete you will have a cluster running on your computer.
Run services
Ingress Controller (nginx)
Ingress controllers manage incoming web traffic (usually HTTP/HTTPS)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
Wait for it to become available:
kubectl wait --namespace ingress-nginx \
--for=condition=ready pod \
--selector=app.kubernetes.io/component=controller \
--timeout=300s
Usually you'll want to next install a load balancer, but for a single node cluster this is not required.
Observability (grafana, prometheus)
tbd - grafana, prometheus, alertmanager, thanos, servicemonitor, podmonitor
Vault (secrets)
Forgejo (with redis and postgresql)
tbd - https://artifacthub.io/packages/helm/forgejo-helm/forgejo#single-pod-configurations
Sublinks in k8s
tbd
Troubleshooting
tbd
Cleanup
kind delete cluster