Oktatóanyag: CI/CD implementálása GitOps használatával (Flux v2)

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

  • Azure Arc-kompatibilis Kubernetes- vagy AKS-fürt létrehozása.
  • Csatlakozás az alkalmazást és a GitOps-adattárakat az Azure Reposba vagy a GitHubba.
  • Ci/CD-folyamat implementálása az Azure Pipelines vagy a GitHub használatával.
  • Csatlakozás az Azure Container Registryt az Azure DevOpsba és a Kubernetesbe.
  • Környezeti változócsoportok vagy titkos kódok 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. Képernyőkép az Azure Cloud Shell kipróbálásának példájáról.
Látogasson el a https://shell.azure.com webhelyre, vagy kattintson a Cloud Shell indítása gombra a böngészőben. Gomb az Azure Cloud Shell elindításához.
Az Azure Portal jobb felső sarkában található menüben kattintson a Cloud Shell gombra. Képernyőkép az Azure Portal Cloud Shell gombjáról

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 .

Előfeltételek

Csatlakozás Azure Container Registryt a Kubernetesbe

Engedélyezze a Kubernetes-fürtöt, hogy képeket kérhessen le az Azure Container Registryből. Ha privát, hitelesítésre van szükség.

Az Azure Container Registry Csatlakozás meglévő AKS-fürtökre

Integráljon egy meglévő Azure Container Registryt 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 Azure Container Registryhez, hozzon létre egy rendszerké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ókért tekintse meg a Kubernetes-oktatóanyagot.

A ci/CD vezénylőtől függően folytathatja az utasításokat az Azure DevOpshoz vagy a GitHubhoz.

CI/CD implementálása az Azure DevOpsszal

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

Először végezze el a következő lépéseket:

  • Jelentkezzen be az Azure DevOps Servicesbe.
  • Ellenőrizze, hogy rendelkezik-e "Build Rendszergazda" és "Project Rendszergazda" engedélyekkel az Azure-adattárakhoz és az Azure Pipelineshoz.

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árakat:

  • arc-cicd-demo-src alkalmazásadattár

  • arc-cicd-demo-gitops GitOps-adattár

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 az alkalmazás üzembe helyezéséhez és futtatásához 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árban.

    az k8s-configuration flux create \
       --name cluster-config \
       --cluster-name arc-cicd-cluster \
       --namespace flux-system \
       --resource-group myResourceGroup \
       -u 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 \
       --branch master \
       --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
    

    Tipp.

    Az AKS-fürtökhöz (arcbarát fürt helyett) használja a következőt -cluster-type managedClusters: .

  2. 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.
    • Azt is ellenőrizheti, hogy a fürt Azure Portal lapján létrejön-e egy konfiguráció cluster-config az fGitOps lapon.

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 a PRS-ekhez, a CI-hez és a CD-hez használt folyamatokat tartalmazza. 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 Azure Container Registry Csatlakozás az 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.

Pr szolgáltatáskapcsolat konfigurálása

A CD-folyamat a GitOps-adattárban módosítja a PRs-eket. Ehhez szolgáltatáskapcsolatra van szüksége. A kapcsolat konfigurálása:

  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 a típust Generic .
  3. Adja meg a szolgáltatáskapcsolat paramétereit. Ebben az oktatóanyagban:
    • Kiszolgáló URL-címe https://dev.azure.com/<Your organization>/<Your project>/_apis/git/repositories/arc-cicd-demo-gitops
    • Hagyja üresen a felhasználónevet és a jelszót.
    • Nevezze el a szolgáltatáskapcsolatot azdo-pr-connection névvel.
  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.

A GitOps Csatlakozás or telepítése

  1. GitOps Csatlakozás or-adattár hozzáadása Helm-adattárakhoz:

       helm repo add gitops-connector https://azure.github.io/gitops-connector/
    
  2. Telepítse az összekötőt a fürtre:

       helm upgrade -i gitops-connector gitops-connector/gitops-connector \
          --namespace flux-system \
          --set gitRepositoryType=AZDO \
          --set ciCdOrchestratorType=AZDO \
          --set gitOpsOperatorType=FLUX \
          --set azdoGitOpsRepoName=arc-cicd-demo-gitops \
          --set azdoOrgUrl=https://dev.azure.com/<Your organization>/<Your project> \
          --set gitOpsAppURL=https://dev.azure.com/<Your organization>/<Your project>/_git/arc-cicd-demo-gitops \
          --set orchestratorPAT=<Azure Repos PAT token>
    

    Feljegyzés

    Azure Repos PAT tokenrendelkeznie kell és Code: Full engedélyekkel kell rendelkeznieBuild: Read & execute.

  3. Konfigurálja a Fluxot, hogy értesítéseket küldjön a GitOps-összekötőnek:

    cat <<EOF | kubectl apply -f -
    apiVersion: notification.toolkit.fluxcd.io/v1beta1
    kind: Alert
    metadata:
      name: gitops-connector
      namespace: flux-system
    spec:
      eventSeverity: info
      eventSources:
      - kind: GitRepository
        name: cluster-config
      - kind: Kustomization
        name: cluster-config-cluster-config 
      providerRef:
        name: gitops-connector
    ---
    apiVersion: notification.toolkit.fluxcd.io/v1beta1
    kind: Provider
    metadata:
      name: gitops-connector
      namespace: flux-system
    spec:
      type: generic
      address: http://gitops-connector:8080/gitopsphase
    EOF
    

