Oktatóanyag: CI/CD implementálása a GitOps használatával Az Azure Arc-kompatibilis Kubernetes-fürtök használatával

Fontos

Ez az oktatóanyag a GitOps és a Flux 1 verziót használja. 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 GitOpst a Flux v2-vel használó 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 kezdődően nem hozhat létre új Flux v1-alapú fürtkonfigurációs erőforrásokat.

Ebben az oktatóanyagban egy CI/CD-megoldást fog beállítani a GitOps és az Azure Arc-kompatibilis Kubernetes-fürtök használatával. Az Azure Vote mintaalkalmazás használatával a következőt fogja használni:

  • Azure Arc-kompatibilis Kubernetes-fürt létrehozása.
  • Csatlakozás az alkalmazást és a GitOps-adattárakat az Azure-adattárakba.
  • CI-/CD-folyamatok importálása.
  • Csatlakozás az Azure Container Registryt (ACR) az Azure DevOpsba és a Kubernetesbe.
  • Környezeti változócsoportok létrehozása.
  • A környezetek és stage a dev környezetek üzembe helyezése.
  • Tesztelje az alkalmazáskörnyezeteket.

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Azure Cloud Shell

Az Azure által üzemeltetett Azure Cloud Shell egy interaktív felület, amelyet a böngészőből használhat. A Bash vagy a PowerShell segítségével is használhatja a Cloud Shellt az Azure-szolgáltatásokhoz. A Cloud Shell előre telepített parancsaival futtathatja a jelen cikkben szereplő kódot anélkül, hogy bármit telepítenie kellene a helyi környezetben.

Az Azure Cloud Shell indítása:

Lehetőség Példa/hivatkozás
Válassza a Kipróbálás lehetőséget egy kód vagy parancsblokk jobb felső sarkában. A Kipróbálás lehetőség választása nem másolja automatikusan a kódot vagy a parancsot a Cloud Shellbe. Screenshot that shows an example of Try It for Azure Cloud Shell.
Látogasson el a https://shell.azure.com webhelyre, vagy kattintson a Cloud Shell indítása gombra a böngészőben. Button to launch Azure Cloud Shell.
Az Azure Portal jobb felső sarkában található menüben kattintson a Cloud Shell gombra. Screenshot that shows the Cloud Shell button in the Azure portal

Az Azure Cloud Shell használata:

  1. Indítsa el a Cloud Shellt.

  2. A kód vagy parancs másolásához kattintson a Másolás gombra egy kódblokkon (vagy parancsblokkon).

  3. Illessze be a kódot vagy parancsot a Cloud Shell-munkamenetbe a Windows és Linux rendszeren a Ctrl Shift+V billentyűkombinációval+, vagy a Cmd+Shift+V macOS rendszeren való kiválasztásával.

  4. A kód vagy parancs futtatásához válassza az Enter lehetőséget .

Mielőtt elkezdené

Ez az oktatóanyag feltételezi az Azure DevOps, az Azure Repos és a Pipelines és az Azure CLI ismeretét.

  • Jelentkezzen be az Azure DevOps Servicesbe.

  • Az előző oktatóanyagból megtudhatja, hogyan helyezheti üzembe a GitOpst a CI/CD-környezetben.

  • A funkció előnyeinek és architektúrájának megismerése.

  • Ellenőrizze, hogy rendelkezik-e:

  • Telepítse a következő Azure Arc-kompatibilis Kubernetes CLI-bővítményeket az = 1.0.0 verziókhoz >:

    az extension add --name connectedk8s
    az extension add --name k8s-configuration
    
    • Ha frissíteni szeretné ezeket a bővítményeket a legújabb verzióra, futtassa a következő parancsokat:

      az extension update --name connectedk8s
      az extension update --name k8s-configuration
      

Alkalmazás- és GitOps-adattárak importálása az Azure-adattárakba

Importáljon egy alkalmazás-adattárat és egy GitOps-adattárat az Azure-adattárakba. Ebben az oktatóanyagban használja a következő példaadattárat:

