Oktatóanyag: Konfigurációk üzembe helyezése a GitOps használatával egy Azure Arc-kompatibilis Kubernetes-fürtön

Fontos

Ez az oktatóanyag a Flux v1-et tartalmazó GitOpshoz készült. A Flux v2-vel rendelkező GitOps mostantól elérhető az Azure Arc-kompatibilis Kubernetes- és Azure Kubernetes Service- (AKS-) fürtökhöz; nyissa meg a GitOps és a Flux v2 használatát ismertető oktatóanyagot. Javasoljuk, hogy mihamarabb migráljon a Flux v2-re .

A 2024. január 1. előtt létrehozott Flux v1-alapú fürtkonfigurációs erőforrások támogatása 2025. május 24-én megszűnik. 2024. január 1-től nem hozhat létre új Flux v1-alapú fürtkonfigurációs erőforrásokat.

Ebben az oktatóanyagban a GitOps használatával fog konfigurációkat alkalmazni egy Azure Arc-kompatibilis Kubernetes-fürtön. A következőket fogja megtanulni:

  • Hozzon létre egy konfigurációt egy Azure Arc-kompatibilis Kubernetes-fürtön egy példa Git-adattár használatával.
  • Ellenőrizze, hogy a konfiguráció sikeresen létrejött-e.
  • Konfigurálás alkalmazása privát Git-adattárból.
  • Ellenőrizze a Kubernetes konfigurációját.

Előfeltételek

Konfiguráció létrehozása

A cikkben használt példaadattár egy fürtoperátor személye köré van strukturálva. Az adattár jegyzékfájljai kiosztanak néhány névteret, üzembe helyezik a számítási feladatokat, és csapatspecifikus konfigurációt biztosítanak. Ha ezt az adattárat a GitOps használatával használja, a következő erőforrásokat hozza létre a fürtön:

  • Névterek: cluster-config, , team-ateam-b
  • Telepítési: arc-k8s-demo
  • Konfigurációtérkép: team-a/endpoints

A config-agent lekérdezések az Azure-t kérdezik le az új vagy frissített konfigurációkról. Ez a feladat akár 5 percet is igénybe vehet.

Ha privát adattárat társít a konfigurációval, hajtsa végre az alábbi lépéseket a Konfiguráció alkalmazása privát Git-adattárból című témakörben.

Az Azure parancssori felület használatával

Az Azure CLI-bővítmény k8s-configuration használatával összekapcsolhat egy csatlakoztatott fürtöt a git-adattár példával.

  1. Nevezze el ezt a konfigurációt cluster-config.

  2. Utasítsa az ügynököt, hogy helyezze üzembe az operátort a cluster-config névtérben.

  3. Adja meg az operátor cluster-admin engedélyeit.

    az k8s-configuration create --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name cluster-config --operator-namespace cluster-config --repository-url https://github.com/Azure/arc-k8s-demo --scope cluster --cluster-type connectedClusters
    
    {
      "complianceStatus": {
      "complianceState": "Pending",
      "lastConfigApplied": "0001-01-01T00:00:00",
      "message": "{\"OperatorMessage\":null,\"ClusterState\":null}",
      "messageLevel": "3"
      },
      "configurationProtectedSettings": {},
      "enableHelmOperator": false,
      "helmOperatorProperties": null,
      "id": "/subscriptions/<sub id>/resourceGroups/<group name>/providers/Microsoft.Kubernetes/connectedClusters/<cluster name>/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/cluster-config",
      "name": "cluster-config",
      "operatorInstanceName": "cluster-config",
      "operatorNamespace": "cluster-config",
      "operatorParams": "--git-readonly",
      "operatorScope": "cluster",
      "operatorType": "Flux",
      "provisioningState": "Succeeded",
      "repositoryPublicKey": "",
      "repositoryUrl": "https://github.com/Azure/arc-k8s-demo",
      "resourceGroup": "MyRG",
      "sshKnownHostsContents": "",
      "systemData": {
        "createdAt": "2020-11-24T21:22:01.542801+00:00",
        "createdBy": null,
        "createdByType": null,
        "lastModifiedAt": "2020-11-24T21:22:01.542801+00:00",
        "lastModifiedBy": null,
        "lastModifiedByType": null
      },
      "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
    }
    

