Installera Argo CD
Håll det som körs i fas med det som står i Git, med klustret uppsatt först och en ärlig varning om att det här är samlingens svåraste verktyg.
Senast granskad:
Vad Argo CD är
Ett program som ser till att det som körs är samma sak som det som står i din kodkatalog. Du ändrar en fil i Git, och Argo CD upptäcker ändringen och genomför den. Ändrar någon i stället direkt i systemet ser Argo CD att verkligheten har glidit isär från filen, och säger till.
Idén kallas GitOps och är enklare än namnet. Sanningen står i Git. Allt annat är en kopia som ska hållas i fas.
Var ärlig om nivån här. Det här är det svåraste verktyget i samlingen, för Argo CD kräver Kubernetes, och Kubernetes är ett eget ämne. Vill du förstå hur riktiga driftsmiljöer fungerar är det här rätt väg. Vill du få en webbshop i luften före jul finns kortare vägar, och Dokku är en av dem.
Du behöver ett Kubernetes-kluster först
Argo CD körs inuti Kubernetes och kan inte installeras utan. Du behöver alltså två saker innan du börjar: ett kluster, och kommandoverktyget kubectl som pratar med det.
Enklaste klustret för att öva är Minikube, som startar ett litet kluster på din egen dator. Det kräver Docker, samma som i Installera Docker.
På Windows betyder Docker Desktop att du också får WSL2, alltså Windows inbyggda Linux. Docker Desktop installerar det normalt själv, men blir du tillfrågad ska du svara ja. Utan WSL2 startar inget kluster.
Hämta Minikube från minikube.sigs.k8s.io, som har färdiga paket för både Windows och Linux. kubectl följer inte med Minikube, utan hämtas separat från kubernetes.io, som också har färdiga paket för båda systemen. Starta sedan klustret:
minikube start
Windows och Linux Mint
När klustret svarar är själva installationen två rader, och de är identiska på båda systemen:
kubectl create namespace argocd
kubectl apply -n argocd --server-side --force-conflicts -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Första raden skapar ett eget utrymme i klustret så att Argo CD inte blandas ihop med dina egna program. Andra hämtar och startar allt som behövs. Det tar ett par minuter, och du följer med i kubectl get pods -n argocd tills alla rader står på Running.
Öppna sedan en väg in till gränssnittet:
kubectl port-forward svc/argocd-server -n argocd 8080:443
Låt fönstret stå öppet, för vägen finns bara så länge kommandot kör. Surfa till https://localhost:8080, användarnamnet är admin. Webbläsaren varnar för certifikatet, vilket är väntat på en lokal installation, och du klickar dig förbi.
Tre saker att göra först
- Hämta lösenordet, för det står ingenstans i gränssnittet. På Linux Mint:
I PowerShell finns ingetkubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dbase64, så där avkodar du med Windows egna medel:
Byt sedan lösenordet med kommandot argocd account update-password om du installerat argocd-CLI, eller under User Info i webbgränssnittet om du inte vill installera CLI:t, och radera hemligheten.[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String((kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}"))) - Koppla in ett riktigt repo i stället för att läsa dokumentationen vidare. Projektet har ett övningsrepo på github.com/argoproj/argocd-example-apps. Tryck på Fork där och lägg upp din egen kopia som applikation i gränssnittet, inte originalet. Du kan inte ändra i någon annans repo, och nästa steg går ut på just det. Tryck sedan på Sync.
- Ändra något i din kopia av repot och titta på vad som händer. Argo CD upptäcker skillnaden inom några minuter och markerar applikationen som
OutOfSync. Sedan väntar den på att du trycker på Sync, för automatisk synk är avstängd från början. Den bilden är hela poängen med verktyget, och den går inte att förstå genom att läsa om den.
Den vanligaste fällan
Att laga något genom att ändra direkt i klustret. Argo CD jämför hela tiden klustret med filerna i Git, så ändringen syns inom några minuter som OutOfSync på applikationen. Rättningen finns alltså bara i klustret och ingenstans i Git, vilket betyder att nästa Sync tar bort den.
Har du dessutom slagit på automatisk synk med självläkning, alltså Automated sync och Self heal i applikationens inställningar, händer det av sig själv och utan att någon tryckt på något. Din rättning är borta, felet är tillbaka, och ingenting i loggen pekar tydligt på varför.
Regeln är därför enkel och tar ett tag att vänja sig vid: ändringar görs i Git, aldrig i klustret. Kommandot kubectl edit är ett felsökningsverktyg, inte ett sätt att rätta något.
En sak till om planeringen. Minikube på en vanlig bärbar dator klarar övningar utmärkt, men klustret ligger på din egen maskin och försvinner när du stänger av den. Ska något vara igång dygnet runt behöver du ett kluster hos en leverantör, och det kostar pengar. Räkna med det innan du bygger något du måste kunna lita på.