További információ a Git-adattárak importálásáról.

Feljegyzés

Az alkalmazások és a GitOps-adattárak két különálló adattárának importálása és használata javíthatja a biztonságot és az egyszerűséget. Az alkalmazás és a GitOps-adattárak engedélyei és láthatósága egyenként hangolható. Előfordulhat például, hogy a fürt rendszergazdája nem találja a fürt kívánt állapota szempontjából releváns alkalmazáskód-módosításokat. Ezzel szemben az alkalmazásfejlesztőnek nem kell ismernie az egyes környezetek adott paramétereit – elegendő lehet a paraméterek lefedettségét biztosító tesztértékek készlete.

A GitOps-adattár Csatlakozás

Az alkalmazás folyamatos üzembe helyezéséhez csatlakoztassa az alkalmazás-adattárat a fürthöz a GitOps használatával. Az arc-cicd-demo-gitops GitOps-adattár tartalmazza azokat az alapvető erőforrásokat, amelyek segítségével az alkalmazás üzembe helyezése és futtatása az arc-cicd-cluster fürtön.

A kezdeti GitOps-adattár csak egy jegyzékfájlt tartalmaz, amely létrehozza az üzembehelyezési környezeteknek megfelelő fejlesztői és fázisnévtereket.

A létrehozott GitOps-kapcsolat automatikusan:

  • Szinkronizálja a jegyzékfájlokat a jegyzékkönyvtárban.
  • Frissítse a fürt állapotát.

A CI/CD munkafolyamat további jegyzékfájlokkal tölti fel a jegyzékkönyvtárat az alkalmazás üzembe helyezéséhez.

  1. Hozzon létre egy új GitOps-kapcsolatot az újonnan importált arc-cicd-demo-gitops adattárhoz az Azure-adattárakban.

    az k8s-configuration create \
       --name cluster-config \
       --cluster-name arc-cicd-cluster \
       --resource-group myResourceGroup \
       --operator-instance-name cluster-config \
       --operator-namespace cluster-config \
       --repository-url https://dev.azure.com/<Your organization>/<Your project>/_git/arc-cicd-demo-gitops \
       --https-user <Azure Repos username> \
       --https-key <Azure Repos PAT token> \
       --scope cluster \
       --cluster-type connectedClusters \
       --operator-params='--git-readonly --git-path=arc-cicd-cluster/manifests'
    
  2. Győződjön meg arról, hogy a Flux csak a arc-cicd-cluster/manifests könyvtárat használja alapútvonalként. Adja meg az elérési utat a következő operátorparaméter használatával:

    --git-path=arc-cicd-cluster/manifests

    Feljegyzés

    Ha HTTPS-kapcsolati sztring használ, és csatlakozási problémákat tapasztal, hagyja ki a felhasználónév előtagot az URL-címből. Például https://alice@dev.azure.com/contoso/project/_git/arc-cicd-demo-gitops el kell alice@ távolítani. Ehelyett --https-user a felhasználót adja meg, például --https-user alice.

  3. Ellenőrizze az üzembe helyezés állapotát az Azure Portalon.

    • Ha sikeres, a fürtben létrehozott névterek és stage névterek is dev megjelennek.

A CI/CD-folyamatok importálása

Most, hogy szinkronizált egy GitOps-kapcsolatot, importálnia kell a jegyzékeket létrehozó CI-/CD-folyamatokat.

Az alkalmazás adattára tartalmaz egy .pipeline mappát, amely tartalmazza a PRS-hez, a CI-hez és a CD-hez használni kívánt folyamatokat. Importálja és nevezze át a mintaadattárban megadott három folyamatot:

Folyamatfájl neve Leírás
.pipelines/az-vote-pr-pipeline.yaml Az alkalmazás PR-folyamata, neve arc-cicd-demo-src PR
.pipelines/az-vote-ci-pipeline.yaml Az alkalmazás CI-folyamata, neve arc-cicd-demo-src CI
.pipelines/az-vote-cd-pipeline.yaml Az alkalmazás CD-folyamata arc-cicd-demo-src CD néven

