Applikationsdistributioner med GitOps (Argo CD) för AKS och Azure Arc-aktiverade Kubernetes-kluster

När du använder Argo CD för GitOps på Azure Kubernetes Service (AKS) och Azure Arc-aktiverade Kubernetes-kluster blir Git-lagringsplatsen källan till sanningen för det önskade tillståndet för dina program och klusterkonfigurationer. Den här metoden erbjuder flera fördelar:

  • Kontinuerlig synkronisering: Argo CD körs internt i klustret, hämtar manifest, Helm-diagram eller Kustomize-konfigurationer direkt från Git.
  • Identifiering och reparation av drift: Systemet övervakar ständigt klustrets aktiva tillstånd mot önskat tillstånd i Git. Den identifierar omedelbart varje drift och stämmer av den baserat på dina specifika automatiseringsprinciper.
  • Säkerhetsprinciell pull-modell: Till skillnad från traditionell CI/CD använder Argo CD en strikt pull-baserad arkitektur. Eftersom klustret initierar anslutningen behöver du inte öppna inkommande brandväggsportar eller ge Git-lagringsplatser nätverksåtkomst till dina privata kluster. Den här arkitekturen gör Argo CD idealisk för miljöer med hög säkerhet, gränsberäkning och massiva hybridmolnskalor. 

Argo CD-klustertillägg

För att effektivisera hanteringen tillhandahåller Azure Argo CD som ett hanterat klustertillägg (Microsoft.KubernetesConfiguration/extensions/microsoft.argocd). Om du vill hantera program via GitOps distribuerar du Argo CD-tillägget till klustret.

Hanterade komponenter och styrenheter

Argo CD-tilläggspaketen paketerar och hanterar de kärnkomponenter som krävs för företagsklass GitOps:

Komponentnamn Kubernetes-tjänstnamn Huvudansvaret
Programkontrollant argocd-application-controller Övervakar kontinuerligt program som körs och jämför livetillståndet med önskat måltillstånd i Git.
API-server argocd-server Fungerar som den gRPC/REST-server som exponerar API:et som används av webbgränssnittet, CLI och externa CI/CD-system.
Lagringsplatsserver argocd-repo-server Underhåller en lokal cache med Git-lagringsplatser och ansvarar för att generera Kubernetes-manifest från källan (Helm, Kustomize osv.).
Redis argocd-redis Tillhandahåller ett tillfälligt, minnesinternt datalager som används för att cachelagra resultat för manifestgenerering och programtillstånd.
Dex och meddelanden argocd-dex-server En OpenID Connect-leverantör med öppen källkod som förmedlar identiteter från externa leverantörer som GitHub, SAML eller LDAP.
Notifikationskontroller argocd-notifications-controller Övervakar ändringar av programtillstånd och utlöser aviseringar till externa tjänster som Slack, E-post eller Webhooks.
ApplicationSet-styrenhet argocd-applicationset-controller Automatiserar skapandet av flera program i flera kluster.

Argo CD-uppbyggnader

När du har distribuerat Argo CD-tillägget till klustret kan du hantera dina arbetsbelastningar med hjälp av Argo CD-konstruktioner, till exempel:

  • Program och ApplicationSet: Definiera enskilda program för distributioner med en enda mål eller använd ApplicationSets för att automatisera skapandet av flera program i olika kluster och miljöer baserat på mallar.

  • Hanteringsgränssnitt: Hantera och övervaka resurser via Argo CD-webbgränssnittet för en visuell representation av klusterhälsa, eller genom att använda Argo CD CLI för terminalbaserade åtgärder och automatisering.

Mer information finns i dokumentationen för Argo CD.

Identitet och åtkomst

För att uppfylla företagets säkerhetskrav integreras Argo CD-tillägget med Azure-identitet för både AKS- och Azure Arc-aktiverade Kubernetes-kluster.

Tillägget stöder arbetsbelastningsidentitetsfederation, vilket gör det möjligt för Argo CD att på ett säkert sätt komma åt Azure-resurser som Azure Container Registry (ACR) och Azure DevOps utan att förlita sig på långvariga hemligheter. Argo CD-tillägget stöder även enkel inloggning (SSO) med hjälp av Microsoft Entra-ID, vilket gör att användare kan autentisera till Argo CD med hjälp av sina befintliga företagsidentiteter. Med den här modellen styr Azure autentiseringsuppgifter och åtkomstprinciper centralt i stället för att bädda in dem direkt i klusterkonfiguration eller Git-lagringsplatser.

Nästa steg