Megosztás a következőn keresztül:


Oktatóanyag: Alkalmazások üzembe helyezése a GitOps használatával az ArgoCD-vel

Ez az útmutató bemutatja, hogyan használható a GitOps egy Kubernetes-fürtben. Az ArgoCD-vel rendelkező GitOps fürtbővítményként engedélyezve van az Azure Arc-kompatibilis Kubernetes-fürtökben vagy az Azure Kubernetes Service- (AKS-) fürtökben. A GitOps segítségével a Git-adattárat használhatja a fürtkonfiguráció és az alkalmazástelepítés igazságforrásaként.

Fontos

Az ArgoCD-vel rendelkező GitOps jelenleg előzetes verzióban érhető el. A Microsoft Azure Previews kiegészítő használati feltételeiben talál olyan jogi feltételeket, amelyek a bétaverzióban, előzetes verzióban vagy más módon még nem általánosan elérhető Azure-funkciókra vonatkoznak. Az gyártási GitOps-bővítmények támogatásához próbálja ki a GitOps bővítményt Flux használatával.

Jótanács

Bár az oktatóanyag forrása egy Git-adattár, az ArgoCD más gyakori fájlforrásokat is támogat, például a Helm és az Open Container Initiative (OCI) adattárakat.

Előfeltételek

A GitOps használatával történő alkalmazások üzembe helyezéséhez Azure Arc-kompatibilis Kubernetes-fürtre vagy AKS-fürtre van szükség:

Azure Arc-kompatibilis Kubernetes-klaszterek

Azure Kubernetes Szolgáltatás-fürtök

  • Egy MSI-alapú AKS-fürt, amely teljesen működőképes.

    Fontos

    A bővítmény működéséhez az AKS-fürtöt Felügyelt Szolgáltatás Identitással (MSI) kell létrehozni, nem Szolgáltatási főnévvel (SPN). Az új AKS-fürtök az aks createesetében a fürt alapértelmezés szerint MSI-alapú. Az SPN-alapú fürtök MSI-vé konvertálásához futtassa a következőt: az aks update -g $RESOURCE_GROUP -n $CLUSTER_NAME --enable-managed-identity. További információ: Felügyelt identitás használata az AKS-ben.

  • Olvasási és írási engedélyek az Microsoft.ContainerService/managedClusters erőforrástípushoz.

Mindkét fürttípus esetében gyakori

  • Olvasási és írási engedélyek az alábbi erőforrástípusokhoz:

    • Microsoft.KubernetesConfiguration/extensions
  • Az Azure CLI 2.15-ös vagy újabb verziója. Telepítse az Azure CLI-t , vagy a következő parancsokkal frissítsen a legújabb verzióra:

    az version
    az upgrade
    
  • A Kubernetes parancssori kliens, kubectl. kubectl már telepítve van az Azure Cloud Shell használata esetén.

    Telepítse kubectl helyileg a az aks install-cli következő paranccsal:

    az aks install-cli
    
  • A következő Azure-erőforrás-szolgáltatók regisztrálása:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.KubernetesConfiguration
    

    A regisztráció egy aszinkron folyamat, és legfeljebb 10 percet vehet igénybe. A regisztrációs folyamat figyeléséhez használja a következő parancsot:

    az provider show -n Microsoft.KubernetesConfiguration -o table
    
    Namespace                          RegistrationPolicy    RegistrationState
    ---------------------------------  --------------------  -------------------
    Microsoft.KubernetesConfiguration  RegistrationRequired  Registered
    

Verzió- és régiótámogatás

A GitOps jelenleg minden olyan régióban támogatott, amelyet az Azure Arc-kompatibilis Kubernetes támogat. A GitOps jelenleg az AKS által támogatott régiók egy részében támogatott. A GitOps szolgáltatás rendszeresen új támogatott régiókat ad hozzá.

Hálózati követelmények

A GitOps-ügynököknek a megfelelő működés érdekében kimenő TCP-re van szükségük az adattár forrásához a 22-es (SSH) vagy a 443-as (HTTPS) porton. Az ügynököknek a következő kimenő URL-címekhez is hozzá kell férniük:

Végpont (DNS) Leírás
https://management.azure.com Az ügynök és a Kubernetes konfigurálási szolgáltatása közötti kommunikációhoz szükséges.
https://<region>.dp.kubernetesconfiguration.azure.com Az ügynök adatsík végpontja az állapot leküldéséhez és a konfigurációs információk lekéréséhez. <region> Függ (a korábban említett támogatott régióktól).
https://login.microsoftonline.com Az Azure Resource Manager-tokenek beolvasásához és frissítéséhez szükséges.
https://mcr.microsoft.com A vezérlőkhöz szükséges tárolókép letöltése.