A telepítés részleteiért tekintse meg a GitOps Csatlakozás or-adattárat.

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

Alkalmazásadattá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
AZURE_SUBSCRIPTION (az Azure Service Csatlakozás ion, amelynek arc-demo-acr-nek kell lennie az oktatóanyag korábbi szakaszából)
AZ_ACR_NAME Azure ACR-név, például arc-demo-acr
ENVIRONMENT_NAME Dev
MANIFESTS_BRANCH master
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
VOTE_APP_TITLE Szavazóalkalmazás
AKS_RESOURCE_GROUP AKS-erőforráscsoport. Az automatizált teszteléshez szükséges.
AKS_NAME AKS-név. Az automatizált teszteléshez szükséges.

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.

Környezetek létrehozása

Az Azure DevOps-projektben hozzon létre Dev és Stage környezeteket. További információ: Környezet létrehozása és megcélzása.

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 Repos/Repositories.
  3. Válassza ki Security.
  4. <Project Name> Build Service (<Organization Name>) Az és a Project Collection Build Service (<Organization Name>) (írja be a keresőmezőbe, ha nem jelenik meg), engedélyezzeContribute, Contribute to pull requestsés Create branch.
  5. Nyissa meg a következőt: Pipelines/Settings
  6. Kikapcsolási Protect access to repositories in YAML pipelines beállítás

További információk:

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 hozzáférést kell adnia 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. Keresse meg a folyamat által a GitOps-adattárba létrehozott pr-t.

  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. A Git Commit állapotának figyelése a Véglegesítési előzmények lapon. Ha ez megtörtént succeeded, a CD-folyamat automatikus tesztelést indít el.

  6. 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
    
  7. Tekintse meg az Azure Vote alkalmazást a böngészőben a következő címen http://localhost:8080/: .

  8. 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 a lépések sorozata a CI/CD életciklusát elindító tipikus fejlesztői folyamat.

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 linting során észlelt hibák a helytelenül formázott YAML-fájloktól az ajánlott eljárásokig terjednek, például az alkalmazás processzor- és memóriakorlátjainak 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ó: Ágszabályzatok beállítása.

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 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. 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.
  4. Ha minden jól néz ki, hagyja jóvá és fejezze be a pr-t.
  5. Várjon, amíg az üzembe helyezés befejeződik.
  6. 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.
  7. Ismételje meg az 1–7. lépést a stage környezetben.

Az üzembe helyezés befejeződött.

Az oktatóanyagban használt CI/CD-munkafolyamatokban implementált összes lépésről és technikáról részletes áttekintést az Azure DevOps GitOps Flow-diagramon talál.

CI/CD implementálása a GitHubbal

Ez az oktatóanyag feltételezi, hogy ismeri a GitHubot és a GitHub Actionst.

Elágaztatási alkalmazás és GitOps-adattárak

Elágaztat egy alkalmazás-adattárat és egy GitOps-adattárat. Ebben az oktatóanyagban használja a következő példaadattárakat:

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 az alkalmazás üzembe helyezéséhez és futtatásához 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 elágazott arc-cicd-demo-gitops adattárhoz a GitHubon.

    az k8s-configuration flux create \
       --name cluster-config \
       --cluster-name arc-cicd-cluster \
       --namespace cluster-config \
       --resource-group myResourceGroup \
       -u  https://github.com/<Your organization>/arc-cicd-demo-gitops.git \
       --https-user <Azure Repos username> \
       --https-key <Azure Repos PAT token> \
       --scope cluster \
       --cluster-type connectedClusters \
       --branch master \
       --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
    
  2. 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 GitOps Csatlakozás or telepítése

  1. GitOps Csatlakozás or-adattár hozzáadása Helm-adattárakhoz:

       helm repo add gitops-connector https://azure.github.io/gitops-connector/
    
  2. Telepítse az összekötőt a fürtre:

       helm upgrade -i gitops-connector gitops-connector/gitops-connector \
          --namespace flux-system \
          --set gitRepositoryType=GITHUB \
          --set ciCdOrchestratorType=GITHUB \
          --set gitOpsOperatorType=FLUX \
          --set gitHubGitOpsRepoName=arc-cicd-demo-src \
          --set gitHubGitOpsManifestsRepoName=arc-cicd-demo-gitops \
          --set gitHubOrgUrl=https://api.github.com/repos/<Your organization> \
          --set gitOpsAppURL=https://github.com/<Your organization>/arc-cicd-demo-gitops/commit \
          --set orchestratorPAT=<GitHub PAT token>
    
  3. Konfigurálja a Fluxot, hogy értesítéseket küldjön a GitOps-összekötőnek:

    cat <<EOF | kubectl apply -f -
    apiVersion: notification.toolkit.fluxcd.io/v1beta1
    kind: Alert
    metadata:
      name: gitops-connector
      namespace: flux-system
    spec:
      eventSeverity: info
      eventSources:
      - kind: GitRepository
        name: cluster-config
      - kind: Kustomization
        name: cluster-config-cluster-config
      providerRef:
        name: gitops-connector
    ---
    apiVersion: notification.toolkit.fluxcd.io/v1beta1
    kind: Provider
    metadata:
      name: gitops-connector
      namespace: flux-system
    spec:
      type: generic
      address: http://gitops-connector:8080/gitopsphase
    EOF
    