az ACR Csatlakozás

A folyamatok és a fürt egyaránt az ACR-t használják a Docker-rendszerképek tárolására és lekérésére.

ACR Csatlakozás Azure DevOpsba

A CI-folyamat során üzembe helyezi az alkalmazástárolókat egy beállításjegyzékben. Először hozzon létre egy Azure-szolgáltatáskapcsolatot:

  1. Az Azure DevOpsban nyissa meg a Szolgáltatáskapcsolatok lapot a projektbeállítások lapon. A TFS-ben nyissa meg a Szolgáltatások lapot a felső menüsáv Beállítások ikonjáról.
  2. Válassza az + Új szolgáltatáskapcsolat lehetőséget, és válassza ki a szükséges szolgáltatáskapcsolat típusát.
  3. Adja meg a szolgáltatáskapcsolat paramétereit. Ebben az oktatóanyagban:
    • Adja a szolgáltatáskapcsolatnak az arc-demo-acr nevet.
    • Erőforráscsoportként válassza a myResourceGroup lehetőséget.
  4. Válassza ki a hozzáférési engedély megadását az összes folyamathoz.
    • Ez a beállítás engedélyezi a YAML-folyamatfájlokat a szolgáltatáskapcsolatokhoz.
  5. Kattintson az OK gombra a kapcsolat létrehozásához.

Csatlakozás ACR-t a Kubernetesbe

Engedélyezze a Kubernetes-fürtnek, hogy képeket kérhessen le az ACR-ből. Ha privát, hitelesítésre lesz szükség.

ACR Csatlakozás meglévő AKS-fürtökre

Integráljon egy meglévő ACR-t meglévő AKS-fürtökkel az alábbi paranccsal:

az aks update -n arc-cicd-cluster -g myResourceGroup --attach-acr arc-demo-acr

Kép lekéréses titkos kód létrehozása

Ha nem AKS-t és helyi fürtöket szeretne csatlakoztatni az ACR-hez, hozzon létre egy kép lekéréses titkos kódját. A Kubernetes rendszerkép-lekéréses titkos kódokat használ a beállításjegyzék hitelesítéséhez szükséges információk tárolásához.

Hozzon létre egy kép lekérési titkos kulcsát az alábbi kubectl paranccsal. Ismételje meg mind a névterek, mind a devstage névterek esetében.

kubectl create secret docker-registry <secret-name> \
    --namespace <namespace> \
    --docker-server=<container-registry-name>.azurecr.io \
    --docker-username=<service-principal-ID> \
    --docker-password=<service-principal-password>

Az imagePullSecret minden podhoz való beállításának elkerülése érdekében fontolja meg az imagePullSecret hozzáadását a szolgáltatásfiókhoz a névterekben és stage a dev névterekben. További információért tekintse meg a Kubernetes-oktatóanyagot .

Környezeti változócsoportok létrehozása

Alkalmazás-adattár változócsoportja

Hozzon létre egy az-vote-app-dev nevű változócsoportot. Adja meg az alábbi értékeket:

Változó Érték
AZ_ACR_NAME (például az ACR-példány azurearctest.azurecr.io)
AZURE_SUBSCRIPTION (az Azure Service Csatlakozás ion, amelynek arc-demo-acr-nek kell lennie az oktatóanyag korábbi szakaszából)
AZURE_VOTE_IMAGE_REPO Az Azure Vote Alkalmazás adattárának teljes elérési útja, például azurearctest.azurecr.io/azvote
ENVIRONMENT_NAME Dev
MANIFESTS_BRANCH master
MANIFESTS_FOLDER azure-vote-manifests
MANIFESTS_REPO arc-cicd-demo-gitops
ORGANIZATION_NAME Az Azure DevOps-szervezet neve
PROJECT_NAME GitOps-projekt neve az Azure DevOpsban
REPO_URL A GitOps-adattár teljes URL-címe
SRC_FOLDER azure-vote
TARGET_CLUSTER arc-cicd-cluster
TARGET_NAMESPACE dev