Nyilvános Git-adattár használata

Paraméter Formátum
--repository-url http[s]://server/repo[.git]

Privát Git-adattár használata SSH-val és Fluxszal létrehozott kulcsokkal

Adja hozzá a Flux által létrehozott nyilvános kulcsot a Git-szolgáltató felhasználói fiókjához. Ha a kulcsot a felhasználói fiók helyett az adattárhoz adja hozzá, használja git@ az URL-cím helyett user@ .

További részletekért ugorjon a Konfiguráció alkalmazása privát Git-adattárból szakaszra.

Paraméter Formátum Jegyzetek
--repository-url ssh://user@server/repo[.git] vagy user@server:repo[.git] git@ lecserélheti a user@

Privát Git-adattár használata SSH-val és felhasználó által megadott kulcsokkal

Közvetlenül vagy egy fájlban adja meg a saját titkos kulcsát. A kulcsnak PEM formátumban kell lennie, és új vonallal (\n) kell végződnie.

Adja hozzá a társított nyilvános kulcsot a Git-szolgáltató felhasználói fiókjához. Ha a kulcsot a felhasználói fiók helyett az adattárhoz adja hozzá, használja git@ a következő helyett: user@.

További részletekért ugorjon a Konfiguráció alkalmazása privát Git-adattárból szakaszra.

Paraméter Formátum Jegyzetek
--repository-url ssh://user@server/repo[.git] vagy user@server:repo[.git] git@ lecserélheti a user@
--ssh-private-key base64 kódolású kulcs PEM formátumban Kulcs közvetlen megadása
--ssh-private-key-file a helyi fájl teljes elérési útja Adja meg a PEM-formátumú kulcsot tartalmazó helyi fájl teljes elérési útját

Privát Git-gazdagép használata SSH-val és felhasználó által biztosított, ismert gazdagépekkel

A Flux-operátor az ismert gazdagépek fájljában tárolja a gyakori Git-gazdagépek listáját a Git-adattár SSH-kapcsolat létrehozása előtti hitelesítéséhez. Ha nem gyakori Git-adattárat vagy saját Git-gazdagépet használ, megadhatja a gazdagépkulcsot, hogy a Flux azonosítani tudja az adattárat.

A titkos kulcsokhoz hasonlóan közvetlenül vagy egy fájlban is megadhatja known_hosts tartalmát. Ha saját tartalmat ad meg, használja a known_hosts tartalomformátum specifikációit, valamint a fenti SSH-kulcsforgatókönyvek egyikét.

Paraméter Formátum Jegyzetek
--repository-url ssh://user@server/repo[.git] vagy user@server:repo[.git] git@ lecserélheti a user@
--ssh-known-hosts base64 kódolású Ismert gazdagépek tartalmának közvetlen biztosítása
--ssh-known-hosts-file a helyi fájl teljes elérési útja Ismert gazdagépek tartalmának megadása helyi fájlban

Privát Git-adattár használata HTTPS-lel

Paraméter Formátum Jegyzetek
--repository-url https://server/repo[.git] HTTPS alapszintű hitelesítéssel
--https-user nyers vagy base64 kódolású HTTPS-felhasználónév
--https-key nyers vagy base64 kódolású HTTPS személyes hozzáférési jogkivonat vagy jelszó

Megjegyzés

  • A Helm operátordiagram 1.2.0-s vagy újabb verziója támogatja a HTTPS Helm-kiadás privát hitelesítését.
  • A HTTPS Helm-kiadás nem támogatott az AKS által felügyelt fürtök esetében.
  • Ha a Fluxnak szüksége van a Git-adattár proxyn keresztüli eléréséhez, frissítenie kell az Azure Arc-ügynököket a proxybeállításokkal. További információ: Csatlakozás kimenő proxykiszolgáló használatával.

További paraméterek

A konfiguráció testreszabása a következő választható paraméterekkel:

