Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento kurz popisuje, jak používat GitOps v clusteru Kubernetes. GitOps s ArgoCD je povolený jako rozšíření clusteru v clusterech Kubernetes s podporou Azure Arc nebo v clusterech Azure Kubernetes Service (AKS). S GitOps můžete úložiště Git používat jako zdroj pravdivých informací pro konfiguraci clusteru a nasazení aplikací.
Důležité
GitOps s ArgoCD je aktuálně ve verzi PREVIEW. Další podmínky použití pro Microsoft Azure Preview najdete v právních podmínkách, které se vztahují na funkce Azure, které jsou v beta verzi, preview nebo jinak dosud nebyly vydány v obecné dostupnosti. Pokud potřebujete podporu produkčního rozšíření GitOps, vyzkoušejte rozšíření GitOps pomocí fluxu.
Návod
I když je zdrojem v tomto kurzu úložiště Git, ArgoCD podporuje další běžné zdroje souborů, jako jsou úložiště Helm a Open Container Initiative (OCI).
Požadavky
K nasazení aplikací pomocí GitOps potřebujete cluster Kubernetes s podporou Azure Arc nebo cluster AKS:
Klastry Kubernetes s podporou Azure Arc
Cluster Kubernetes připojený k Azure Arc, který je aktivní a běží.
Zjistěte, jak připojit cluster Kubernetes ke službě Azure Arc. Pokud se potřebujete připojit přes odchozí proxy server, ujistěte se, že nainstalujete agenty Arc s nastavením proxy serveru.
Oprávnění na čtení a zápis pro typ prostředku
Microsoft.Kubernetes/connectedClusters.
Clustery služby Azure Kubernetes
Cluster AKS na bázi MSI, který je v provozu.
Důležité
Aby toto rozšíření fungovalo, je potřeba vytvořit cluster AKS s identitou spravované služby (MSI), nikoli hlavním názvem služby (SPN). U nových clusterů AKS vytvořených pomocí
az aks createje cluster ve výchozím nastavení založený na MSI. Pokud chcete převést clustery SPN na MSI, spusťteaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identitypříkaz . Další informace najdete v tématu Použití spravované identity v AKS.Oprávnění na čtení a zápis pro typ prostředku
Microsoft.ContainerService/managedClusters.
Společné pro oba typy clusterů
Oprávnění ke čtení a zápisu u těchto typů prostředků:
Microsoft.KubernetesConfiguration/extensions
Azure CLI verze 2.15 nebo novější Nainstalujte Azure CLI nebo pomocí následujících příkazů aktualizujte na nejnovější verzi:
az version az upgradeKlient příkazového řádku Kubernetes , kubectl.
kubectluž je nainstalovaný, pokud používáte Azure Cloud Shell.Nainstalujte
kubectlmístně pomocí příkazuaz aks install-cli:az aks install-cliRegistrace následujících poskytovatelů prostředků Azure:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfigurationRegistrace je asynchronní proces, který by se měl dokončit do 10 minut. Pokud chcete monitorovat proces registrace, použijte následující příkaz:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Podpora verzí a oblastí
GitOps se v současné době podporuje ve všech oblastech, které Kubernetes s podporou Azure Arc podporuje. GitOps se v současné době podporuje v podmnožině oblastí, které AKS podporuje. Služba GitOps přidává nové podporované oblasti v pravidelných intervalech.
Požadavky na síť
Agenti GitOps vyžadují odchozí TCP připojení ke zdroji úložiště na portu 22 (SSH) nebo portu 443 (HTTPS). Agenti také vyžadují přístup k následujícím odchozím adresám URL:
| Koncový bod (DNS) | Popis |
|---|---|
https://management.azure.com |
Vyžaduje se, aby agent komunikuje se službou Konfigurace Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Koncový bod roviny dat pro agenta pro nabízení informací o stavu a načítání konfiguračních informací. Závisí na <region> (podporované oblasti uvedené dříve). |
https://login.microsoftonline.com |
Vyžaduje se k načtení a aktualizaci tokenů Azure Resource Manageru. |
https://mcr.microsoft.com |
Potřebné pro stažení obrázků kontejnerů pro řadiče. |
Povolení rozšíření rozhraní příkazového řádku
Nainstalujte nejnovější balíčky rozšíření k8s-configuration a k8s-extension pro rozhraní příkazového řádku.
az extension add -n k8s-configuration
az extension add -n k8s-extension
Aktualizace těchto balíčků na nejnovější verze:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Pokud chcete zobrazit seznam všech nainstalovaných rozšíření Azure CLI a jejich verzí, použijte následující příkaz:
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
Vytvoření rozšíření GitOps (ArgoCD) (jednoduchá instalace)
Instalace GitOps ArgoCD podporuje víceklientské prostředí v režimu vysoké dostupnosti (HA) a podporuje identitu úloh.
Důležité
Režim vysoké dostupnosti je výchozí konfigurace a vyžaduje, aby bylo možné nainstalovat tři uzly v clusteru. Příkaz níže přidá --config deployWithHighAvailability=false k instalaci rozšíření na jednotlivý uzel.
Tento příkaz vytvoří nejjednodušší konfiguraci, která nainstaluje komponenty ArgoCD do nového argocd oboru názvů s přístupem pro celý cluster. Přístup na úrovni clusteru umožňuje zjistit definice aplikací ArgoCD v libovolném oboru názvů, který je uveden v konfiguraci mapy konfigurace argoCD v clusteru. Příklad: 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 deployWithHighAvailability=false \
--config namespaceInstall=false \
--config "config-maps.argocd-cmd-params-cm.data.application\.namespaces=namespace1,namespace2"
Pokud chcete omezit přístup ArgoCD k určitému oboru názvů, použijte --config namespaceInstall=true spolu s --target-namespace <namespace> parametry. Tento instalační příkaz vytvoří nový <namespace> obor názvů a nainstaluje komponenty ArgoCD do <namespace>. Instalační příkaz také umožňuje nainstalovat více instancí ArgoCD ve stejném clusteru. Definice aplikace ArgoCD v této konfiguraci fungují pouze v <namespace> oboru názvů.
Vytvoření rozšíření GitOps (ArgoCD) s identitou úloh
Alternativní metoda instalace doporučená pro produkční využití je identita úloh. Tato metoda umožňuje používat identity ID Microsoft Entra k ověřování prostředků Azure bez nutnosti spravovat tajné kódy nebo přihlašovací údaje v úložišti Git. Tato instalace využívá ověřování identit úloh povolené ve verzi 3.0.0-rc2 nebo novější verze OSS ArgoCD.
Důležité
Režim vysoké dostupnosti je výchozí konfigurace a vyžaduje, aby bylo možné nainstalovat tři uzly v clusteru. Přidejte --config deployWithHighAvailability=false k instalaci rozšíření na jediném uzlu.
Pokud chcete vytvořit rozšíření s identitou úlohy, nejprve nahraďte následující proměnné vlastními hodnotami v této šabloně Bicep:
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'
releaseTrain: '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'
}
}
}
Šablonu Bicep můžete vytvořit pomocí tohoto příkazu:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Parametry
clusterName je název clusteru Kubernetes s podporou AKS nebo Arc.
workloadIdentityClientId a ssoWorkloadIdentityClientId jsou ID klienta spravované identity, která se má použít pro identitu úlohy.
ssoWorkloadIdentityClientId se používá pro ověřování uživatelského rozhraní ArgoCD a workloadIdentityClientId se používá pro identitu úlohy pro komponenty ArgoCD. Další informace o obecné instalaci a konfiguraci ssoWorkloadIdentityClientId najdete v ověřování registrace aplikace Microsoft Entra ID pomocí OIDC .
url je veřejná IP adresa uživatelského rozhraní ArgoCD. Neexistuje žádná veřejná IP adresa ani název domény, pokud cluster ještě nemá kontroler příchozího přenosu dat poskytnutý zákazníkem. Pokud ano, pravidlo přístupu je potřeba po nasazení přidat do ArgoCD UI.
oidcConfig – nahraďte <your-tenant-id> ID tenanta vašeho ID Microsoft Entra. Nahraďte <same-value-as-ssoWorkloadIdentityClientId-above> stejnou hodnotou jako ssoWorkloadIdentityClientId.
policy proměnná je argocd-rbac-cm configmap nastavení ArgoCD.
g, replace-me##-argocd-ui-entra-group-admin-id je ID skupiny Microsoft Entra, které poskytuje správci přístup k uživatelskému rozhraní ArgoCD. ID skupiny Microsoft Entra najdete na webu Azure Portal v části Microsoft Entra ID > Groups >your-group-name> Properties. Místo ID skupiny Microsoft Entra můžete použít ID uživatele Microsoft Entra. ID uživatele Microsoft Entra najdete na portálu Azure v části Microsoft Entra ID>>Uživatelé> vaše-uživatelské-jméno Vlastnosti.
Vytvoření přihlašovacích údajů pro identitu úlohy
Pokud chcete nastavit nové přihlašovací údaje identity úloh, postupujte takto:
Načtěte adresu URL vystavitele OIDC pro cluster AKS nebo cluster Kubernetes s podporou Arc.
Vytvořte spravovanou identitu a poznamenejte si ID klienta a ID tenanta.
Vytvořte přihlašovací údaje federované identity pro cluster AKS nebo cluster Kubernetes s podporou Arc. Například:
# 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://AzureADTokenExchangeNezapomeňte poskytnout správná oprávnění pro identitu úlohy pro prostředek, který chcete načíst kontrolerem zdrojového kontroleru nebo kontroleru obrazu. Pokud například používáte Azure Container Registry, ujistěte se, že se použily
Container Registry Repository Reader(pro registry s podporou ABAC) neboAcrPull(pro registry bez ABAC).
Připojení k privátním registrům ACR nebo úložištím ACR pomocí identity úloh
Pokud chcete využít privátní registr ACR nebo úložiště ACR, postupujte podle pokynů v oficiální dokumentaci ArgoCD pro připojení k privátním registrům ACR. Označení podů, Vytvoření přihlašovacích údajů federované identity a Přidání poznámek k účtu služby v této příručce byly dokončeny rozšířením prostřednictvím nasazení Bicep a lze je přeskočit.
Přístup k uživatelskému rozhraní ArgoCD
Pokud pro cluster AKS neexistuje žádný kontroler příchozího přenosu dat, můžete uživatelské rozhraní ArgoCD zpřístupnit přímo pomocí služby LoadBalancer. Následující příkaz zveřejní uživatelské rozhraní ArgoCD na portu 80 a 443.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
Nasazení aplikace ArgoCD
Teď, když je nainstalované rozšíření ArgoCD, můžete nasadit aplikaci pomocí uživatelského rozhraní ArgoCD nebo rozhraní příkazového řádku. Následující příklad jednoduše používá kubectl apply k nasazení úložiště AKS uvnitř aplikace ArgoCD do výchozího projektu ArgoCD v argocd oboru názvů.
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
Ukázková aplikace úložiště AKS byla nainstalována do oboru názvů pets. Podle těchto pokynů se podívejte na webovou stránku aplikace. Nezapomeňte navštívit IP adresu pomocí protokolu HTTP, nikoli https.
Aktualizace konfigurace rozšíření
Konfigurační mapy ArgoCD je možné aktualizovat po instalaci a dalších nastaveních konfigurace rozšíření pomocí následujícího příkazu:
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'”
Je důležité aktualizovat mapu konfigurace ArgoCD prostřednictvím rozšíření, aby se nastavení nepřepsala.
Použití šablony bicep je alternativní metodou aktualizace az cli konfigurace.
Odstraňte rozšíření
K odstranění rozšíření použijte následující příkazy.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Další kroky
- Problémy se soubory a žádosti o funkce v úložišti Azure/AKS a nezapomeňte do popisu nebo názvu zahrnout slovo "ArgoCD".
- Prozkoumejte ukázkuAKS-Platform inženýrského kódu, která nasazuje OSS ArgoCD s Backstage a poskytovatelem rozhraní API pro clustery v Azure (CAPZ) nebo Crossplane.