Környezeti változócsoport szakasza

  1. Klónozza az az-vote-app-dev változócsoportot.
  2. Módosítsa a nevet az az-vote-app-stage-ra.
  3. Győződjön meg a következő értékekről a megfelelő változókhoz:
Változó Érték
ENVIRONMENT_NAME Szakasz
TARGET_NAMESPACE stage

Most már készen áll a dev környezetekben való stage üzembe helyezésre.

További engedélyek megadása a buildelési szolgáltatáshoz

A CD-folyamat a futó build biztonsági jogkivonatával hitelesíti magát a GitOps-adattárban. További engedélyekre van szükség ahhoz, hogy a folyamat létrehozhasson egy új ágat, leküldéses módosításokat és lekéréses kérelmeket hozhasson létre.

  1. Lépjen az Project settings Azure DevOps projekt főoldalára.
  2. Válassza ki Repositories.
  3. Válassza ki <GitOps Repo Name>.
  4. Válassza ki Security.
  5. <Project Name> Build Service (<Organization Name>)Az , engedélyezés Contributeés Contribute to pull requestsCreate branch.

További információkért lásd:

A fejlesztői környezet üzembe helyezése első alkalommal

A CI- és CD-folyamatok létrehozásával futtassa a CI-folyamatot az alkalmazás első üzembe helyezéséhez.

CI-folyamat

A kezdeti CI-folyamat futtatása során erőforrás-engedélyezési hiba jelenhet meg a szolgáltatáskapcsolat nevének beolvasása során.

  1. Ellenőrizze, hogy a elérni kívánt változó AZURE_SUBSCRIPTION-e.
  2. Engedélyezze a használatot.
  3. Futtassa újra a folyamatot.

A CI-folyamat:

  • Biztosítja, hogy az alkalmazás módosítása minden automatikus minőségi ellenőrzést elvégez az üzembe helyezéshez.
  • Végez olyan további ellenőrzést, amely nem fejezhető be a PR-folyamatban.
    • A GitOpsra jellemzően a folyamat a CD-folyamat által üzembe helyezett véglegesítés összetevőit is közzéteszi.
  • Ellenőrzi, hogy a Docker-rendszerkép megváltozott-e, és az új rendszerkép le van-e küldve.

CD-folyamat

A kezdeti CD-folyamatfuttatás során a rendszer kérni fogja, hogy adjon hozzáférést a folyamatnak a GitOps-adattárhoz. Válassza a Nézet lehetőséget, amikor a rendszer kéri, hogy a folyamatnak engedélyre van szüksége egy erőforrás eléréséhez. Ezután válassza az Engedélyezés lehetőséget, hogy engedélyt adjon a GitOps-adattár használatára a folyamat aktuális és jövőbeli futtatásaihoz.

A ci-folyamat sikeres futtatása aktiválja a CD-folyamatot az üzembe helyezési folyamat befejezéséhez. Az egyes környezetekben növekményesen fog üzembe helyezni.

Tipp.

Ha a CD-folyamat nem aktiválódik automatikusan:

  1. Ellenőrizze, hogy a név megegyezik-e az ág-eseményindítóval a következőben: .pipelines/az-vote-cd-pipeline.yaml
    • A következőnek kellene itt szerepelnie: arc-cicd-demo-src CI.
  2. Futtassa újra a CI-folyamatot.

