Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie wordt beschreven hoe u GitOps gebruikt in een Kubernetes-cluster. GitOps met ArgoCD is ingeschakeld als clusterextensie in Kubernetes-clusters met Azure Arc of AKS-clusters (Azure Kubernetes Service). Met GitOps kunt u uw Git-opslagplaats gebruiken als de bron van waarheid voor clusterconfiguratie en toepassingsimplementatie.
Belangrijk
GitOps met ArgoCD is momenteel in PREVIEW. Zie de aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die bèta, preview of anderszins nog niet zijn uitgebracht in algemene beschikbaarheid. Probeer de GitOps-extensie met Flux voor ondersteuning voor productie-GitOps-extensies.
Aanbeveling
Hoewel de bron in deze zelfstudie een Git-opslagplaats is, ondersteunt ArgoCD andere algemene bestandsbronnen, zoals Helm- en Open Container Initiative-opslagplaatsen (OCI).
Vereiste voorwaarden
Als u toepassingen wilt implementeren met GitOps, hebt u een Kubernetes-cluster met Azure Arc of een AKS-cluster nodig:
Kubernetes-clusters beheerd met Azure Arc
Een met Azure Arc verbonden Kubernetes-cluster dat actief is.
Meer informatie over het verbinden van een Kubernetes-cluster met Azure Arc. Als u verbinding wilt maken via een uitgaande proxy, moet u ervoor zorgen dat u de Arc-agents installeert met proxy-instellingen.
Lees- en schrijfmachtigingen voor het
Microsoft.Kubernetes/connectedClusters
resourcetype.
Azure Kubernetes Service-clusters
Een op MSI gebaseerd AKS-cluster dat operationeel is.
Belangrijk
Het AKS-cluster moet worden gemaakt met Managed Service Identity (MSI), niet Service Principal Name (SPN), zodat deze extensie werkt. Voor nieuwe AKS-clusters die zijn gemaakt met
az aks create
, is het cluster standaard op MSI gebaseerd. Als u clusters op basis van SPN wilt converteren naar MSI, voert u het volgende uitaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity
. Zie Een beheerde identiteit gebruiken in AKS voor meer informatie.Lees- en schrijfmachtigingen voor het
Microsoft.ContainerService/managedClusters
resourcetype.
Gebruikelijk voor beide clustertypen
Lees- en schrijfmachtigingen voor deze resourcetypen:
Microsoft.KubernetesConfiguration/extensions
Azure CLI versie 2.15 of hoger. Installeer de Azure CLI of gebruik de volgende opdrachten om bij te werken naar de nieuwste versie:
az version az upgrade
De Kubernetes-opdrachtregelclient, kubectl.
kubectl
is al geïnstalleerd als u Azure Cloud Shell gebruikt.Lokaal installeren
kubectl
met behulp van deaz aks install-cli
opdracht:az aks install-cli
Registratie van de volgende Azure-resourceproviders:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfiguration
Registratie is een asynchroon proces en moet binnen 10 minuten worden voltooid. Gebruik de volgende opdracht om het registratieproces te bewaken:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Ondersteuning voor versies en regio's
GitOps wordt momenteel ondersteund in alle regio's die Kubernetes met Azure Arc ondersteunen. GitOps wordt momenteel ondersteund in een subset van de regio's die AKS ondersteunt. De GitOps-service voegt nieuwe ondersteunde regio's toe aan een regelmatige frequentie.
Netwerkvereisten
De GitOps-agents vereisen een uitgaande TCP-verbinding naar de repository op poort 22 (SSH) of poort 443 (HTTPS) om te functioneren. De agents hebben ook toegang nodig tot de volgende uitgaande URL's:
Eindpunt (DNS) | Beschrijving |
---|---|
https://management.azure.com |
Vereist dat de agent communiceert met de Kubernetes Configuration-service. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Eindpunt van het datavlak voor de agent om de status door te geven en configuratiegegevens op te halen. Afhankelijk van <region> de eerder genoemde ondersteunde regio's. |
https://login.microsoftonline.com |
Vereist om de Azure Resource Manager-tokens op te halen en bij te werken. |
https://mcr.microsoft.com |
Nodig om containerafbeeldingen voor controllers op te halen. |
CLI-extensies inschakelen
Installeer de nieuwste k8s-configuration
en k8s-extension
CLI-extensiepakketten:
az extension add -n k8s-configuration
az extension add -n k8s-extension
Ga als volgt te werk om deze pakketten bij te werken naar de nieuwste versies:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Gebruik de volgende opdracht om een lijst weer te geven met alle geïnstalleerde Azure CLI-extensies en de bijbehorende versies:
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
Een GitOps-extensie (ArgoCD) maken (eenvoudige installatie)
De GitOps ArgoCD-installatie ondersteunt multitenancy in hoogbeschikbaarheidsmodus en ondersteunt de workload-identiteit.
Belangrijk
De ha-modus is de standaardconfiguratie en vereist drie knooppunten in het cluster om te kunnen installeren. De onderstaande opdracht voegt --config deployWithHighAvailability=false
toe om de extensie op één knooppunt te installeren.
Met deze opdracht maakt u de eenvoudigste configuratie die de ArgoCD-onderdelen installeert in een nieuwe argocd
naamruimte met toegang tot het hele cluster. Met clusterbrede toegang kunnen ArgoCD-app-definities worden gedetecteerd in elke naamruimte die wordt vermeld in de configuratie van de ArgoCD-configmap in het cluster. Bijvoorbeeld: namespace1,namespace2
az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> \
--cluster-type managedClusters \
--name argocd \
--extension-type Microsoft.ArgoCD \
--auto-upgrade false \
--release-train preview \
--version 0.0.7-preview \
--config deployWithHightAvailability=false \
--config namespaceInstall=false \
--config "config-maps.argocd-cmd-params-cm.data.application\.namespaces=namespace1,namespace2"
Als u ArgoCD-toegang tot een specifieke naamruimte wilt beperken, gebruikt u de --config namespaceInstall=true
samen met --target-namespace <namespace>
parameters. Met deze installatieopdracht maakt u een nieuwe <namespace>
naamruimte en installeert u de ArgoCD-onderdelen in de <namespace>
. Met de installatieopdracht kunt u ook meerdere exemplaren van ArgoCD in hetzelfde cluster installeren. ArgoCD-toepassingsdefinities in deze configuratie werken alleen in de <namespace>
naamruimte.
Een GitOps-extensie (ArgoCD) maken met workloadidentiteit
Een alternatieve installatiemethode die wordt aanbevolen voor productiegebruik, is workloadidentiteit. Met deze methode kunt u Microsoft Entra ID-identiteiten gebruiken om te verifiëren bij Azure-resources zonder dat u geheimen of referenties hoeft te beheren in uw Git-opslagplaats. Deze installatie maakt gebruik van workloadidentiteitsverificatie die is ingeschakeld in de OSS-versie 3.0.0-rc2 of hoger van ArgoCD.
Belangrijk
De ha-modus is de standaardconfiguratie en vereist drie knooppunten in het cluster om te kunnen installeren. Voeg --config deployWithHighAvailability=false
toe om de extensie op één knooppunt te installeren.
Als u de extensie wilt maken met de workloadidentiteit, vervangt u eerst de volgende variabelen door uw eigen waarden in deze Bicep-sjabloon:
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-Microsoft 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'
autoUpgradeMinorVersion: false
releaseTrain: 'preview'
version: '0.0.7-preview'
configurationSettings: {
'workloadIdentity.enable': 'true'
'workloadIdentity.clientId': workloadIdentityClientId
'workloadIdentity.entraSSOClientId': ssoWorkloadIdentityClientId
'config-maps.argocd-cm.data.oidc\\.config': oidcConfig
'config-maps.argocd-cm.data.url': url
'config-maps.argocd-rbac-cm.data.policy\\.default': defaultPolicy
'config-maps.argocd-rbac-cm.data.policy\\.csv': policy
'config-maps.argocd-cmd-params-cm.data.application\\.namespaces': 'default, argocd'
}
}
}
De Bicep-sjabloon kan worden gemaakt met behulp van deze opdracht:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Parameterwaarden
clusterName
is de naam van het Kubernetes-cluster dat is ingeschakeld met AKS of Arc.
workloadIdentityClientId
en ssoWorkloadIdentityClientId
zijn de client-id's van de beheerde identiteit die voor de workloadidentiteit moeten worden gebruikt. De ssoWorkloadIdentityClientId
wordt gebruikt voor de verificatie voor de ArgoCD-gebruikersinterface en de workloadIdentityClientId
wordt gebruikt voor de workloadidentiteit voor de ArgoCD-onderdelen. Ga naar Microsoft Entra ID App Registration Auth met behulp van OIDC voor meer informatie over algemene installatie en configuratie van de ssoWorkloadIdentityClientId.
url
is het openbare IP-adres van de ArgoCD-gebruikersinterface. Er is geen openbare IP- of domeinnaam, tenzij het cluster al een door de klant geleverde ingress controller heeft. Zo ja, dan moet de regel voor inkomend verkeer worden toegevoegd aan de ArgoCD-gebruikersinterface na de implementatie.
oidcConfig
- vervang door <your-tenant-id>
de tenant-id van uw Microsoft Entra-id. Vervang <same-value-as-ssoWorkloadIdentityClientId-above>
door dezelfde waarde als ssoWorkloadIdentityClientId
.
policy
variabele is de argocd-rbac-cm configmap
instellingen van ArgoCD.
g, replace-me##-argocd-ui-entra-group-admin-id
is de Microsoft Entra-groeps-id die beheerderstoegang geeft tot de ArgoCD-gebruikersinterface. De Microsoft Entra-groeps-id vindt u in Azure Portal onder Microsoft Entra ID > Groups >your-group-name> Properties. U kunt de Microsoft Entra-gebruikers-id gebruiken in plaats van een Microsoft Entra-groeps-id. De Microsoft Entra-gebruikers-id vindt u in Azure Portal onder Microsoft Entra ID > Users >your-user-name> Properties.
Identiteitsreferenties voor werkbelasting maken
Voer de volgende stappen uit om nieuwe workload-identiteitsreferenties in te stellen:
Haal de URL van de OIDC-verlener op voor uw AKS-cluster of Kubernetes-cluster met Arc.
Maak een beheerde identiteit en noteer de client-id en tenant-id.
Stel een federatieve identiteitsreferentie in voor uw AKS-cluster of Kubernetes-cluster met Arc. Voorbeeld:
# 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://AzureADTokenExchange
Zorg ervoor dat u de juiste machtigingen verleent voor de workloadidentiteit voor de resource die de broncontroller of image-reflectorcontroller moet ophalen. Als u bijvoorbeeld Azure Container Registry gebruikt, moet u ervoor zorgen dat
Container Registry Repository Reader
(voor registers met ABAC-functionaliteit) ofAcrPull
(voor niet-ABAC-registers) is toegepast.
Verbinding maken met privé-ACR-registers of ACR-opslagplaatsen met behulp van workloadidentiteit
Als u het persoonlijke ACR-register of ACR-opslagplaatsen wilt gebruiken, volgt u de instructies in de officiële ArgoCD-documentatie voor het maken van verbinding met privé-ACR-registers. De stappen De pods labelen, Federatieve identiteitsreferenties maken, en Aantekeningen toevoegen aan de serviceaccount in die handleiding zijn voltooid door de extensie met de Bicep-implementatie en kunnen worden overgeslagen.
Toegang tot de ArgoCD-gebruikersinterface
Als er geen bestaande ingangscontroller voor het AKS-cluster is, kan de ArgoCD-gebruikersinterface rechtstreeks worden weergegeven met behulp van een LoadBalancer-service. Met de volgende opdracht wordt de ArgoCD-gebruikersinterface weergegeven op poort 80 en 443.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
ArgoCD-toepassing implementeren
Nu de ArgoCD-extensie is geïnstalleerd, kunt u een toepassing implementeren met behulp van de ArgoCD-gebruikersinterface of CLI. In het volgende voorbeeld wordt kubectl apply
eenvoudigweg gebruikt om een AKS-archief in een ArgoCD-toepassing te implementeren in het standaard ArgoCD-project in de argocd
naamruimte.
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
De AKS Store-demotoepassing is geïnstalleerd in de pets
naamruimte. Bekijk de webpagina van de toepassing door deze instructies te volgen. Zorg ervoor dat u het IP-adres bezoekt met http en niet https.
Extensieconfiguratie bijwerken
ArgoCD-configuratiekaarten kunnen worden bijgewerkt na de installatie en andere configuratie-instellingen voor extensies met behulp van de volgende opdracht:
az k8s-extension update --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type <cluster-type> --name Microsoft.ArgoCD –-config "config-maps.argocd-cm.data.url='https://<public-ip-for-argocd-ui>/auth/callback'”
Het is belangrijk om de ArgoCD-configuratiemap bij te werken via de extensie, zodat de instellingen niet worden overschreven.
Het toepassen van de bicep-sjabloon is een alternatieve methode voor het az cli
bijwerken van de configuratie.
De extensie verwijderen
Gebruik de volgende opdrachten om de extensie te verwijderen.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Volgende stappen
- Bestandsproblemen en functieaanvragen in de Azure/AKS-opslagplaats en zorg ervoor dat u het woord 'ArgoCD' in de beschrijving of titel opneemt.
- Verken AKS-Platform technische codevoorbeeld waarmee OSS ArgoCD wordt geïmplementeerd met Backstage en Cluster API Provider voor Azure (CAPZ) of Crossplane.