Build log – Migratie Hard Way → kubeadm
Bij handmatige uitrol van de migratie kun je per fase hier noteren wat je gedaan hebt en wat de output was. Zo is de migratie de volgende keer (of door iemand anders) te volgen of te herhalen.
Migratiedoc: 30-migratie-kubeadm.md
Ansible-optie: Zie sectie "Automatisering met Ansible" in die doc.
Context van deze run
| Veld | Ingevuld |
|---|---|
| Datum start | … |
| Cluster vóór migratie | Hard Way (systemd) |
| Nodes | cp-01, node-01, node-02 |
| Uitgevoerd door | … |
Fase A – Huidige staat vastleggen
Datum: …
Commando's (<beheer-vm>):
kubectl get ns
kubectl get pods -A -o wide
kubectl get secrets -A | grep -E 'cert-manager|gateway'
kubectl get svc -n gateway-system
Notities / EXTERNAL-IP genoteerd: …
Fase B – Hard Way-cluster stoppen
Datum: …
Op cp-01:
sudo systemctl stop kube-apiserver kube-controller-manager kube-scheduler etcd kubelet
sudo systemctl disable kube-apiserver kube-controller-manager kube-scheduler etcd kubelet
Op node-01, node-02:
sudo systemctl stop kubelet
sudo systemctl disable kubelet
Optioneel schoonmaken uitgevoerd? ja / nee
Notities: …
Fase C – kubeadm, kubelet, kubectl installeren
Datum: …
Methode: handmatig / Ansible (ansible-playbook playbooks/kubeadm-install-packages.yml)
Handmatig (per node): welke repo (apt/dnf), welke versie: …
Output (eerste node): …
...
Fase D – kubeadm init (cp-01)
Datum: …
Commando:
sudo kubeadm init \
--control-plane-endpoint 192.0.2.201:6443 \
--pod-network-cidr 10.200.0.0/16 \
--service-cidr 10.32.0.0/24
Join-command genoteerd (voor Fase E): …
kubeadm join 192.0.2.201:6443 --token ... --discovery-token-ca-cert-hash sha256:...
Kubeconfig op cp-01:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Notities: …
Fase E – kubeadm join (workers)
Datum: …
Methode: handmatig / Ansible (ansible-playbook playbooks/kubeadm-bootstrap.yml had Fase D+E gedaan)
node-01 join output: … node-02 join output: …
Verificatie:
kubectl get nodes
Output: …
Fase F – Cilium
Datum: …
Commando's (repo root, <beheer-vm> of cp-01):
helm repo add cilium https://helm.cilium.io/
helm repo update
helm upgrade --install cilium cilium/cilium --namespace kube-system -f cluster-config/infra/cilium/values.yaml
kubectl get pods -n kube-system -l k8s-app=cilium -o wide
kubectl get nodes
Notities: …
Fase G – Gateway API CRDs
Datum: …
Commando:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml
kubectl get crd | grep gateway
Notities: …
Fase H – MetalLB
Datum: …
Commando's:
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml
# eventueel: webhooks verwijderen bij timeout
kubectl apply -f kubernetes/infrastructure/metallb/ip-pool.yaml
Webhook-timeout? ja / nee
Notities: …
Fase I – cert-manager + ClusterIssuer + Secret
Datum: …
Helm + ClusterIssuer:
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm upgrade --install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace -f kubernetes/infrastructure/cert-manager/values.yaml
kubectl create secret generic cloudflare-api-token --from-literal=api-token=... --namespace cert-manager
kubectl apply -f kubernetes/infrastructure/cert-manager/cluster-issuer-prod.yaml
Secret handmatig aangemaakt (niet in Git).
Notities: …
Fase J – Gateway-stack
Datum: …
Commando's:
kubectl apply -f kubernetes/infrastructure/gateway/namespace.yaml
kubectl apply -f kubernetes/infrastructure/gateway/certificate.yaml
# wacht: kubectl get certificate -n gateway-system -w
kubectl apply -f kubernetes/infrastructure/gateway/gateway.yaml
kubectl get svc -n gateway-system
# EXTERNAL-IP: …
kubectl apply -f kubernetes/infrastructure/gateway/gateway-test-app.yaml
kubectl apply -f kubernetes/infrastructure/gateway/httproute-test.yaml
EXTERNAL-IP genoteerd: …
DNS A-record / port-forward gecontroleerd: …
Fase K – Kubeconfig op <beheer-vm>
Datum: …
Hoe: scp admin.conf van cp-01 naar <beheer-vm> ~/.kube/config
Verificatie: kubectl get nodes vanaf <beheer-vm>: …
Fase L – Verificatie
Datum: …
Nodes: kubectl get nodes → …
HTTPS-test: curl -v https://test.westerweel.work → …
Migratie geslaagd: ja / nee
Overige notities: …