Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku opisano sposób używania metodyki GitOps w klastrze Kubernetes. Metodyka GitOps z ArgoCD jest dostępna jako rozszerzenie klastra w klastrach Kubernetes z obsługą Azure Arc lub w klastrach usługi Azure Kubernetes Service (AKS). Za pomocą metodyki GitOps możesz użyć repozytorium Git jako źródła prawdy na potrzeby konfiguracji klastra i wdrażania aplikacji.
Ważne
Metodyka GitOps z narzędziem ArgoCD jest obecnie dostępna w wersji zapoznawczej. Zobacz dodatkowe warunki użytkowania dla wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta, wersji zapoznawczej lub w inny sposób nie zostały jeszcze wydane w wersji ogólnodostępnej. W przypadku obsługi rozszerzenia GitOps w środowisku produkcyjnym wypróbuj rozszerzenie GitOps przy użyciu platformy Flux.
Wskazówka
Chociaż źródłem w tym samouczku jest repozytorium Git, ArgoCD obsługuje inne popularne typy repozytoriów, takie jak Helm i Open Container Initiative (OCI).
Wymagania wstępne
Aby wdrożyć aplikacje przy użyciu usługi GitOps, potrzebujesz klastra Kubernetes z obsługą usługi Azure Arc lub klastra usługi AKS:
Klastry platformy Kubernetes z obsługą usługi Azure Arc
Klaster Kubernetes połączony z Azure Arc, który jest już aktywny i działa.
Dowiedz się, jak połączyć klaster Kubernetes z usługą Azure Arc. Jeśli musisz nawiązać połączenie za pomocą serwera proxy dla ruchu wychodzącego, zainstaluj agentów usługi Arc z użyciem ustawień proxy.
Uprawnienia do odczytu i zapisu dla
Microsoft.Kubernetes/connectedClusters
typu zasobu.
Klastry usługi Azure Kubernetes Service
Klaster AKS oparty na tożsamości usługi zarządzanej, który jest już uruchomiony.
Ważne
Aby to rozszerzenie działało, należy utworzyć klaster usługi AKS przy użyciu tożsamości usługi zarządzanej (MSI), a nie głównej nazwy usługi (SPN). pl-PL: W przypadku nowych klastrów usługi AKS utworzonych za pomocą
az aks create
, klaster jest domyślnie oparty na tożsamości zarządzanej. Aby przekonwertować klastry bazujące na SPN na MSI, uruchomaz aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity
. Aby uzyskać więcej informacji, zobacz Używanie tożsamości zarządzanej w usłudze AKS.Uprawnienia do odczytu i zapisu dla
Microsoft.ContainerService/managedClusters
typu zasobu.
Wspólne dla obu typów klastrów
Uprawnienia do odczytu i zapisu dla tych typów zasobów:
Microsoft.KubernetesConfiguration/extensions
Azure CLI w wersji 2.15 lub nowszej. Zainstaluj interfejs wiersza polecenia platformy Azure lub użyj następujących poleceń, aby zaktualizować do najnowszej wersji:
az version az upgrade
Klient wiersza polecenia kubernetes, kubectl.
kubectl
jest już zainstalowany, jeśli używasz usługi Azure Cloud Shell.Zainstaluj
kubectl
lokalnie przy użyciuaz aks install-cli
polecenia :az aks install-cli
Rejestracja następujących dostawców zasobów platformy Azure:
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.ContainerService az provider register --namespace Microsoft.KubernetesConfiguration
Rejestracja jest procesem asynchronicznym i powinna zakończyć się w ciągu 10 minut. Aby monitorować proces rejestracji, użyj następującego polecenia:
az provider show -n Microsoft.KubernetesConfiguration -o table Namespace RegistrationPolicy RegistrationState --------------------------------- -------------------- ------------------- Microsoft.KubernetesConfiguration RegistrationRequired Registered
Obsługa wersji i regionów
Usługa GitOps jest obecnie obsługiwana we wszystkich regionach obsługiwanych przez Kubernetes z obsługą Azure Arc. Usługa GitOps jest obecnie obsługiwana w podzestawie regionów obsługiwanych przez usługę AKS. Usługa GitOps dodaje nowe obsługiwane regiony w regularnych okresach.
Wymagania dotyczące sieci
Agenci GitOps wymagają do działania wyjściowego ruchu TCP do źródła repozytorium na porcie 22 (SSH) lub 443 (HTTPS). Agenci wymagają również dostępu do następujących zewnętrznych adresów URL.
Punkt końcowy (DNS) | Opis |
---|---|
https://management.azure.com |
Wymagany, aby agent mógł komunikować się z usługą konfiguracji Kubernetes. |
https://<region>.dp.kubernetesconfiguration.azure.com |
Punkt końcowy płaszczyzny danych dla agenta umożliwiający przesyłanie statusu i pobieranie informacji konfiguracyjnych. Zależy od <region> (obsługiwane regiony wymienione wcześniej). |
https://login.microsoftonline.com |
Wymagany do pobierania i aktualizowania tokenów usługi Azure Resource Manager. |
https://mcr.microsoft.com |
Wymagane do ściągania obrazów kontenerów dla kontrolerów. |
Włączanie rozszerzeń interfejsu wiersza polecenia
Zainstaluj najnowsze pakiety rozszerzeń CLI: k8s-configuration
i k8s-extension
az extension add -n k8s-configuration
az extension add -n k8s-extension
Aby zaktualizować te pakiety do najnowszych wersji:
az extension update -n k8s-configuration
az extension update -n k8s-extension
Aby wyświetlić listę wszystkich zainstalowanych rozszerzeń interfejsu wiersza polecenia platformy Azure i ich wersji, użyj następującego polecenia:
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
Tworzenie rozszerzenia GitOps (ArgoCD) (prosta instalacja)
Instalacja GitOps ArgoCD obsługuje wiele dzierżaw w trybie wysokiej dostępności (HA) oraz tożsamość zadania.
Ważne
Tryb wysokiej dostępności jest konfiguracją domyślną i wymaga obecności trzech węzłów w klastrze do instalacji. Polecenie poniżej dodaje --config deployWithHighAvailability=false
do zainstalowania rozszerzenia na jednym węźle.
To polecenie tworzy najprostszą konfigurację, instalując składniki ArgoCD w nowej argocd
przestrzeni nazw z dostępem do całego klastra. Dostęp do całego klastra umożliwia wykrywanie definicji aplikacji ArgoCD w dowolnej przestrzeni nazw wymienionej w konfiguracji mapy konfiguracji ArgoCD w klastrze. Przykład: 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"
Jeśli chcesz ograniczyć dostęp ArgoCD do określonej przestrzeni nazw, użyj parametrów --config namespaceInstall=true
oraz --target-namespace <namespace>
. To polecenie instalacji tworzy nową przestrzeń nazw <namespace>
i instaluje składniki ArgoCD w <namespace>
. Polecenie instalacji umożliwia również zainstalowanie wielu wystąpień usługi ArgoCD w tym samym klastrze. Definicje aplikacji ArgoCD w tej konfiguracji działają tylko w <namespace>
przestrzeni nazw.
Utwórz rozszerzenie GitOps (ArgoCD) z tożsamością zasobów
Alternatywną metodą instalacji zalecaną w przypadku użycia produkcyjnego jest identyfikacja obciążenia. Ta metoda pozwala na użycie tożsamości Microsoft Entra ID do uwierzytelniania w zasobach Azure bez konieczności zarządzania sekretami lub poświadczeniami w repozytorium Git. Ta instalacja wykorzystuje uwierzytelnianie tożsamości roboczej (workload identity) dostępne w wersji 3.0.0-rc2 lub nowszej otwartego oprogramowania ArgoCD.
Ważne
Tryb wysokiej dostępności jest konfiguracją domyślną i wymaga obecności trzech węzłów w klastrze do instalacji. Dodaj --config deployWithHighAvailability=false
, aby zainstalować rozszerzenie na jednym węźle.
Aby utworzyć rozszerzenie z tożsamością obciążenia, najpierw zastąp następujące zmienne własnymi wartościami w tym szablonie 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'
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'
}
}
}
Szablon Bicep można utworzyć przy użyciu tego polecenia:
az deployment group create --resource-group <resource-group> --template-file <bicep-file>
Parametry
clusterName
to nazwa klastra Kubernetes z obsługą AKS lub Arc.
workloadIdentityClientId
i ssoWorkloadIdentityClientId
to identyfikatory klienta tożsamości zarządzanej, które mają być używane na potrzeby tożsamości obciążenia. Element ssoWorkloadIdentityClientId
jest używany do uwierzytelniania interfejsu użytkownika ArgoCD, a element workloadIdentityClientId
jest używany do tożsamości obciążenia składników ArgoCD. Odwiedź stronę Microsoft Entra ID App Registration Auth using OIDC, aby uzyskać dodatkowe informacje na temat ogólnego przygotowania i konfiguracji identyfikatora ssoWorkloadIdentityClientId.
url
to publiczny adres IP interfejsu użytkownika ArgoCD. Nie ma publicznego adresu IP ani nazwy domeny, chyba że klaster już posiada kontrolera wejściowego. Jeśli tak, reguła ruchu przychodzącego musi zostać dodana do interfejsu użytkownika argoCD po wdrożeniu.
oidcConfig
— zastąp <your-tenant-id>
identyfikatorem dzierżawy Microsoft Entra ID. Zastąp <same-value-as-ssoWorkloadIdentityClientId-above>
tą samą wartością co ssoWorkloadIdentityClientId
.
policy
zmienna argocd-rbac-cm configmap
to ustawienia argoCD.
g, replace-me##-argocd-ui-entra-group-admin-id
to identyfikator grupy Entra firmy Microsoft, który zapewnia administratorowi dostęp do interfejsu użytkownika argoCD. Identyfikator grupy Microsoft Entra można znaleźć w portalu Azure w obszarze Microsoft Entra ID > Grupy >[nazwa-twojej-grupy]> Właściwości. Możesz użyć identyfikatora użytkownika Entra firmy Microsoft zamiast identyfikatora grupy Entra firmy Microsoft. Identyfikator użytkownika Microsoft Entra można znaleźć w portalu Azure w obszarze Microsoft Entra ID > Użytkownicy >twoja-nazwa-użytkownika> Właściwości.
Tworzenie poświadczeń tożsamości dla obciążeń
Aby skonfigurować nowe poświadczenia tożsamości dla obciążenia, wykonaj poniższe kroki:
Pobierz adres URL wystawcy OIDC dla klastra AKS lub klastra Kubernetes z obsługą Arc.
Utwórz tożsamość zarządzaną i zanotuj jej identyfikator klienta i identyfikator dzierżawy.
Ustanów poświadczenie tożsamości federacyjnej dla klastra AKS lub klastra Kubernetes z obsługą Arc. Przykład:
# 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
Pamiętaj, aby zapewnić odpowiednie uprawnienia do tożsamości obciążenia dla zasobu, który ma zostać ściągnięty przez kontroler źródłowy lub kontroler refleksora obrazów. Na przykład, jeśli korzystasz z usługi Azure Container Registry, upewnij się, że zastosowano
Container Registry Repository Reader
(dla rejestrów z włączoną obsługą ABAC) alboAcrPull
(dla rejestrów, które nie obsługują ABAC).
Nawiązywanie połączenia z prywatnymi rejestrami usługi ACR lub repozytoriami usługi ACR przy użyciu tożsamości obciążenia
Aby korzystać z prywatnego rejestru usługi ACR lub repozytoriów usługi ACR, postępuj zgodnie z instrukcjami w oficjalnej dokumentacji argoCD na potrzeby nawiązywania połączenia z prywatnymi rejestrami usługi ACR. Etykietowanie zasobników, Utwórz poświadczenia tożsamości federacyjnej i Dodaj adnotację do konta usługi zostały wykonane przez rozszerzenie z wdrożeniem Bicep i mogą zostać pominięte.
Uzyskiwanie dostępu do interfejsu użytkownika argoCD
Jeśli nie ma istniejącego kontrolera ruchu przychodzącego dla klastra AKS, interfejs użytkownika ArgoCD można uwidocznić bezpośrednio przy użyciu usługi typu LoadBalancer. Następujące polecenie uwidacznia interfejs użytkownika ArgoCD na porcie 80 i 443.
kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080
Wdrażanie aplikacji ArgoCD
Po zainstalowaniu rozszerzenia ArgoCD można wdrożyć aplikację przy użyciu interfejsu użytkownika argoCD lub interfejsu wiersza polecenia. W poniższym przykładzie po prostu użyto kubectl apply
do wdrożenia magazynu AKS w aplikacji ArgoCD do projektu domyślnego ArgoCD w przestrzeni nazw argocd
.
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
Aplikacja demonstracyjna sklepu AKS została zainstalowana w pets
przestrzeni nazw. Zapoznaj się ze stroną internetową aplikacji, postępując zgodnie z tymi instrukcjami. Pamiętaj, aby odwiedzić adres IP przy użyciu protokołu HTTP, a nie https.
Aktualizowanie konfiguracji rozszerzenia
Mapy konfiguracji ArgoCD można zaktualizować po instalacji i innych ustawieniach konfiguracji rozszerzenia przy użyciu następującego polecenia:
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'”
Ważne jest, aby zaktualizować mapę konfiguracji ArgoCD za pomocą rozszerzenia, więc ustawienia nie zostaną zastąpione.
Zastosowanie szablonu bicep jest alternatywną metodą az cli
aktualizacji konfiguracji.
Usuwanie rozszerzenia
Użyj następujących poleceń, aby usunąć rozszerzenie.
az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes
Dalsze kroki
- Problemy z plikami i żądania funkcji w repozytorium Azure/AKS i pamiętaj, aby uwzględnić słowo "ArgoCD" w opisie lub tytule.
- Zapoznaj się z przykładem kodu inżynieryjnegoAKS-Platform, który wdraża OSS ArgoCD przy użyciu Backstage i Cluster API Provider for Azure (CAPZ) lub Crossplane.