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


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 Kuberneteshez és az Azure Kubernetes Service-fürtökhöz; nyissa meg a GitOps és a Flux v2 oktatóanyagát. 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 kezdődően nem hozhat létre új Flux v1-alapú fürtkonfigurációs erőforrásokat.

Ebben az oktatóanyagban Flux v1-konfigurációkat fog alkalmazni a GitOps használatával 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 kiépítenek 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
  • Felfejlődés: arc-k8s-demo
  • ConfigMap: 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 legfeljebb 5 percet vesz igénybe.

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.

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 Kuberneteshez és az Azure Kubernetes Service-fürtökhöz; nyissa meg a GitOps és a Flux v2 oktatóanyagát. 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 kezdődően nem hozhat létre új Flux v1-alapú fürtkonfigurációs erőforrásokat.

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 flux 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 rendszer a felhasználói fiók helyett hozzáadja a kulcsot az adattárhoz, használja git@ az URL-cím helyett user@ .

További részletekért ugorjon az Apply configuration from a private Git repository section (Konfiguráció alkalmazása egy 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@ helyettesítheti 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 kulcs a felhasználói fiók helyett az adattárhoz van hozzáadva, használja git@ a következő helyett user@: .

További részletekért ugorjon az Apply configuration from a private Git repository section (Konfiguráció alkalmazása egy 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@ helyettesítheti 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átumkulcsot 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 fájlban is megadhatja known_hosts tartalmát. Saját tartalom biztosításakor 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@ helyettesítheti 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ó

Feljegyzés

  • A Helm operátordiagram 1.2.0+-os verziója támogatja a HTTPS Helm privát hitelesítését.
  • A HTTPS Helm-kiadás nem támogatott a felügyelt AKS-fürtök esetében.
  • Ha a Fluxnak a Proxyn keresztül kell elérnie a Git-adattárat, 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áltás a Helm-diagramtelepítések támogatásának engedélyezéséhez.
--helm-operator-params A Helm-operátor diagramértékei (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 verziót. Alapértelmezett: '1.2.0'.
--operator-namespace Az operátor névterének neve. Alapértelmezett: 'default'. Max: 23 karakter.
--operator-params Operátor paraméterei. Egy idézőjelen belül kell megadni. Például: --operator-params='--git-readonly --sync-garbage-collection --git-branch=main'

A következő lehetőségek támogatottak --operator-params:

Lehetőség Leírás
--git-branch A Kubernetes-jegyzékekhez használható Git-adattár ága. Az alapértelmezett érték a "master". Az újabb adattárak gyökérága el van nevezve main, ebben az esetben be kell állítania --git-branch=main.
--git-path A Flux Git-adattárában található relatív elérési út a Kubernetes-jegyzékek megkereséséhez.
--git-readonly A Git-adattár írásvédettnek minősül. A Flux nem próbál meg írni hozzá.
--manifest-generation Ha engedélyezve van, a Flux megkeresi a .flux.yaml fájlt, és Kustomize-t vagy más jegyzékgenerátorokat futtat.
--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 a létrehozott, de a Gitben már nem található erőforrásokat.
--git-label Címke a szinkronizálás előrehaladásának 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 A Git véglegesítéséhez használandó e-mail.

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

További információkért tekintse meg a Flux dokumentációját.

Feljegyzés

Alapértelmezés szerint a fluxus a master git-adattár ágából szinkronizálódik. Az újabb git-adattárakban azonban a gyökérág neve mainszerepel, ebben az esetben be kell állítania --git-branch=main a --operator-params értéket.

Tipp.

Az Azure Portalon az Azure Arc-kompatibilis Kubernetes-erőforrás GitOps lapján hozhat létre konfigurációt.

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 Managert az új vagy frissített konfigurációkMicrosoft.KubernetesConfiguration/sourceControlConfigurations () esetében, és észleli az új Pending konfigurációt.
  2. A config-agent rendszer 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 ClusterRoleBindingre vagy a RoleBindingre a megfelelő engedélyek (cluster vagy namespace hatókör) érdekében. Ezután üzembe helyezi a példányt.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ések á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 át fog haladni. A folyamat figyelése a az k8s-configuration show ... fenti paranccsal:

Szakasz módosítása Leírás
complianceStatus->Pending A kezdeti és a folyamatban lévő állapotokat 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éskor flux. A részleteket a válasz törzse complianceStatus.message tartalmazza.

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. Ön adja meg, vagy a Flux létrehozza 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ábbiakat az Azure Portalon.

  1. Az Azure Portalon keresse meg a csatlakoztatott fürterőforrást.
  2. Az erőforráslapon 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 ikonra a lap 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-kulcsra.
    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 az Üzembe helyezési kulcsokra.
    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 Hozzáadás gombra.

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 csoportban kattintson az SSH nyilvános kulcsára.
  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 gombra.

A Kubernetes konfigurációjának ellenőrzése

A példány telepítése után config-agent a flux Git-adattárban tárolt erőforrásoknak elkezdenek a fürtbe áramlani. Ellenőrizze, hogy a névterek, az üzemelő példányok és az 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-aa , team-b, itopsés cluster-config névterek lettek létrehozva.

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

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 egyéb erőforrásokat 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 az 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 sikertelen állapotban van, a társított objektumok teljes törlése akár egy órát is igénybe vehet.

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

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

Feljegyzés

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

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 Kuberneteshez és az Azure Kubernetes Service-fürtökhöz; nyissa meg a GitOps és a Flux v2 oktatóanyagát. 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 kezdődően nem hozhat létre új Flux v1-alapú fürtkonfigurációs erőforrásokat.

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.