Paraméter Leírás
--enable-helm-operator Váltson a Helm-diagramok üzembe helyezésének támogatásához.
--helm-operator-params Diagramértékek a Helm-operátorhoz (ha engedélyezve van). Például: --set helm.versions=v3.
--helm-operator-chart-version A Helm-operátor diagramverziója (ha engedélyezve van). Használja az 1.2.0-s vagy újabb verziót. Alapértelmezett: '1.2.0'.
--operator-namespace Az operátor névterének neve. Alapértelmezett: 'default'. Max. 23 karakter.
--operator-params Az operátor paraméterei. Csak szimpla idézőjelek között adható meg. Például: --operator-params='--git-readonly --sync-garbage-collection --git-branch=main'

A következőben --operator-paramstámogatott beállítások:

Beállítás Leírás
--git-branch A Kubernetes-jegyzékfájlokhoz használandó Git-adattár ága. Az alapértelmezett érték a "master". Az újabb adattárak gyökérága nevű main, ebben az esetben be kell állítania a következőt --git-branch=main: .
--git-path Relatív elérési út a Flux Git-adattárában a Kubernetes-jegyzékfájlok megkereséséhez.
--git-readonly A Git-adattár írásvédettnek minősül. A Flux nem próbál írni rá.
--manifest-generation Ha engedélyezve van, a Flux megkeresi a .flux.yaml fájlt, és futtatja a Kustomize-t vagy más jegyzékgenerátorokat.
--git-poll-interval Az az időszak, amikor a Git-adattárat lekérdezi az új véglegesítések esetében. Az alapértelmezett érték 5m (5 perc).
--sync-garbage-collection Ha engedélyezve van, a Flux törli az általa létrehozott, de a Gitben már nem található erőforrásokat.
--git-label Címke a szinkronizálási folyamat nyomon követéséhez. A Git-ág címkézésére szolgál. Az alapértelmezett szint a flux-sync.
--git-user A Git-véglegesítés felhasználóneve.
--git-email Email a Git véglegesítéséhez.

Ha nem szeretné, hogy a Flux az adattárba írjon, vagy --git-user--git-email nincs beállítva, akkor --git-readonly a rendszer automatikusan beállítja.

További információt a Flux dokumentációjában talál.

Megjegyzés

A Flux alapértelmezés szerint a master git-adattár ágából szinkronizál. Az újabb Git-adattárakban azonban a nevű gyökérág maintalálható, ebben az esetben a --operator-params értéket kell megadnia --git-branch=main .

Tipp

A konfigurációt az Azure Arc-kompatibilis Kubernetes-erőforrás GitOps lapján, a Azure Portal hozhatja létre.

A konfiguráció ellenőrzése

Az Azure CLI használatával ellenőrizze, hogy a konfiguráció sikeresen létrejött-e.

az k8s-configuration show --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters

A konfigurációs erőforrás megfelelőségi állapottal, üzenetekkel és hibakeresési információkkal frissül.

