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
adev
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. | |
Látogasson el a https://shell.azure.com webhelyre, vagy kattintson a Cloud Shell indítása gombra a böngészőben. | |
Az Azure Portal jobb felső sarkában található menüben kattintson a Cloud Shell gombra. |
Az Azure Cloud Shell használata:
Indítsa el a Cloud Shellt.
A kód vagy parancs másolásához kattintson a Másolás gombra egy kódblokkon (vagy parancsblokkon).
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.
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.
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:
- Egy arc-cicd-cluster nevű csatlakoztatott Azure Arc-kompatibilis Kubernetes-fürt.
- Csatlakoztatott Azure Container Registry (ACR) AKS-integrációval vagy nem AKS-fürthitelesítéssel.
- "Build Rendszergazda" és "Project Rendszergazda" engedélyek az Azure-adattárakhoz és az Azure Pipelineshoz.
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:
- arc-cicd-demo-src alkalmazás-adattár
- URL: https://github.com/Azure/arc-cicd-demo-src
- A GitOps használatával üzembe helyezhető Azure Vote-alkalmazást tartalmazza.
- arc-cicd-demo-gitops GitOps-adattár
- URL: https://github.com/Azure/arc-cicd-demo-gitops
- Az Azure Vote appot tartalmazó fürterőforrások alapjaként működik.
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.
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'
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 kellalice@
távolítani. Ehelyett--https-user
a felhasználót adja meg, például--https-user alice
.Ellenőrizze az üzembe helyezés állapotát az Azure Portalon.
- Ha sikeres, a fürtben létrehozott névterek és
stage
névterek isdev
megjelennek.
- Ha sikeres, a fürtben létrehozott névterek és
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:
- 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.
- Válassza az + Új szolgáltatáskapcsolat lehetőséget, és válassza ki a szükséges szolgáltatáskapcsolat típusát.
- 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.
- 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.
- 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 dev
stage
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
- Klónozza az az-vote-app-dev változócsoportot.
- Módosítsa a nevet az az-vote-app-stage-ra.
- 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.
- Lépjen az
Project settings
Azure DevOps projekt főoldalára. - Válassza ki
Repositories
. - Válassza ki
<GitOps Repo Name>
. - Válassza ki
Security
. <Project Name> Build Service (<Organization Name>)
Az , engedélyezésContribute
ésContribute to pull requests
Create branch
.
További információkért lásd:
- VC-engedélyek megadása a buildelési szolgáltatáshoz
- A buildelési szolgáltatásfiók engedélyeinek kezelése
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.
- Ellenőrizze, hogy a elérni kívánt változó AZURE_SUBSCRIPTION-e.
- Engedélyezze a használatot.
- 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:
- 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
.
- A következőnek kellene itt szerepelnie:
- 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.
Nyissa meg a feladat kimenetében
Create PR
megadott PR-hivatkozást.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.
Ha minden jól néz ki, hagyja jóvá és fejezze be a pr-t.
Néhány perc múlva a Flux felveszi a módosítást, és elindítja az üzembe helyezést.
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 a következő címen
http://localhost:8080/
: .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.
- Az Azure DevOps-projektben lépjen a védeni kívánt környezetbe.
- Navigáljon az erőforrás Jóváhagyások és ellenőrzéséhez.
- Válassza a Létrehozás lehetőséget.
- Adja meg a jóváhagyókat és egy opcionális üzenetet.
- 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.
Az arc-cicd-demo-src adattárban szerkessze
azure-vote/src/azure-vote-front/config_file.cfg
a fájlt.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.
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.
- Hagyja jóvá az üzembe helyezést a
dev
környezetben. - 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.
- Nyissa meg a feladatban megadott PR-hivatkozást.
- 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.
- Ha minden jól néz ki, hagyja jóvá és fejezze be a pr-t.
- Várjon, amíg az üzembe helyezés befejeződik.
- 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.
- Továbbítsa a portot helyileg,
- 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:
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
Távolítsa el a névteret
dev
:kubectl delete namespace dev
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.