Oktatóanyag: CI/CD implementálása GitOps használatával (Flux v2)
Ebben az oktatóanyagban egy CI/CD-megoldást állít be 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 teheti:
- Csatlakoztassa az alkalmazást és a GitOps-adattárakat az Azure Devopshoz (Azure Repos) 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.
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
Vagy 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 helyezendő 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ékkönyvtár jegyzékfájljait, és frissíti 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 oldalán létrejön-e egy konfiguráció
cluster-config
aGitOps
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.
- A kapcsolat létrehozásához válassza a Mentés lehetőséget.
Pr szolgáltatáskapcsolat konfigurálása
A CD-folyamat kezeli a lekéréses kérelmeket (PRs) a GitOps-adattárban, amelyhez szolgáltatáskapcsolat szükséges. 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.
- A kapcsolat létrehozásához válassza a Mentés lehetőséget.
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éssel kapcsolatos részleteké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örnyezetek létrehozása és célkörnyezetek létrehozá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 új ágat hozzon létre, leküldje a módosításokat és hozzon létre PRS-eket. Az engedélyek engedélyezése:
- Az Azure DevOpsban nyissa meg a Project beállításait.
- Az Adattárak területen válassza az Adattárak lehetőséget.
- A biztonság kiválasztása.
- Keresse meg
<Project Name> Build Service (<Organization Name>)
ésProject Collection Build Service (<Organization Name>)
(ha nem látja őket, használja a keresést), és engedélyezze a Közreműködés, a Közreműködés a lekéréses kérelmekhez és az Ág létrehozása lehetőséget. - A Folyamatok területen válassza a Beállítások lehetőséget.
- Kapcsolja ki az adattárakhoz való hozzáférés védelme lehetőséget a YAML-folyamatokban .
További információ: Verziókövetési engedélyek megadása a buildelési szolgáltatáshoz és a buildelési szolgáltatásfiók-engedélyek 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
Ha a kezdeti CI-folyamat futtatása során erőforrás-engedélyezési hiba jelenik meg a szolgáltatáskapcsolat nevének olvasása során, tegye a következőket:
- 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ényes üzembe helyezést kell elvégeznie.
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.
A GitOps-adattár sablon- és jegyzékmódosításainak létrehozása után 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.
Figyelje az állapotot
git commit
a Véglegesítési előzmények lapon. Ha ez megtörténtsucceeded
, 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 módosíthatja a kódot vagy a sablonokat, de 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, a környezeti jóváhagyások engedélyezése segít megőrizni a problémát a későbbi környezetekben.
- 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 információ: Jóváhagyás és ellenőrzések meghatározása.
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 szinkronizálva van-e, é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 képviselő 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
Ha a Helm-lintingből a lehető legjobb lefedettséget szeretné elérni egy valós alkalmazásban, helyettesítse azokat az értékeket, 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.
A folyamatfuttatás befejeződik, megerősítve 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, újragenerálja a sablonokat és a jegyzékeket, mielőtt elindítja a CD-folyamatot.
Tipp.
Valós környezetben mindenképpen állítson be ágszabályzatokat, hogy a lekéréses kérelem megfelel-e a minőségi ellenőrzéseknek. További információ: Ágszabályzatok és -beállítások.
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 helyezendő 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.
Az automatikusan létrehozott GitOps-kapcsolat:
- 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
A következő lépés a GitHub-adattár és a környezet titkos kulcsainak létrehozása.
GitHub-adattár titkos kulcsok létrehozása
Használja az alábbi értékeket a GitHub-adattár titkos kulcsaihoz:
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
- 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 az alábbi 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.
A lépések elvégzése után:
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.
Figyelje az állapotot
git commit
a Véglegesítési előzmények lapon. Ha elkészültsucceeded
, elindul aCD Stage
munkafolyamat.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ít 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.