A CLI-bővítmények engedélyezése

Telepítse a legújabb k8s-configuration és k8s-extension CLI-bővítménycsomagokat:

az extension add -n k8s-configuration
az extension add -n k8s-extension

A csomagok frissítése a legújabb verziókra:

az extension update -n k8s-configuration
az extension update -n k8s-extension

Az összes telepített Azure CLI-bővítmény és verziójuk listájának megtekintéséhez használja a következő parancsot:

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

GitOps (ArgoCD) bővítmény létrehozása (egyszerű telepítés)

A GitOps ArgoCD telepítése támogatja a több bérlős használatot magas rendelkezésre állású (HA) módban, és támogatja a számítási feladatok identitását.

Fontos

A HA módja az alapértelmezett konfiguráció, és a telepítés megkezdéséhez három csomópont szükséges a fürtben. Az alábbi parancs hozzáadja --config deployWithHighAvailability=false a bővítmény egyetlen csomópontra való telepítéséhez.

Ez a parancs hozza létre az ArgoCD-összetevők fürtszintű hozzáféréssel rendelkező új argocd névtérbe való telepítésének legegyszerűbb konfigurációját. A fürtszintű hozzáférés lehetővé teszi az ArgoCD-alkalmazásdefiníciók észlelését a fürt ArgoCD konfigurációjában felsorolt névterekben. Például: 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"

Ha az ArgoCD-hozzáférést egy adott névtérre szeretné korlátozni, használja a --config namespaceInstall=true paramétereket --target-namespace <namespace> is. Ez a telepítési parancs létrehoz egy új <namespace> névteret, és telepíti az ArgoCD-összetevőket a <namespace>. A telepítési parancs lehetővé teszi az ArgoCD több példányának telepítését is ugyanabban a fürtben. Az ArgoCD-alkalmazásdefiníciók ebben a konfigurációban csak a <namespace> névtérben működnek.

GitOps (ArgoCD) bővítmény létrehozása számítási feladat identitásával

Az éles használathoz ajánlott másik telepítési módszer a számítási feladatok identitása. Ez a módszer lehetővé teszi a Microsoft Entra ID-identitások használatát az Azure-erőforrások hitelesítéséhez anélkül, hogy titkos kulcsokat vagy hitelesítő adatokat kellene kezelnie a Git-adattárban. Ez a telepítés az ArgoCD 3.0.0-rc2 vagy újabb OSS-verziójában engedélyezett számítási feladatok identitáshitelesítését használja.

Fontos

A HA módja az alapértelmezett konfiguráció, és a telepítés megkezdéséhez három csomópont szükséges a fürtben. Add hozzá --config deployWithHighAvailability=false, hogy telepítsd a bővítményt egyetlen csomópontra.

Ha számítási feladat identitásával szeretné létrehozni a bővítményt, először cserélje le a következő változókat a saját értékeire ebben a Bicep-sablonban:

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'
    }
  }
}

A Bicep-sablon a következő paranccsal hozható létre:

az deployment group create --resource-group <resource-group> --template-file <bicep-file>

Paraméterek

clusterName az AKS- vagy Arc-kompatibilis Kubernetes-fürt neve.

workloadIdentityClientId és ssoWorkloadIdentityClientId azok a felügyelt identitás ügyfélazonosítói, amelyeket a munkaterhelés identitásához kívánnak használni. Ez ssoWorkloadIdentityClientId az ArgoCD felhasználói felület hitelesítéséhez, az workloadIdentityClientId ArgoCD-összetevők számítási feladatidentitásához használatos. Az ssoWorkloadIdentityClientId általános beállításával és konfigurálásával kapcsolatos további információkért látogasson el a Microsoft Entra ID alkalmazásregisztrációs hitelesítéshez az OIDC használatával oldalon.

url az ArgoCD felhasználói felület nyilvános IP-címe. Nincs nyilvános IP-cím vagy tartománynév, kivéve, ha a fürt már rendelkezik ügyfél által megadott bejövőforgalom-vezérlővel. Ha igen, a bejövő szabályt az üzembe helyezés után hozzá kell adni az ArgoCD felhasználói felületéhez.

oidcConfig - cserélje le <your-tenant-id> a Microsoft Entra ID bérlőazonosítójára. Cserélje le a <same-value-as-ssoWorkloadIdentityClientId-above>-t a ssoWorkloadIdentityClientId-vel azonos értékre.

