Saturday, December 27, 2025

ARGO CD Homelab YAML

  

 

I am back!  In past days/ months I do not post. Reason why this happend, I played with KubeSpray installation and Longhorn. I try to automate some process, but self learnining has costs in time and errors. 

To summary my story, I select K3s Kubernetes with Longhorn for Storage for my Homelab.

 

 

I have bash script to install Argo Cd in my Homelab.

I used advanced instalation with helm. To have in the future be able to easer to update Helm chart. 

https://github.com/andsidor/Homelab-argocd/tree/master/argo-cd

As always to run bash it has to have execution rights.

I apply chmod and executed file.

chmod +x ./argo-install-advanced.sh && ./argo-install-advanced.sh 



I use Cloudflare tunnel to access to server.

https://argo.andrzejsidor.online

For the record I protect my Cloudflare tunnel from unauthorised access.

 

I added Argo CD server service list to protect my apps. 

 

When You try open link for my Argo CD server, You will see this page. It works with my email only. :)

 

 

In Lens I can see all pods in argocd namespaces are running.

 

 

In CLI CRD's with name 'argo' are running.

 

 

To use Gitops philosophy, objects it has to be declared in file. Ephemeral definition is no go. Git repository is source of truth.

I created Application CRD for Argo CD.

---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: nginx-demo
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/andsidor/Homelab-argocd
    targetRevision: master
    path: apps/app1/overlays
    kustomize:
      namePrefix: "demo-"
  destination:
    server: https://kubernetes.default.svc
    namespace: apps
  syncPolicy:
    automated:
      prune: true
      selfHeal: true 

 

kubectl apply -f ./file.yaml

After synchronization of Argo CD Application in present.


 

 

After clicking tile with nginx-demo, more details are present of each object in tree mode

 

 

In Pods mode is visible where each pod on which node is running.


 

In network mode we can see assigned IP for this service. It was possbile because in my homelab I have installed Ingress Traefik Controller. 

 

 

New apps are comming... in my homelab.

 

 

K8s cluster - bash install

     In my homelab, I testes another method of installation of Kubernetes. Average time of installation of Kubernetes via Ansible was 15 min...