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.
- Csatlakoztassa az alkalmazást és a GitOps-adattárakat az Azure Reposhoz vagy a GitHubhoz.
- Ci/CD-folyamat implementálása az Azure Pipelines vagy a GitHub használatával.
- Csatlakoztassa az Azure Container Registryt az Azure DevOpshoz és a Kuberneteshez.
- Környezeti változócsoportok vagy titkos kódok 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 .
Előfeltételek
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 AKS-integrációval vagy nem AKS-fürthitelesítéssel.
Telepítse az Azure Arc-kompatibilis Kubernetes és a Kubernetes Configuration CLI-bővítmények legújabb verzióit:
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
Az Azure Container Registry csatlakoztatása a Kuberneteshez
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 csatlakoztatása meglévő AKS-fürtökhöz
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 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ó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 Admin" és "Project Admin" 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
- URL-cím: https://github.com/Azure/arc-cicd-demo-src
- A GitOps használatával üzembe helyezhető Azure Vote-alkalmazást tartalmazza.
- Az adattár importálása névvel
arc-cicd-demo-src
arc-cicd-demo-gitops GitOps-adattár
- URL-cím: https://github.com/Azure/arc-cicd-demo-gitops
- Az Azure Vote appot tartalmazó fürterőforrások alapjaként működik.
- Az adattár importálása névvel
arc-cicd-demo-gitops
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 csatlakoztatása
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.
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
: .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. - Azt is ellenőrizheti, hogy a fürt Azure Portal lapján létrejön-e egy konfiguráció
cluster-config
az fGitOps
lapon.
- 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 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 csatlakoztatása az Azure DevOpshoz
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.
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:
- 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 a típust
Generic
. - 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.
- Kiszolgáló URL-címe
- 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.
A GitOps-összekötő telepítése
GitOps Connector-adattár hozzáadása Helm-adattárakhoz:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
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 token
rendelkeznie kell ésCode: Full
engedélyekkel kell rendelkeznieBuild: Read & execute
.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 Connector-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-kapcsolat, 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
- 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.
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.
- Lépjen az
Project settings
Azure DevOps projekt főoldalára. - Válassza ki
Repos/Repositories
. - Válassza ki
Security
. <Project Name> Build Service (<Organization Name>)
Az és aProject Collection Build Service (<Organization Name>)
(írja be a keresőmezőbe, ha nem jelenik meg), engedélyezzeContribute
,Contribute to pull requests
ésCreate branch
.- Nyissa meg a következőt:
Pipelines/Settings
- Kikapcsolási
Protect access to repositories in YAML pipelines
beállítás
További információk:
- 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 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:
- 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.
Keresse meg a folyamat által a GitOps-adattárba létrehozott pr-t.
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.
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.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.
- Keresse meg az erőforrás jóváhagyását és ellenőrzését .
- 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 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.
- 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.
- 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.
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:
arc-cicd-demo-src alkalmazásadattár
- URL-cím: 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-cím: https://github.com/Azure/arc-cicd-demo-gitops
- Az Azure Vote appot tartalmazó fürterőforrások alapjaként működik.
A GitOps-adattár csatlakoztatása
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.
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
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 GitOps-összekötő telepítése
GitOps Connector-adattár hozzáadása Helm-adattárakhoz:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
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>
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 Connector-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. |
LAPOGATÁS | GitHub PAT-jogkivonat a GitOps-adattárhoz való lekérési engedéllyel |
GitHub-környezet titkos kulcsának létrehozása
- Hozzon létre
az-vote-app-dev
környezetet a következő titkos kódokkal:
Titkos | Érték |
---|---|
ENVIRONMENT_NAME | Dev |
TARGET_NAMESPACE | dev |
- 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.
Keresse meg a folyamat által a GitOps-adattárba létrehozott pr-t.
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.
A Git Commit állapotának figyelése a Véglegesítési előzmények lapon. Ha ez megtörtént
succeeded
, aCD Stage
munkafolyamat elindul.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.
CD-fázis munkafolyamata
A CD-fázis munkafolyamata automatikusan elindul, miután a Flux sikeresen üzembe helyezi az alkalmazást fejlesztői környezetben, és értesíti a GitHub-műveleteket a GitOps Connectoron 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:
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
GitOps-összekötő 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.