Follow this guide to build the initial cluster https://github.com/jaypyles/k3s-kvm
Github Actions pipeline deploys Docker images to Dockerhub and Helm charts to https://github.com/jaypyles/helm-charts
Creating an NFS mount for a K3S/KVM Cluster
Secrets management using Doppler:
https://docs.doppler.com/docs/kubernetes-operator
Continuous Deployment using ArgoCD:
helm repo add argo-cd <https://argoproj.github.io/argo-helm>
helm dep update charts/argo-cd/
helm install argo-cd charts/argo-cd/
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
kubectl get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
name@server:~$ kubectl get svc -n argocd
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-applicationset-controller ClusterIP 10.43.175.49 <none> 7000/TCP,8080/TCP 2d12h
argocd-dex-server ClusterIP 10.43.247.40 <none> 5556/TCP,5557/TCP,5558/TCP 2d12h
argocd-metrics ClusterIP 10.43.140.14 <none> 8082/TCP 2d12h
argocd-notifications-controller-metrics ClusterIP 10.43.89.8 <none> 9001/TCP 2d12h
argocd-redis ClusterIP 10.43.201.107 <none> 6379/TCP 2d12h
argocd-repo-server ClusterIP 10.43.94.16 <none> 8081/TCP,8084/TCP 2d12h
argocd-server NodePort 10.43.53.113 <none> 80:31706/TCP,443:30123/TCP 2d12h
argocd-server-metrics ClusterIP 10.43.232.109 <none> 8083/TCP 2d12h
Applying the Application
argo folderkubectl apply -f argo/dev-site.yaml