A telepítés részleteiért tekintse meg a GitOps Csatlakozás or-adattárat.

GitHub-titkos kódok létrehozása

GitHub-adattár titkos kulcsok létrehozása

Titkos Érték
AZURE_CREDENTIALS Az Azure hitelesítő adatai a következő formátumban: {"clientId":"GUID","clientSecret":"GUID","subscriptionId":"GUID","tenantId":"GUID"}
AZ_ACR_NAME Azure ACR-név, például arc-demo-acr
MANIFESTS_BRANCH master
MANIFESTS_FOLDER arc-cicd-cluster
MANIFESTS_REPO https://github.com/your-organization/arc-cicd-demo-gitops
VOTE_APP_TITLE Szavazóalkalmazás
AKS_RESOURCE_GROUP AKS-erőforráscsoport. Az automatizált teszteléshez szükséges.
AKS_NAME AKS-név. Az automatizált teszteléshez szükséges.
PAT GitHub PAT-jogkivonat a GitOps-adattárhoz való lekérési engedéllyel

GitHub-környezet titkos kulcsának létrehozása

  1. Hozzon létre az-vote-app-dev környezetet a következő titkos kódokkal:
Titkos Érték
ENVIRONMENT_NAME Dev
TARGET_NAMESPACE dev
  1. Hozzon létre az-vote-app-stage környezetet a következő titkos kódokkal:
Titkos Érték
ENVIRONMENT_NAME Szakasz
TARGET_NAMESPACE stage

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

CI/CD Fejlesztői munkafolyamat

A CI/CD dev munkafolyamat elindításához módosítsa a forráskódot. Az alkalmazás adattárában frissítse a fájl értékeit .azure-vote/src/azure-vote-front/config_file.cfg , és küldje el a módosításokat az adattárba.

A CI/CD dev munkafolyamata:

  • 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.
  • Ellenőrzi, hogy a Docker-rendszerkép megváltozott-e, és az új rendszerkép le van-e küldve.
  • Közzéteszi a következő CD-szakaszok által használt összetevőket (Docker-képcímkéket, jegyzéksablonokat, Util-okat).
  • Üzembe helyezi az alkalmazást a Dev-környezetben.
    • Jegyzékeket hoz létre a GitOps-adattárban.
    • Létrehoz egy pr-t a GitOps-adattárhoz jóváhagyás céljából.
  1. Keresse meg a folyamat által a GitOps-adattárba létrehozott pr-t.

  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. A Git Commit állapotának figyelése a Véglegesítési előzmények lapon. Ha ez megtörtént succeeded, a CD Stage munkafolyamat elindul.

  6. 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
    
  7. Tekintse meg az Azure Vote alkalmazást a böngészőben a következő címen http://localhost:8080/: .

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

CD-fázis munkafolyamata

A CD-fázis munkafolyamata automatikusan elindul, amint a Flux sikeresen üzembe helyezi az alkalmazást a fejlesztői környezetben, és értesíti a GitHub-műveleteket a GitOps Csatlakozás oron keresztül.

A CD-fázis munkafolyamata:

  • Alkalmazás füsttesztjeinek futtatása Dev-környezeten
  • Üzembe helyezi az alkalmazást a Stage környezetben.
    • Jegyzékeket hoz létre a GitOps-adattárban
    • Pr létrehozása a GitOps-adattárhoz jóváhagyás céljából

Miután a Folyamat környezethez tartozó pr jegyzékeket egyesítette, és a Flux sikeresen alkalmazza az összes módosítást, a GitOps-adattárban frissül a Git Véglegesítés állapota. Az üzembe helyezés befejeződött.

Az oktatóanyagban használt CI/CD-munkafolyamatokban implementált összes lépésről és technikáról részletes áttekintést a GitHub GitOps Flow-diagramjában talál.

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 flux delete \
          --name cluster-config \
          --cluster-name arc-cicd-cluster \
          --resource-group myResourceGroup \
          -t connectedClusters --yes
    
  2. GitOps-Csatlakozás or törlése:

    helm uninstall gitops-connector -n flux-system
    kubectl delete alerts.notification.toolkit.fluxcd.io gitops-connector -n flux-system
    kubectl delete providers.notification.toolkit.fluxcd.io  gitops-connector -n flux-system
    

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.