Miután létrejött a GitOps-adattár sablonja és jegyzékbeli módosítása, a CD-folyamat létrehoz egy véglegesítést, leküldi, és létrehoz egy pr-t jóváhagyásra.

  1. Nyissa meg a feladat kimenetében Create PR megadott PR-hivatkozást.

  2. Ellenőrizze a GitOps-adattár módosításait. A következőnek kell megjelennie:

    • A Magas szintű Helm-sablon megváltozik.
    • Alacsony szintű Kubernetes-jegyzékek, amelyek a kívánt állapot mögöttes változásait mutatják. A Flux telepíti ezeket a jegyzékeket.
  3. Ha minden jól néz ki, hagyja jóvá és fejezze be a pr-t.

  4. Néhány perc múlva a Flux felveszi a módosítást, és elindítja az üzembe helyezést.

  5. Továbbítsa a portot helyileg, kubectl és győződjön meg arról, hogy az alkalmazás megfelelően működik a következő használatával:

    kubectl port-forward -n dev svc/azure-vote-front 8080:80

  6. Tekintse meg az Azure Vote alkalmazást a böngészőben a következő címen http://localhost:8080/: .

  7. Szavazzon a kedvencekre, és készüljön fel az alkalmazás néhány módosítására.

Környezeti jóváhagyások beállítása

Az alkalmazás üzembe helyezésekor nem csak a kódot vagy a sablonokat módosíthatja, hanem véletlenül rossz állapotba is helyezheti a fürtöt.

Ha a fejlesztői környezet az üzembe helyezés után szünetet mutat, ne lépjen későbbi környezetekbe környezeti jóváhagyásokkal.

  1. Az Azure DevOps-projektben lépjen a védeni kívánt környezetbe.
  2. Navigáljon az erőforrás Jóváhagyások és ellenőrzéséhez.
  3. Válassza a Létrehozás lehetőséget.
  4. Adja meg a jóváhagyókat és egy opcionális üzenetet.
  5. A manuális jóváhagyási ellenőrzés hozzáadásának befejezéséhez válassza ismét a Létrehozás lehetőséget .

További részletekért tekintse meg a jóváhagyási és ellenőrzési oktatóanyagot.

A CD-folyamat következő futtatásakor a folyamat a GitOps PR létrehozása után szünetel. Ellenőrizze, hogy a módosítás megfelelően lett-e szinkronizálva, és megfelel-e az alapvető funkcióknak. Hagyja jóvá az ellenőrzést a folyamatból, és hagyja, hogy a folyamat a következő környezetbe változzon.

Alkalmazás módosítása

Ezzel az alapkonfiguráció-sablonkészlettel és a fürtön lévő állapotot jelképező jegyzékekkel kis módosítást végezhet az alkalmazáson.

  1. Az arc-cicd-demo-src adattárban szerkessze azure-vote/src/azure-vote-front/config_file.cfg a fájlt.

  2. Mivel a "Macskák vs Kutyák" nem kap elég szavazatot, módosítsa a "Tabs vs Spaces" értékre, hogy a szavazatok számát feljebb tudja állítani.

  3. Véglegesítse a módosítást egy új ágban, küldje le, és hozzon létre egy lekéréses kérelmet.

    • Ez az a tipikus fejlesztői folyamat, amely elindítja a CI/CD életciklusát.

PR-érvényesítési folyamat

A PR-folyamat az első védelmi vonal egy hibás változás ellen. Az alkalmazáskódok szokásos minőségi ellenőrzései közé tartozik a linting és a statikus elemzés. A GitOps szempontjából az eredményül kapott infrastruktúra üzembe helyezéséhez is biztosítania kell ugyanazt a minőséget.

Az alkalmazás Dockerfile- és Helm-diagramjai az alkalmazáshoz hasonlóan használhatnak lintinget.

A következő tartományból származó lintingtartomány során észlelt hibák:

  • Helytelenül formázott YAML-fájlok:
  • Ajánlott eljárásokra vonatkozó javaslatok, például az alkalmazás processzor- és memóriakorlátjának beállítása.

Feljegyzés

Ahhoz, hogy a Helm-linting a lehető legjobb lefedettséget nyújthassa egy valós alkalmazásban, olyan értékeket kell helyettesítenie, amelyek ésszerűen hasonlítanak a valós környezetben használt értékekhez.

