Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här självstudien beskrivs hur du använder GitOps med Argo CD i Azure Arc-aktiverade Kubernetes-kluster eller AKS-kluster (Azure Kubernetes Service). GitOps med Argo CD är aktiverat som ett klustertillägg som gör att du kan använda din Git-lagringsplats som sanningskälla för klusterkonfiguration och programdistribution. Argo CD stöder även andra vanliga filkällor, till exempel Helm- och Open Container Initiative-lagringsplatser (OCI).
Anmärkning
Från och med version 1.0.0-preview använder Argo CD-tillägget community Helm-diagrammet. Den här ändringen är en brytande ändring eftersom konfigurationsnycklarna har ändrats. Om du har installerat en tidigare version (0.0.x) av tillägget avinstallerar du tillägget och installerar om det senaste med uppdaterade konfigurationsnycklar.
Viktigt!
GitOps med Argo CD finns för närvarande i FÖRHANDSVERSION. Se kompletterande användningsvillkor för Microsoft Azure Previews för juridiska villkor som gäller för Azure-funktioner som är i betaversion, förhandsversion eller på annat sätt ännu inte har släppts i allmän tillgänglighet.
Förutsättningar
Om du vill distribuera program med GitOps behöver du antingen ett Azure Arc-aktiverat Kubernetes-kluster eller ett AKS-kluster.
Azure Arc-aktiverade Kubernetes-kluster
Ett Azure Arc-aktiverat Kubernetes-anslutet kluster som är igång.
Lär dig hur du ansluter ett Kubernetes-kluster till Azure Arc. Om du behöver ansluta via en utgående proxy ser du till att du installerar Arc-agenterna med proxyinställningar.
Läs- och skrivbehörigheter för
Microsoft.Kubernetes/connectedClustersresurstypen.
Azure Kubernetes Service-kluster
Ett MSI-baserat AKS-kluster som är igång.
Viktigt!
AKS-klustret måste skapas med hanterad tjänstidentitet (MSI), inte tjänstens huvudnamn (SPN) för att det här tillägget ska fungera. För nya AKS-kluster som skapats med
az aks createär klustret MSI-baserat som standard. Om du vill konvertera SPN-baserade kluster till MSI kör duaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. Mer information finns i Använda en hanterad identitet i AKS.Läs- och skrivbehörigheter för
Microsoft.ContainerService/managedClustersresurstypen.
Gemensamt för båda klustertyperna
Läs- och skrivbehörigheter för dessa resurstyper:
Microsoft.KubernetesConfiguration/extensions
Azure CLI version 2.15 och senare. Installera Azure CLI eller använd följande kommandon för att uppdatera till den senaste versionen:
az version az upgradeDen Kubernetes-kommandoradsklienten, kubectl.
kubectlär redan installerat om du använder Azure Cloud Shell.Installera
kubectllokalt medaz aks install-clikommandot :az aks install-cliRegistrering av följande Azure-resursprovidrar:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationRegistreringen är en asynkron process och bör slutföras inom 10 minuter. Om du vill övervaka registreringsprocessen använder du följande kommando:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Tips/Råd
Även om källan i den här självstudien är en Git-lagringsplats stöder Argo CD andra vanliga filkällor som Helm- och Open Container Initiative-lagringsplatser (OCI).
Versions- och regionsstöd
GitOps stöds för närvarande i offentliga regioner.
Nätverkskrav
GitOps-agenterna måste ha utgående TCP till lagringsplatskällan på antingen port 22 (SSH) eller port 443 (HTTPS) för att fungera. Agenterna kräver också åtkomst till följande utgående URL:er:
| Slutpunkt (DNS) | Beskrivning |
|---|---|
https://management.azure.com |
Krävs för att agenten ska kunna kommunicera med Kubernetes-konfigurationstjänsten. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Dataplanets slutpunkt för agenten för att skicka status och hämta konfigurationsinformation. Beror på <region> (de regioner som stöds ovan). |
https://login.microsoftonline.com |
Krävs för att hämta och uppdatera Azure Resource Manager-token. |
https://mcr.microsoft.com |
Krävs för att hämta containeravbildningar för kontrollanter. |
Aktivera CLI-tillägg
Installera de senaste k8s-configuration paketen och k8s-extension CLI-tilläggspaketen:
az extension add -n k8s-configuration
az extension add -n k8s-extension
Så här uppdaterar du dessa paket till de senaste versionerna:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Om du vill se en lista över alla installerade Azure CLI-tillägg och deras versioner använder du följande kommando:
az extension list -o table
Experimental ExtensionType Name Path Preview Version
------------- -------------- ----------------- ----------------------------------------------------- -------- --------
False whl connectedk8s C:\Users\somename\.azure\cliextensions\connectedk8s False 1.10.7
False whl k8s-configuration C:\Users\somename\.azure\cliextensions\k8s-configuration False 2.2.0
False whl k8s-extension C:\Users\somename\.azure\cliextensions\k8s-extension False 1.6.4
Skapa GitOps-tillägg (Argo CD) (enkel installation)
GitOps Argo CD-installationen stöder fleranvändarstöd i läget för hög tillgänglighet (HA) och stöder arbetsbelastningsidentitet.
Viktigt!
HA-läget är standardkonfigurationen och kräver fyra noder i klustret för att kunna installera. Kommandot nedan lägger till --config "redis-ha.enabled=false" för att installera tillägget på en enda nod.
Det här kommandot skapar den enklaste konfigurationen när du installerar Argo CD-komponenterna i ett nytt argocd namnområde med klusteromfattande åtkomst. Klusterövergripande åtkomst gör att Argo CD-appdefinitioner kan identifieras i vilket namnområde som helst som anges i Argo CD:s configmap-konfiguration i klustret. Till exempel: namespace1,namespace2
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> \
--cluster-type managedClusters \
--name argocd \
--extension-type Microsoft.ArgoCD \
--config "redis-ha.enabled=false" \
--config "configs.params.application\.namespaces=namespace1,namespace2"
Det här installationskommandot skapar ett nytt <namespace> namn-område och installerar Argo CD-komponenterna i <namespace>. Argo CD-programdefinitioner i den här konfigurationen fungerar bara i <namespace> namnområdet.
Anmärkning
Ytterligare konfigurationsalternativ, till exempel resursgränser, finns i values.yaml. Använd dessa konfigurationer i azure CLI-kommandot när du konfigurerar tillägget.
Skapa GitOps-tillägg (Argo CD) med arbetsbelastningsidentitet
En alternativ installationsmetod som rekommenderas för produktionsanvändning är workload identity. Med den här metoden kan du använda Microsoft Entra-ID-identiteter för att autentisera till Azure-resurser utan att behöva hantera hemligheter eller autentiseringsuppgifter på din Git-lagringsplats. Den här installationen använder arbetsbelastningsidentitetsautentisering aktiverad i 3.0.0-rc2 eller senare OSS-versionen av Argo CD.
Viktigt!
HA-läget är standardkonfigurationen och kräver fyra noder i klustret för att kunna installera. Använd 'redis-ha.enabled': false för att installera tillägget på en enda nod.
Om du vill skapa tillägget med arbetsbelastningsidentiteten ersätter du först följande variabler med dina egna värden i den här Bicep-mallen:
var clusterName = '<aks-or-arc-cluster-name>'
var workloadIdentityClientId = 'replace-me##-##-###-###'
var ssoWorkloadIdentityClientId = 'replace-me##-##-###-###'
var url = 'https://<public-ip-for-argocd-ui>/'
var oidcConfig = '''
name: Azure
issuer: https://login.microsoftonline.com/<your-tenant-id>/v2.0
clientID: <same-value-as-ssoWorkloadIdentityClientId-above>
azure:
useWorkloadIdentity: true
requestedIDTokenClaims:
groups:
essential: true
requestedScopes:
- openid
- profile
- email
'''
var defaultPolicy = 'role:readonly'
var policy = '''
p, role:org-admin, applications, *, */*, allow
p, role:org-admin, clusters, get, *, allow
p, role:org-admin, repositories, get, *, allow
p, role:org-admin, repositories, create, *, allow
p, role:org-admin, repositories, update, *, allow
p, role:org-admin, repositories, delete, *, allow
g, replace-me##-argocd-ui-entra-group-admin-id, role:org-admin
'''
resource cluster 'Microsoft.ContainerService/managedClusters@2024-10-01' existing = {
name: clusterName
}
resource extension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = {
name: 'argocd'
scope: cluster
properties: {
extensionType: 'Microsoft.ArgoCD'
configurationSettings: {
'redis-ha.enabled': 'true'
'azure.workloadIdentity.enabled': 'true'
'azure.workloadIdentity.clientId': workloadIdentityClientId
'azure.workloadIdentity.entraSSOClientId': ssoWorkloadIdentityClientId
'configs.cm.oidc\\.config': oidcConfig
'configs.cm.url': url
'configs.rbac.policy\\.default': defaultPolicy
'configs.rbac.policy\\.csv': policy
'configs.params.application\\.namespaces': 'default, argocd'
}
}
}
Bicep-mallen kan skapas med det här kommandot:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Anmärkning
Ytterligare konfigurationsalternativ, till exempel resursgränser, finns i values.yaml. Använd dessa konfigurationer i Bicep-mallen när du konfigurerar tillägget.
Parameterar
clusterName är namnet på AKS- eller Arc-aktivt Kubernetes-kluster.
workloadIdentityClientId och ssoWorkloadIdentityClientId är klient-ID:n för den hanterade identitet som ska användas för arbetslastidentitet.
ssoWorkloadIdentityClientId Används för autentisering för Argo CD-användargränssnittet och workloadIdentityClientId används för arbetsbelastningsidentiteten för Argo CD-komponenterna. Besök Microsoft Entra ID App Registration Auth med OIDC för ytterligare information om allmän inställning och konfiguration av ssoWorkloadIdentityClientId.
url är den offentliga IP-adressen för Argo CD-användargränssnittet. Det finns ingen offentlig IP-adress eller domännamn om klustret inte redan har en ingresskontroller tillhandahållen av kunden. I så fall måste ingressregeln läggas till i Argo CD-användargränssnittet efter distributionen.
oidcConfig – ersätt <your-tenant-id> med klientorganisations-ID:t för ditt Microsoft Entra-ID. Ersätt <same-value-as-ssoWorkloadIdentityClientId-above> med samma värde som ssoWorkloadIdentityClientId.
policy variabeln är argocd-rbac-cm configmap inställningarna för Argo CD.
g, replace-me##-argocd-ui-entra-group-admin-id är Microsoft Entra-grupp-ID:t som ger administratören åtkomst till Argo CD-användargränssnittet. Microsoft Entra-grupp-ID:t finns i Azure-portalen under Microsoft Entra ID > Gruppera >dina gruppnamnsegenskaper>. Du kan använda Microsoft Entra-användar-ID:t i stället för ett Microsoft Entra-grupp-ID. Microsoft Entra-användar-ID:t finns i Azure-portalen under Microsoft Entra-ID-användares >>egenskaper för ditt användarnamn> .
Skapa autentiseringsuppgifter för arbetsbelastningsidentitet
Följ dessa steg för att konfigurera nya autentiseringsuppgifter för arbetsflödesidentitet:
Hämta URL:en för OIDC-utfärdaren för ditt AKS-kluster eller Arc-aktiverat Kubernetes-kluster.
Skapa en hanterad identitet och anteckna dess klient-ID och hyresgäst-ID.
Upprätta en federerad identitetsautentiseringsuppgift för ditt AKS-kluster eller Arc-aktiverade Kubernetes-kluster. Till exempel:
# For source-controller az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --issuer "${OIDC_ISSUER}" --subjectSe till att ge rätt behörigheter för arbetsbelastningsidentiteten för den resurs som du vill att ArgoCD, bildreflektorkontrollanten eller ArgoCD-repo-servern ska hämta. Om du till exempel använder Azure Container Registry kontrollerar du att antingen
Container Registry Repository Reader(för ABAC-aktiverade register) ellerAcrPull(för icke-ABAC-register) har tillämpats.
Anslut till privata ACR-register eller ACR-repositorier med hjälp av arbetsbelastningsidentitet
Om du vill använda det privata ACR-registret eller ACR-lagringsplatserna följer du anvisningarna i den officiella Argo CD-dokumentationen för att ansluta till privata ACR-register. Stegen Märka poddar, Skapa federerade identitetsautentiseringsuppgifter och Lägg till anteckning i tjänstkontot i den guiden slutfördes av tillägget med Bicep-distributionen och kan hoppas över.
Få åtkomst till Argo CD-användargränssnittet
Om det inte finns någon befintlig ingresskontrollant för AKS-klustret kan Argo CD-användargränssnittet exponeras direkt med hjälp av en LoadBalancer-tjänst. Följande kommando exponerar Argo CD-användargränssnittet på port 80 och 443.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
Distribuera Argo CD-applikation
Nu när Argo CD-tillägget har installerats kan du distribuera ett program med hjälp av Argo CD-användargränssnittet eller CLI. I följande exempel används kubectl apply helt enkelt för att distribuera AKS-arkivet i ett Argo CD-program till standardprojektet för Argo CD i argocd namnområdet.
kubectl apply -f - <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: aks-store-demo
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/Azure-Samples/aks-store-demo.git
targetRevision: HEAD
path: kustomize/overlays/dev
syncPolicy:
automated: {}
destination:
namespace: argocd
server: https://kubernetes.default.svc
EOF
AKS Store-demoprogrammet installerades i argocd namnområdet. Se programmets webbsida genom att följa de här anvisningarna. Se till att besöka IP-adressen med http och inte https.
Uppdatera förlängningskonfiguration
Argo CD-konfigurationsmappar kan uppdateras efter installationen och andra konfigurationsinställningar för tillägg med hjälp av följande kommando:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name argocd --config "configs.cm.url='https://<public-ip-for-argocd-ui>/auth/callback'"
Uppdatera Argo CD-konfigurationskartan via tillägget så att inställningarna inte skrivs över. Att använda Bicep-mallen är en alternativ metod för att använda Azure CLI för att uppdatera konfigurationen.
Ta bort tillägget
Använd följande kommandon för att ta bort tillägget.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Nästa steg
- Filproblem och funktionsbegäranden på Azure/AKS-lagringsplatsen och se till att inkludera ordet "ArgoCD" i beskrivningen eller rubriken.
- Utforska AKS-Platform teknikexempel, som implementerar OSS Argo CD med Backstage och Cluster API Provider för Azure (CAPZ) eller Crossplane.