Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogramm wird beschrieben, wie Sie GitOps mit Argo CD in Azure Arc-fähigen Kubernetes-Clustern oder Azure Kubernetes Service (AKS)-Clustern verwenden. GitOps mit Argo CD ist als Clustererweiterung aktiviert, mit der Sie Ihr Git-Repository als Wahrheitsquelle für die Clusterkonfiguration und Anwendungsbereitstellung verwenden können. Argo CD unterstützt auch andere gängige Dateiquellen, z. B. Helm- und Open Container Initiative (OCI)-Repositorys.
Hinweis
Ab Version 1.0.0-Preview verwendet die Argo CD-Erweiterung das Community Helm-Diagramm. Diese Änderung ist eine wichtige Änderung, da sich die Konfigurationsschlüssel geändert haben. Wenn Sie eine frühere Version (0.0.x) der Erweiterung installiert haben, deinstallieren Sie die Erweiterung, und installieren Sie die neuesten mit aktualisierten Konfigurationsschlüsseln erneut.
Von Bedeutung
GitOps mit Argo CD befindet sich derzeit in DER VORSCHAU. Lesen Sie die ergänzenden Nutzungsbedingungen für Microsoft Azure Previews für rechtliche Bestimmungen, die für Azure-Features gelten, die sich in Der Betaversion, Vorschau oder auf andere Weise noch nicht in der allgemeinen Verfügbarkeit befinden. Testen Sie die GitOps-Erweiterungsunterstützung für die Produktion mithilfe von Flux.
Voraussetzungen
Um Anwendungen mit GitOps bereitzustellen, benötigen Sie entweder einen Azure Arc-fähigen Kubernetes-Cluster oder einen AKS-Cluster.
Kubernetes-Cluster mit Azure Arc-Unterstützung.
Einen verbundenen Kubernetes-Cluster mit Azure Arc-Unterstützung, der aktiv ist und ausgeführt wird.
Erfahren Sie, wie Sie einen Kubernetes-Cluster mit Azure Arc verbinden. Wenn Sie eine Verbindung über einen ausgehenden Proxy herstellen müssen, stellen Sie sicher, dass Sie die Arc-Agents mit Proxyeinstellungen installieren.
Lese- und Schreibberechtigungen für den Ressourcentyp
Microsoft.Kubernetes/connectedClusters
Azure Kubernetes Service-Cluster
Einen MSI-basierten AKS-Cluster, der aktiv ist und ausgeführt wird
Von Bedeutung
Der AKS-Cluster muss mit verwalteter Dienstidentität (Managed Service Identity, MSI) und nicht mit dem Dienstprinzipalnamen (Service Principal Name, SPN) erstellt werden, damit diese Erweiterung funktioniert. Bei neuen AKS-Clustern, die mit
az aks createerstellt werden, ist der Cluster standardmäßig MSI-basiert. Um SPN-basierte Cluster in MSI zu konvertieren, führen Sieaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identityaus. Weitere Informationen finden Sie unter Verwenden einer verwalteten Identität in AKS.Lese- und Schreibberechtigungen für den Ressourcentyp
Microsoft.ContainerService/managedClusters
Für beide Clustertypen
Lese- und Schreibberechtigungen für diese Ressourcentypen:
Microsoft.KubernetesConfiguration/extensions
Azure-Befehlszeilenschnittstelle ab Version 2.15. Installieren Sie die Azure CLI , oder verwenden Sie die folgenden Befehle, um auf die neueste Version zu aktualisieren:
az version az upgradeDer Kubernetes-Befehlszeilenclient kubectl.
kubectlist bereits installiert, wenn Sie Azure Cloud Shell verwenden.Verwenden Sie für die lokale Installation von
kubectlden Befehlaz aks install-cli:az aks install-cliRegistrierung der folgenden Azure-Ressourcenanbieter:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationDie Registrierung ist ein asynchroner Prozess und sollte innerhalb von 10 Minuten abgeschlossen sein. Verwenden Sie zum Überwachen des Registrierungsprozesses den folgenden Befehl:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Tipp
Während die Quelle in diesem Lernprogramm ein Git-Repository ist, unterstützt Argo CD andere gängige Dateiquellen wie Helm- und Open Container Initiative (OCI)-Repositorys.
Versions- und Regionsunterstützung
GitOps wird derzeit in allen Regionen unterstützt, die Azure Arc-fähige Kubernetes unterstützt. GitOps wird derzeit in einer Teilmenge der Regionen unterstützt, die AKS unterstützt. Der GitOps-Dienst fügt in regelmäßigen Abständen neue unterstützte Regionen hinzu.
Netzwerkanforderungen
Die GitOps-Agents erfordern ein ausgehendes TCP an die Repository-Quelle auf Port 22 (SSH) oder Port 443 (HTTPS), um zu funktionieren. Außerdem benötigen die Agents Zugriff auf die folgenden ausgehenden URLs:
| Endpunkt (DNS) | BESCHREIBUNG |
|---|---|
https://management.azure.com |
Erforderlich, damit der Agent mit dem Kubernetes-Konfigurationsdienst kommunizieren kann. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Endpunkt auf Datenebene, über den der Agent Statusinformationen mithilfe von Push übermitteln und Konfigurationsinformationen abrufen kann Hängt von <region> (den zuvor erwähnten unterstützten Regionen) ab. |
https://login.microsoftonline.com |
Erforderlich zum Abrufen und Aktualisieren von Azure Resource Manager-Token. |
https://mcr.microsoft.com |
Erforderlich, um Containerimages für Controller abzurufen. |
Aktivieren der CLI-Erweiterungen
Installieren Sie die neuesten CLI-Erweiterungspakete k8s-configuration und k8s-extension:
az extension add -n k8s-configuration
az extension add -n k8s-extension
So aktualisieren Sie diese Pakete auf die neuesten Versionen
az extension update -n k8s-configuration
az extension update -n k8s-extension
Verwenden Sie den folgenden Befehl, um eine Liste aller installierten Azure CLI-Erweiterungen und deren Versionen anzuzeigen:
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
Erstellen der Erweiterung GitOps (Argo CD) (einfache Installation)
Die GitOps Argo CD-Installation unterstützt mehrinstanzenfähige Mandanten im Ha-Modus (High Availability) und unterstützt die Workload-Identität.
Von Bedeutung
Der HA-Modus ist die Standardkonfiguration und erfordert vier Knoten im Cluster, um die Installation durchführen zu können. Der folgende Befehl fügt --config "redis-ha.enabled=false" hinzu, um die Erweiterung auf einem einzelnen Knoten zu installieren.
Mit diesem Befehl wird die einfachste Konfiguration erstellt, die die Argo CD-Komponenten in einem neuen argocd Namespace mit clusterweitem Zugriff installiert. Der clusterweite Zugriff ermöglicht die Erkennung von Argo CD-App-Definitionen in allen Namespaces, die in der Konfiguration der Argo CD configmap im Cluster aufgeführt sind. Beispiel: namespace1,namespace2
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> \
--cluster-type managedClusters \
--name argocd \
--extension-type Microsoft.ArgoCD \
--release-train preview \
--config "redis-ha.enabled=false" \
--config "configs.params.application\.namespaces=namespace1,namespace2"
Dieser Installationsbefehl erstellt einen neuen <namespace> Namespace und installiert die Argo CD-Komponenten in der <namespace>. Argo CD-Anwendungsdefinitionen in dieser Konfiguration funktionieren nur im <namespace> Namespace.
Hinweis
Weitere Konfigurationsoptionen, z. B. Ressourcenbeschränkungen, finden Sie unter values.yaml. Verwenden Sie diese Konfigurationen beim Konfigurieren der Erweiterung in Ihrem Azure CLI-Befehl.
Erstellen einer GitOps (Argo CD) Erweiterung mit Workload Identity
Eine alternative Installationsmethode, die für die Produktionsverwendung empfohlen wird, ist die Workloadidentität. Mit dieser Methode können Sie Microsoft Entra-ID-Identitäten verwenden, um sich bei Azure-Ressourcen zu authentifizieren, ohne geheime Schlüssel oder Anmeldeinformationen in Ihrem Git-Repository verwalten zu müssen. Diese Installation verwendet die Workload-Identitätsauthentifizierung, die in der Version 3.0.0-rc2 oder höher von Argo CD aktiviert ist.
Von Bedeutung
Der HA-Modus ist die Standardkonfiguration und erfordert vier Knoten im Cluster, um die Installation durchführen zu können. Verwenden Sie 'redis-ha.enabled': false, um die Erweiterung auf einem einzelnen Knoten zu installieren.
Um die Erweiterung mit Workload-Identität zu erstellen, ersetzen Sie zuerst die folgenden Variablen durch Ihre eigenen Werte in dieser Bicep-Vorlage:
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'
releaseTrain: 'preview'
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'
}
}
}
Die Vorlage "Bicep" kann mit diesem Befehl erstellt werden:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Hinweis
Weitere Konfigurationsoptionen, z. B. Ressourcenbeschränkungen, finden Sie unter values.yaml. Verwenden Sie diese Konfigurationen in der Bicep-Vorlage beim Konfigurieren der Erweiterung.
Parameter
clusterName ist der Name des AKS- oder Arc-fähigen Kubernetes-Clusters.
workloadIdentityClientId und ssoWorkloadIdentityClientId sind die Client-IDs der verwalteten Identität, die für die Workload-Identität verwendet werden soll. Die ssoWorkloadIdentityClientId wird für die Authentifizierung der Argo CD UI verwendet, und die workloadIdentityClientId dient der Workload-Identität der Argo CD-Komponenten. Besuchen Sie Microsoft Entra ID App Registration Auth mit OIDC, um weitere Informationen zur grundlegenden Einrichtung und Konfiguration der ssoWorkloadIdentityClientId zu erhalten.
url ist die öffentliche IP der Argo CD UI. Es gibt keinen öffentlichen IP- oder Domänennamen, es sei denn, der Cluster verfügt bereits über einen kundeneigenen Eingangscontroller. Wenn ja, muss die Eingangsregel nach der Bereitstellung der Argo CD-Benutzeroberfläche hinzugefügt werden.
oidcConfig – Ersetzen Sie <your-tenant-id> durch die Mandanten-ID Ihrer Microsoft Entra-ID. Ersetzen Sie <same-value-as-ssoWorkloadIdentityClientId-above> durch denselben Wert wie ssoWorkloadIdentityClientId.
policy Variable ist die argocd-rbac-cm configmap Einstellungen von Argo CD.
g, replace-me##-argocd-ui-entra-group-admin-id ist die Microsoft Entra-Gruppen-ID, die Administratorzugriff auf die Ui der Argo CD gewährt. Die Microsoft Entra-Gruppen-ID finden Sie im Azure-Portal unter "Microsoft Entra ID > Groups >your-group-name> Properties". Sie können die Microsoft Entra-Benutzer-ID anstelle einer Microsoft Entra-Gruppen-ID verwenden. Die Microsoft Entra-Benutzer-ID finden Sie im Azure-Portal unter "Microsoft Entra ID > Users >your-user-name> Properties".
Erstellen von Anmeldeinformationen für die Workloadidentität
Führen Sie die folgenden Schritte aus, um neue Anmeldeinformationen für die Workloadidentität einzurichten:
Rufen Sie die OIDC-Aussteller-URL für Ihren AKS-Cluster oder Arc-fähigen Kubernetes-Cluster ab.
Erstellen Sie eine verwaltete Identität , und notieren Sie ihre Client-ID und Mandanten-ID.
Richten Sie verteilte Identitätsnachweise für Ihr AKS-Cluster oder Arc-fähiges Kubernetes-Cluster ein. Beispiel:
# 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}" --subject system:serviceaccount:"argocd":"source-controller" --audience api://AzureADTokenExchangeStellen Sie sicher, dass Sie der Workloadidentität die richtigen Berechtigungen für die Ressource bereitstellen, die vom Quellcontroller oder Imagereflektorcontroller abgerufen werden soll. Wenn Sie beispielsweise Azure Container Registry verwenden, stellen Sie sicher, dass entweder
Container Registry Repository Reader(für ABAC-fähige Registrierungen) oderAcrPull(für Nicht-ABAC-Registrierungen) angewendet wurde.
Herstellen einer Verbindung mit privaten ACR-Registrierungen oder ACR-Repositorys mithilfe der Workload-Identität
Um die privaten ACR-Registrierungs- oder ACR-Repositorys zu nutzen, befolgen Sie die Anweisungen in der offiziellen Argo CD-Dokumentation zum Herstellen einer Verbindung mit privaten ACR-Registern. Die Schritte Bezeichnung der Pods, Erstellen von Verbundidentitätsanmeldeinformationen und Hinzufügen von Anmerkungen zu Dienstkonto in diesem Leitfaden wurden durch die Erweiterung mit der Bicep-Bereitstellung abgeschlossen und können übersprungen werden.
Zugriff auf die UI von Argo CD
Wenn kein Eingangscontroller für den AKS-Cluster vorhanden ist, kann die Argo CD-Benutzeroberfläche direkt mit einem LoadBalancer-Dienst verfügbar gemacht werden. Der folgende Befehl macht die Argo CD-Benutzeroberfläche am Port 80 und 443 verfügbar.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
Bereitstellen der Argo CD-Anwendung
Nachdem die Argo CD-Erweiterung installiert ist, können Sie eine Anwendung mit der Argo CD UI oder CLI bereitstellen. Im folgenden Beispiel wird der AKS-Speicher einfach in einer Argo CD-Anwendung im standardmäßigen Argo CD-Projekt im argocd-Namespace bereitgestellt.
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
Die AKS Store-Demoanwendung wurde im argocd Namespace installiert. Lesen Sie die Anwendungswebseite, indem Sie diese Anweisungen befolgen. Achten Sie darauf, die IP-Adresse mit http und nicht mit https zu verwenden.
Aktuelen der Erweiterungskonfiguration
Argo CD configmaps können nach der Installation und anderen Erweiterungskonfigurationseinstellungen mithilfe des folgenden Befehls aktualisiert werden:
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'"
Aktualisieren Sie die Argo CD configmap über die Erweiterung, sodass die Einstellungen nicht überschrieben werden. Das Anwenden der Bicep-Vorlage ist eine alternative Methode zur Verwendung von Azure CLI zum Aktualisieren der Konfiguration.
Löschen Sie die Erweiterung
Verwenden Sie die folgenden Befehle, um die Erweiterung zu löschen.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Nächste Schritte
- Dateiprobleme und Featureanforderungen im Azure/AKS-Repository und achten Sie darauf, das Wort "ArgoCD" in die Beschreibung oder den Titel einzuschließen.
- Erkunden Sie das AKS-Platform Engineering-Codebeispiel, das OSS Argo CD mit Backstage- und Cluster-API-Anbieter für Azure (CAPZ) oder Crossplane bereitstellt.