A folyamat végrehajtása során talált hibák a futtatás teszteredmények szakaszában jelennek meg. Innen a következőkre van lehetőség:

  • Kövesse nyomon a hibatípusok hasznos statisztikáit.
  • Keresse meg az első véglegesítést, amelyen észlelték őket.
  • A verem nyomkövetési stílusának hivatkozásai a hibát okozó kódszakaszokra mutatnak.

Miután a folyamatfuttatás befejeződött, biztosította az alkalmazáskód és az azt üzembe helyező sablon minőségét. Most már jóváhagyhatja és befejezheti a lekéréses kérelmet. A CI újra fut, és újragenerálja a sablonokat és a jegyzékeket, mielőtt elindítja a CD-folyamatot.

Tipp.

Valós környezetben ne felejtsen el ágszabályzatokat beállítani annak biztosítása érdekében, hogy a lekéréses kérelem megfelel-e a minőségi ellenőrzéseknek. További információt a Fiókszabályzatok beállítása című cikkben talál.

CD-folyamat jóváhagyása

Egy sikeres CI-folyamatfuttatás aktiválja a CD-folyamatot az üzembe helyezési folyamat befejezéséhez. A CD-folyamat első alkalommal használhatóhoz hasonlóan az egyes környezetekben növekményesen fog üzembe helyezni. A folyamatnak ezúttal minden üzembe helyezési környezetet jóvá kell hagynia.

  1. Hagyja jóvá az üzembe helyezést a dev környezetben.
  2. Miután létrejött a GitOps-adattár sablonja és jegyzékbeli módosítása, a CD-folyamat létrehoz egy véglegesítést, leküldi, és létrehoz egy pr-t jóváhagyásra.
  3. Nyissa meg a feladatban megadott PR-hivatkozást.
  4. Ellenőrizze a GitOps-adattár módosításait. A következőt kell látnia:
    • A Magas szintű Helm-sablon megváltozik.
    • Alacsony szintű Kubernetes-jegyzékek, amelyek a kívánt állapot mögöttes változásait mutatják.
  5. Ha minden jól néz ki, hagyja jóvá és fejezze be a pr-t.
  6. Várjon, amíg az üzembe helyezés befejeződik.
  7. Alapszintű füsttesztként lépjen az alkalmazás oldalára, és ellenőrizze, hogy a szavazóalkalmazás mostantól a Tabs vs Spaces elemet jeleníti-e meg.
    • Továbbítsa a portot helyileg, kubectl és győződjön meg arról, hogy az alkalmazás megfelelően működik a következő használatával: kubectl port-forward -n dev svc/azure-vote-front 8080:80
    • Tekintse meg az Azure Vote alkalmazást a böngészőben http://localhost:8080/ , és ellenőrizze, hogy a szavazási lehetőségek tabulátorokra és szóközökre változtak-e.
  8. Ismételje meg az 1–7. lépést a stage környezetben.

Az üzembe helyezés befejeződött. Ezzel véget vet a CI/CD-munkafolyamatnak.

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

Ha nem folytatja az alkalmazás használatát, törölje az alábbi lépésekkel rendelkező erőforrásokat:

  1. Törölje az Azure Arc GitOps konfigurációs kapcsolatát:

    az k8s-configuration delete \
    --name cluster-config \
    --cluster-name arc-cicd-cluster \
    --resource-group myResourceGroup \
    --cluster-type connectedClusters
    
  2. Távolítsa el a névteret dev :

    • kubectl delete namespace dev
  3. Távolítsa el a névteret stage :

    • kubectl delete namespace stage

Következő lépések

Ebben az oktatóanyagban egy teljes CI/CD-munkafolyamatot állított be, amely implementálja a DevOpsot az alkalmazásfejlesztéstől az üzembe helyezésig. Az alkalmazás módosításai automatikusan aktiválják az érvényesítést és az üzembe helyezést, manuális jóváhagyással.

A gitOpsról és az Azure Arc-kompatibilis Kubernetes konfigurálásáról bővebben a fogalmi cikkünkben olvashat.