{
  "complianceStatus": {
    "complianceState": "Installed",
    "lastConfigApplied": "2020-12-10T18:26:52.801000+00:00",
    "message": "...",
    "messageLevel": "Information"
  },
  "configurationProtectedSettings": {},
  "enableHelmOperator": false,
  "helmOperatorProperties": {
    "chartValues": "",
    "chartVersion": ""
  },
  "id": "/subscriptions/<sub id>/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/cluster-config",
  "name": "cluster-config",
  "operatorInstanceName": "cluster-config",
  "operatorNamespace": "cluster-config",
  "operatorParams": "--git-readonly",
  "operatorScope": "cluster",
  "operatorType": "Flux",
  "provisioningState": "Succeeded",
  "repositoryPublicKey": "...",
  "repositoryUrl": "git://github.com/Azure/arc-k8s-demo.git",
  "resourceGroup": "AzureArcTest",
  "sshKnownHostsContents": null,
  "systemData": {
    "createdAt": "2020-12-01T03:58:56.175674+00:00",
    "createdBy": null,
    "createdByType": null,
    "lastModifiedAt": "2020-12-10T18:30:56.881219+00:00",
    "lastModifiedBy": null,
    "lastModifiedByType": null
},
  "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}

Konfiguráció létrehozásakor vagy frissítésekor néhány dolog történik:

  1. Az Azure Arc config-agent figyeli az Azure Resource Manager az új vagy frissített konfigurációkat (Microsoft.KubernetesConfiguration/sourceControlConfigurations), és észreveszi az új Pending konfigurációt.
  2. A config-agent beolvassa a konfigurációs tulajdonságokat, és létrehozza a célnévteret.
  3. Az Azure Arc controller-manager létrehoz egy Kubernetes-szolgáltatásfiókot, és leképezi a ClusterRoleBinding vagy a RoleBinding szolgáltatásra a megfelelő engedélyekhez (cluster vagy namespace hatókörhöz). Ezután üzembe helyezi a példányát.flux
  4. Ha az SSH-t Flux által generált kulcsokkal használja, létrehoz egy SSH-kulcsot, flux és naplózza a nyilvános kulcsot.
  5. A config-agent jelentés állapota vissza a konfigurációs erőforráshoz az Azure-ban.

A kiépítési folyamat során a konfigurációs erőforrás néhány állapotváltozáson halad át. A folyamat előrehaladásának monitorozása a az k8s-configuration show ... fenti paranccsal:

Szakasz módosítása Description
complianceStatus->Pending A kezdeti és a folyamatban lévő állapotot jelöli.
complianceStatus ->Installed config-agent sikeresen konfigurálta a fürtöt, és hiba nélkül üzembe helyezte flux .
complianceStatus ->Failed config-agent hiba történt az üzembe helyezés során flux. A részletek a válasz törzsében complianceStatus.message találhatók.

Konfiguráció alkalmazása privát Git-adattárból

Ha privát Git-adattárat használ, konfigurálnia kell az SSH nyilvános kulcsát az adattárban. A megadott vagy a Flux hozza létre az SSH nyilvános kulcsát. A nyilvános kulcsot konfigurálhatja az adott Git-adattár vagy azon a Git-felhasználó esetében, amely hozzáféréssel rendelkezik az adattárhoz.

Saját nyilvános kulcs lekérése

Ha saját SSH-kulcsokat hozott létre, akkor már rendelkezik titkos és nyilvános kulcsokkal.

Nyilvános kulcs lekérése az Azure CLI használatával

Ha a Flux hozza létre a kulcsokat, használja az alábbiakat az Azure CLI-ben.

az k8s-configuration show --resource-group <resource group name> --cluster-name <connected cluster name> --name <configuration name> --cluster-type connectedClusters --query 'repositoryPublicKey' 
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAREDACTED"

Nyilvános kulcs lekérése az Azure Portalról

Ha a Flux létrehozza a kulcsokat, tekintse át az alábbi lépéseket Azure Portal.

  1. Az Azure Portalon keresse meg a csatlakoztatott fürterőforrást.
  2. Az erőforrás oldalán válassza a "GitOps" lehetőséget, és tekintse meg a fürt konfigurációinak listáját.
  3. Válassza ki azt a konfigurációt, amely a privát Git-adattárat használja.
  4. A megnyíló környezeti ablakban másolja ki az adattár nyilvános kulcsát az ablak alján.

Nyilvános kulcs hozzáadása a GitHub használatával

Használja az alábbi lehetőségek egyikét:

  • 1. lehetőség: Nyilvános kulcs hozzáadása a felhasználói fiókhoz (a fiókban lévő összes adattárra vonatkozik):

    1. Nyissa meg a GitHubot, és kattintson a profil ikonjára az oldal jobb felső sarkában.
    2. Kattintson a Settings (Beállítások) lehetőségre.
    3. Kattintson az SSH- és GPG-kulcsokra.
    4. Kattintson az Új SSH-kulcs elemre.
    5. Adjon meg egy címet.
    6. Illessze be a nyilvános kulcsot idézőjelek nélkül.
    7. Kattintson az SSH-kulcs hozzáadása elemre.
  • 2. lehetőség: A nyilvános kulcs üzembehelyezési kulcsként való hozzáadása a Git-adattárhoz (csak erre az adattárra vonatkozik):

    1. Nyissa meg a GitHubot, és keresse meg az adattárat.
    2. Kattintson a Settings (Beállítások) lehetőségre.
    3. Kattintson a Kulcsok üzembe helyezése elemre.
    4. Kattintson az Üzembe helyezési kulcs hozzáadása elemre.
    5. Adjon meg egy címet.
    6. Jelölje be az Írási hozzáférés engedélyezése jelölőnégyzetet.
    7. Illessze be a nyilvános kulcsot idézőjelek nélkül.
    8. Kattintson a Kulcs hozzáadása elemre.

Nyilvános kulcs hozzáadása Azure DevOps-adattár használatával

Az alábbi lépések segítségével adhatja hozzá a kulcsot az SSH-kulcsaihoz:

  1. A jobb felső sarokban (a profilkép mellett) található Felhasználói beállítások területen kattintson az SSH nyilvános kulcsok elemre.
  2. Válassza az + Új kulcs lehetőséget.
  3. Adjon meg egy nevet.
  4. Illessze be a nyilvános kulcsot idézőjelek nélkül.
  5. Kattintson a Hozzáadás parancsra.

A Kubernetes-konfiguráció ellenőrzése

A példány telepítése után config-agent a flux Git-adattárban tárolt erőforrásoknak a fürtbe kell áramlaniuk. Ellenőrizze, hogy a névterek, üzemelő példányok és erőforrások a következő paranccsal lettek-e létrehozva:

kubectl get ns --show-labels
NAME              STATUS   AGE    LABELS
azure-arc         Active   24h    <none>
cluster-config    Active   177m   <none>
default           Active   29h    <none>
itops             Active   177m   fluxcd.io/sync-gc-mark=sha256.9oYk8yEsRwWkR09n8eJCRNafckASgghAsUWgXWEQ9es,name=itops
kube-node-lease   Active   29h    <none>
kube-public       Active   29h    <none>
kube-system       Active   29h    <none>
team-a            Active   177m   fluxcd.io/sync-gc-mark=sha256.CS5boSi8kg_vyxfAeu7Das5harSy1i0gc2fodD7YDqA,name=team-a
team-b            Active   177m   fluxcd.io/sync-gc-mark=sha256.vF36thDIFnDDI2VEttBp5jgdxvEuaLmm7yT_cuA2UEw,name=team-b

Láthatjuk, hogy , team-ateam-b, itopsés cluster-config névterek lettek létrehozva.

Az flux operátor a konfigurációs erőforrás utasítása szerint lett üzembe helyezve cluster-config a névtérben:

kubectl -n cluster-config get deploy  -o wide
NAME             READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                         SELECTOR
cluster-config   1/1     1            1           3h    flux         docker.io/fluxcd/flux:1.16.0   instanceName=cluster-config,name=flux
memcached        1/1     1            1           3h    memcached    memcached:1.5.15               name=memcached

További feltárás

A konfigurációs adattár részeként üzembe helyezett többi erőforrást a következő módon ismerheti meg:

kubectl -n team-a get cm -o yaml
kubectl -n itops get all

Az erőforrások eltávolítása

Konfiguráció törlése az Azure CLI vagy Azure Portal használatával. A törlési parancs futtatása után a konfigurációs erőforrás azonnal törlődik az Azure-ban. A társított objektumok teljes törlésének a fürtből 10 percen belül meg kell történnie. Ha a konfiguráció eltávolításkor meghiúsult állapotban van, a társított objektumok teljes törlése akár egy órát is igénybe vehet.

Ha egy hatókörrel rendelkező namespace konfigurációt töröl, az Azure Arc nem törli a névteret a meglévő számítási feladatok megszakításának elkerülése érdekében. Szükség esetén manuálisan is törölheti ezt a névteret a használatával kubectl.

az k8s-configuration delete --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters

Megjegyzés

A fürt azon módosításai, amelyek a követett Git-adattárból történő üzembe helyezések eredményeként történtek, nem törlődnek a konfiguráció törlésekor.

Következő lépések

Folytassa a következő oktatóanyaggal, amelyből megtudhatja, hogyan implementálhatja a CI/CD-t a GitOps használatával.