policy változó az ArgoCD argocd-rbac-cm configmap beállítása. g, replace-me##-argocd-ui-entra-group-admin-id A Microsoft Entra-csoportazonosító, amely rendszergazdai hozzáférést biztosít az ArgoCD felhasználói felületéhez. A Microsoft Entra-csoportazonosító az Azure portálon a Microsoft Entra ID > csoportok >csoportnév> tulajdonságai alatt található. Microsoft Entra-csoportazonosító helyett használhatja a Microsoft Entra felhasználói azonosítóját. A Microsoft Entra felhasználói azonosítója az Azure Portalon, a Microsoft Entra id > Users >your-user-name Properties (Felhasználónevű> tulajdonságok) területen található.

Munkaterhelési identitás hitelesítő adatainak létrehozása

Új számítási feladatok identitásának hitelesítő adatainak beállításához kövesse az alábbi lépéseket:

  1. Kérje le az OIDC-kiállító URL-címét az AKS-fürthöz vagy az Arc-kompatibilis Kubernetes-fürthöz.

  2. Hozzon létre egy felügyelt identitást , és jegyezze fel annak ügyfél-azonosítóját és bérlőazonosítóját.

  3. Hozzon létre egy egyesített azonosító hitelesítő adatot az AKS-fürthöz vagy az Arc-kompatibilis Kubernetes-fürthöz. Például:

    # 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
    
  4. Ügyeljen arra, hogy megfelelő engedélyeket adjon a számítási feladatok identitásához ahhoz az erőforráshoz, amelyet le szeretne húzni a forrásvezérlőhöz vagy a képvisszaverő vezérlőhöz. Ha például az Azure Container Registryt használja, győződjön meg arról, hogy Container Registry Repository Reader ( ABAC-kompatibilis nyilvántartások esetén) vagy AcrPull (nem ABAC-regisztrációk esetén) alkalmazva lett.

Csatlakozás privát ACR-nyilvántartásokhoz vagy ACR-adattárakhoz számítási feladat identitásával

A privát ACR-adatbázis vagy ACR-adattárak használatához kövesse a hivatalos ArgoCD-dokumentáció utasításait a magán ACR-nyilvántartásokhoz való csatlakozáshoz. A podok címkézése, összevont identitás hitelesítő adatainak létrehozása és a szolgáltatásfiókhoz való megjegyzés hozzáadása az útmutatóban szereplő lépéseket a kiterjesztés a Bicep-telepítéssel együtt végrehajtották, és ezek kihagyhatók.

Az ArgoCD felhasználói felületének elérése

Ha nincs meglévő hozzáférési szabályozó az AKS-fürthöz, akkor az ArgoCD felhasználói felülete közvetlenül LoadBalancer szolgáltatás segítségével érhető el. Az alábbi parancs elérhetővé teszi az ArgoCD felhasználói felületét a 80-as és a 443-as porton.

kubectl -n argocd expose service argocd-server --type LoadBalancer --name argocd-server-lb --port 80 --target-port 8080

Az ArgoCD-alkalmazás üzembe helyezése

Most, hogy telepítette az ArgoCD bővítményt, az ArgoCD felhasználói felületén vagy parancssori felületén telepítheti az alkalmazást. Az alábbi példa egyszerűen az AKS-tárolót kubectl apply az ArgoCD-alkalmazáson belül a argocd névtér alapértelmezett ArgoCD-projektjébe helyezi üzembe.

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

Az AKS-tároló demoalkalmazása telepítve lett a pets névtérbe. Az alábbi utasításokat követve tekintse meg az alkalmazás weblapját. Ügyeljen arra, hogy http használatával keresse fel az IP-címet, és ne https használatával.

Bővítménykonfiguráció frissítése

Az ArgoCD konfigurációtérképei a telepítés után és más bővítménykonfigurációs beállításokat is frissíthetők az alábbi paranccsal:

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'”

Fontos, hogy az ArgoCD konfigurációtérképét a bővítményen keresztül frissítse, így a beállítások nem lesznek felülírva. A bicep-sablon alkalmazása alternatív módszer a az cli konfiguráció frissítésére.

A bővítmény törlése

A bővítmény törléséhez használja az alábbi parancsokat.

az k8s-extension delete -g <resource-group> -c <cluster-name> -n argocd -t managedClusters --yes

Következő lépések

  • Fájlproblémák és szolgáltatáskérések az Azure/AKS-adattárban , és ügyeljen arra, hogy a leírásban vagy a címben szerepeljen az "ArgoCD" szó.
  • Ismerje meg AKS-Platform mérnöki kódmintát , amely üzembe helyezi az OSS ArgoCD-t a Backstage és a Cluster API Provider for Azure (CAPZ) vagy a Crossplane használatával.