- Create
argocd-appsrepository indevopsgroup of GitLab. - Add your public ssh key to the GitLab account.
- Clone the repository to your local machine.
- Create and add runner registration token from gitlab to
argocd-apps/values/vmkube-2/gitlab-runner.yaml - Copy and push content of
argocd-appsfolder (valuesandyamlsfolders) to gitlabargocd-appsrepo. - Then run:
export KUBECONFIG=~/.kube/vmkube
kubectl config use-context admin@vmkube-1
kubectl apply -f argocd-apps/yamls/vmkube-1/root-app.yamlObserve sync in ArgoCD UI.
- DNS settings.
Check EXTERNAL-IP of the coredns (external-dns) service:
export KUBECONFIG=~/.kube/vmkube
kubectl config use-context admin@vmkube-1
kubectl get svc -n external-dns coredns
kubectl config use-context admin@vmkube-2
kubectl get svc -n external-dns corednsinstall systemd-resolved:
sudo apt install -y systemd-resolvedPlace a script /etc/NetworkManager/dispatcher.d/50-set-vmkube-dns with content:
#!/bin/bash
if [ "$1" = "vmkube-br0" ] && [ "$2" = "up" ]; then
resolvectl dns "$1" <first dns ip> <second dns ip>
resolvectl domain "$1" "~homelab.internal"
fiMake it executable and restart NetworkManager:
sudo chmod 755 /etc/NetworkManager/dispatcher.d/50-set-vmkube-dns
sudo systemctl restart NetworkManagerCheck if DNS resolution works:
nslookup postgres.vmkube-1.homelab.internal
nslookup postgres.vmkube-2.homelab.internal
export KUBECONFIG=~/.kube/vmkube
kubectl config use-context admin@vmkube-1
kubectl run busybox --image=mirror.gcr.io/library/busybox --rm --attach --restart=Never -- nslookup postgres.vmkube-2.homelab.internal
kubectl config use-context admin@vmkube-2
kubectl run busybox --image=mirror.gcr.io/library/busybox --rm --attach --restart=Never -- nslookup postgres.vmkube-1.homelab.internalIt should be resolved to ingress LoadBalancer IP.
- Unseal OpenBao Use this guide
kubectl -n openbao exec -it vmkube-1-openbao-0 -- bao operator init
kubectl -n openbao exec -it vmkube-1-openbao-0 -- bao operator unseal <Unseal Key 1>
kubectl -n openbao exec -it vmkube-1-openbao-0 -- bao operator unseal <Unseal Key 2>
kubectl -n openbao exec -it vmkube-1-openbao-0 -- bao operator unseal <Unseal Key 3>- Login to ArgoCD, Grafana, OpenBao etc.
# get grafana password
kubectl get secret -n victoria-metrics-k8s-stack vmkube-1-victoria-metrics-k8s-stack-grafana -o jsonpath='{.data.admin-password}' | base64 -d
# if password does not work, just reset it
kubectl exec -n victoria-metrics-k8s-stack -it $(kubectl get pods -n victoria-metrics-k8s-stack -l "app.kubernetes.io/name=grafana" -o jsonpath="{.items[0].metadata.name}") -- grafana cli admin reset-admin-password 123456Step completed!