Sdílet prostřednictvím


Kurz: Implementace CI/CD pomocí GitOps (Flux v. 2)

V tomto kurzu nastavíte řešení CI/CD pomocí GitOps s fluxem v2 a clustery Kubernetes s podporou Azure Arc nebo Azure Kubernetes Service (AKS). Pomocí ukázkové aplikace Azure Vote provedete následující:

  • Vytvořte cluster Kubernetes nebo AKS s podporou Azure Arc.
  • Připojte své aplikace a úložiště GitOps k Azure Repos nebo GitHubu.
  • Implementujte tok CI/CD pomocí Azure Pipelines nebo GitHubu.
  • Připojte službu Azure Container Registry k Azure DevOps a Kubernetes.
  • Vytvořte skupiny proměnných prostředí nebo tajné kódy.
  • Nasaďte prostředí dev a stage prostředí.
  • Otestujte aplikační prostředí.

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

Azure Cloud Shell

Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.

Spuštění služby Azure Cloud Shell:

Možnost Příklad nebo odkaz
Vyberte Vyzkoušet v pravém horním rohu bloku kódu nebo příkazu. Výběrem možnosti Vyzkoušet se kód ani příkaz automaticky nekopíruje do Cloud Shellu. Snímek obrazovky znázorňující příklad možnosti Vyzkoušet pro Azure Cloud Shell
Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. Tlačítko pro spuštění Azure Cloud Shellu
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Snímek obrazovky znázorňující tlačítko Cloud Shell na webu Azure Portal

Použití Azure Cloud Shellu:

  1. Spusťte Cloud Shell.

  2. Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.

  3. Vložte kód nebo příkaz do relace Cloud Shellu tak, že ve Windows a Linuxu vyberete ctrl+Shift+V nebo vyberete Cmd+Shift+V v macOS.

  4. Stisknutím klávesy Enter spusťte kód nebo příkaz.

Požadavky

  • V předchozím kurzu se dozvíte, jak nasadit GitOps pro prostředí CI/CD.

  • Seznamte se s výhodami a architekturou této funkce.

  • Ověřte, že máte:

    • Připojený cluster Kubernetes s podporou Azure Arc s názvem arc-cicd-cluster.
    • Připojený azure Container Registry s integrací AKS nebo ověřováním clusteru bez AKS.
  • Nainstalujte nejnovější verze těchto rozšíření Kubernetes a Kubernetes Configuration CLI s podporou služby Azure Arc:

    az extension add --name connectedk8s
    az extension add --name k8s-configuration
    
    • Pokud chcete tato rozšíření aktualizovat na nejnovější verzi, spusťte následující příkazy:

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

Připojení služby Azure Container Registry k Kubernetes

Povolte cluster Kubernetes načítat image ze služby Azure Container Registry. Pokud je privátní, vyžaduje se ověřování.

Připojení služby Azure Container Registry k existujícím clusterům AKS

Pomocí následujícího příkazu integrujte existující službu Azure Container Registry se stávajícími clustery AKS:

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

Vytvoření tajného kódu pro vyžádání image

Pokud chcete připojit jiné clustery než AKS a místní clustery ke službě Azure Container Registry, vytvořte tajný klíč pro vyžádání image. Kubernetes používá tajné kódy pro vyžádání image k ukládání informací potřebných k ověření vašeho registru.

Vytvořte tajný kód pro vyžádání image pomocí následujícího kubectl příkazu. Opakujte pro obory dev názvů i stage obory názvů.

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>

Pokud se chcete vyhnout nastavení imagePullSecret pro každý pod, zvažte přidání imagePullSecret do účtu služby v dev oborech názvů a stage obory názvů. Další informace najdete v kurzu Kubernetes.

V závislosti na preferujete orchestrátoru CI/CD, můžete pokračovat pokyny pro Azure DevOps nebo pro GitHub.

Implementace CI/CD s Využitím Azure DevOps

V tomto kurzu se předpokládá znalost Azure DevOps, Azure Repos a Pipelines a Azure CLI.

Nejprve proveďte následující kroky:

Import úložišť aplikací a GitOps do Azure Repos

Importujte úložiště aplikací a úložiště GitOps do Azure Repos. Pro účely tohoto kurzu použijte následující ukázková úložiště:

  • Úložiště aplikací arc-cicd-demo-src

  • Úložiště GitOps arc-cicd-demo-gitops

Přečtěte si další informace o importu úložišť Git.

Poznámka:

Import a použití dvou samostatných úložišť pro aplikace a úložiště GitOps může zlepšit zabezpečení a jednoduchost. Oprávnění a viditelnost úložiště GitOps aplikace a GitOps je možné ladit jednotlivě. Správce clusteru například nemusí najít změny v kódu aplikace, které jsou relevantní pro požadovaný stav clusteru. Vývojář aplikací naopak nemusí znát konkrétní parametry pro každé prostředí – sada testovacích hodnot, které poskytují pokrytí parametrů, může být dostačující.

Připojení úložiště GitOps

Pokud chcete aplikaci průběžně nasazovat, připojte úložiště aplikací ke clusteru pomocí GitOps. Úložiště GitOps arc-cicd-demo-gitops obsahuje základní prostředky pro zprovoznění aplikace v clusteru arc-cicd-cluster .

Počáteční úložiště GitOps obsahuje pouze manifest , který vytvoří obory názvů pro vývoj a fázi odpovídající prostředím nasazení.

Připojení GitOps, které vytvoříte, automaticky:

  • Synchronizujte manifesty v adresáři manifestu.
  • Aktualizujte stav clusteru.

Pracovní postup CI/CD naplní adresář manifestu dalšími manifesty pro nasazení aplikace.

  1. Vytvořte nové připojení GitOps k nově importovanému úložišti arc-cicd-demo-gitops v Azure Repos.

    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
    

    Tip

    Pro cluster AKS (místo clusteru s podporou arc) použijte -cluster-type managedClusters.

  2. Zkontrolujte stav nasazení na webu Azure Portal.

    • V případě úspěchu uvidíte v clusteru vytvořené obory dev názvů i stage obory názvů.
    • Můžete také ověřit, že na stránce webu Azure Portal vašeho clusteru se na kartě fGitOps vytvoří konfiguracecluster-config.

Import kanálů CI/CD

Teď, když jste synchronizovali připojení GitOps, musíte importovat kanály CI/CD, které vytvářejí manifesty.

Úložiště aplikace obsahuje .pipeline složku s kanály používanými pro žádosti o přijetí změn, CI a CD. Naimportujte a přejmenujte tři kanály, které jsou k dispozici v ukázkovém úložišti:

Název souboru kanálu Popis
.pipelines/az-vote-pr-pipeline.yaml Kanál žádosti o přijetí změn aplikace s názvem arc-cicd-demo-src PR
.pipelines/az-vote-ci-pipeline.yaml Kanál CI aplikace s názvem arc-cicd-demo-src CI
.pipelines/az-vote-cd-pipeline.yaml Kanál CD aplikace s názvem arc-cicd-demo-src CD

Připojení služby Azure Container Registry k Azure DevOps

Během procesu CI nasadíte kontejnery aplikací do registru. Začněte vytvořením připojení služby Azure:

  1. V Azure DevOps otevřete stránku připojení služby ze stránky nastavení projektu. V sadě TFS otevřete stránku Služby z ikony nastavení v horním řádku nabídek.
  2. Zvolte + Nové připojení služby a vyberte typ připojení služby, které potřebujete.
  3. Vyplňte parametry připojení služby. Pro účely tohoto kurzu:
    • Pojmenujte připojení služby arc-demo-acr.
    • Jako skupinu prostředků vyberte myResourceGroup .
  4. Vyberte oprávnění Udělit přístup všem kanálům.
    • Tato možnost autorizuje soubory kanálů YAML pro připojení služeb.
  5. Pokud chcete vytvořit připojení, zvolte OK .

Konfigurace připojení služby PR

Kanál CD manipuluje s žádosti o přijetí změn v úložišti GitOps. Aby to bylo možné, potřebuje připojení ke službě. Konfigurace tohoto připojení:

  1. V Azure DevOps otevřete stránku připojení služby ze stránky nastavení projektu. V sadě TFS otevřete stránku Služby z ikony nastavení v horním řádku nabídek.
  2. Zvolte + Nové připojení služby a vyberte Generic typ.
  3. Vyplňte parametry připojení služby. Pro účely tohoto kurzu:
    • Adresa URL serveru https://dev.azure.com/<Your organization>/<Your project>/_apis/git/repositories/arc-cicd-demo-gitops
    • Nechte uživatelské jméno a heslo prázdné.
    • Pojmenujte připojení služby azdo-pr-connection.
  4. Vyberte oprávnění Udělit přístup všem kanálům.
    • Tato možnost autorizuje soubory kanálů YAML pro připojení služeb.
  5. Pokud chcete vytvořit připojení, zvolte OK .

Instalace konektoru GitOps

  1. Přidejte úložiště konektoru GitOps do úložišť Helm:

       helm repo add gitops-connector https://azure.github.io/gitops-connector/
    
  2. Nainstalujte konektor do clusteru:

       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>
    

    Poznámka:

    Azure Repos PAT token by měla mít Build: Read & execute a Code: Full mít oprávnění.

  3. Konfigurace fluxu pro odesílání oznámení do konektoru GitOps:

    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
    

Podrobnosti o instalaci najdete v úložišti konektoru GitOps.

Vytvoření skupin proměnných prostředí

Skupina proměnných úložiště aplikací

Vytvořte skupinu proměnných s názvem az-vote-app-dev. Nastavte následující hodnoty:

Proměnná Hodnota
AZURE_SUBSCRIPTION (vaše připojení ke službě Azure, které by mělo být arc-demo-acr z dřívější části kurzu)
AZ_ACR_NAME Název Azure ACR, například arc-demo-acr
ENVIRONMENT_NAME Vývoj
MANIFESTS_BRANCH master
MANIFESTS_REPO arc-cicd-demo-gitops
ORGANIZATION_NAME Název organizace Azure DevOps
PROJECT_NAME Název projektu GitOps v Azure DevOps
REPO_URL Úplná adresa URL úložiště GitOps
SRC_FOLDER azure-vote
TARGET_CLUSTER arc-cicd-cluster
TARGET_NAMESPACE dev
VOTE_APP_TITLE Hlasovací aplikace
AKS_RESOURCE_GROUP Skupina prostředků AKS Potřebné pro automatizované testování.
AKS_NAME Název AKS Potřebné pro automatizované testování.

Skupina proměnných prostředí fáze

  1. Naklonujte skupinu proměnných az-vote-app-dev .
  2. Změňte název na az-vote-app-stage.
  3. Ujistěte se, že pro odpovídající proměnné platí následující hodnoty:
Proměnná Hodnota
ENVIRONMENT_NAME Fáze
TARGET_NAMESPACE stage

Teď jste připraveni k nasazení do dev prostředí a stage prostředí.

Vytvoření prostředí

V projektu Azure DevOps vytvořte Dev a vytvořte prostředí Stage . Podrobnosti najdete v tématu Vytvoření a cílení prostředí.

Udělení dalších oprávnění ke službě sestavení

Kanál CD používá token zabezpečení spuštěného sestavení k ověření v úložišti GitOps. Aby kanál vytvořil novou větev, odeslal změny a vytvořil žádosti o přijetí změn, potřebuje další oprávnění.

  1. Přejděte na Project settings hlavní stránku projektu Azure DevOps.
  2. Vyberte možnost Repos/Repositories.
  3. Vyberte možnost Security.
  4. <Project Name> Build Service (<Organization Name>) Pro pole a pro Project Collection Build Service (<Organization Name>) něj (zadejte ho do vyhledávacího pole, pokud se nezobrazí), povolte Contribute, Contribute to pull requestsa Create branch.
  5. Přejděte na Pipelines/Settings.
  6. Možnost vypnutí Protect access to repositories in YAML pipelines

Další informace naleznete v tématu:

První nasazení vývojového prostředí

Když jsou vytvořené kanály CI a CD, spusťte kanál CI a nasaďte aplikaci poprvé.

Kanál CI

Během počátečního spuštění kanálu CI se může při čtení názvu připojení služby zobrazit chyba autorizace prostředků.

  1. Ověřte, že je proměnná, ke které se přistupuje, AZURE_SUBSCRIPTION.
  2. Autorizuje použití.
  3. Znovu spusťte kanál.

Kanál CI:

  • Zajišťuje, že změna aplikace projde všemi automatizovanými kontrolami kvality nasazení.
  • Provede jakékoli dodatečné ověření, které se nepodařilo dokončit v kanálu žádosti o přijetí změn.
    • Kanál také publikuje artefakty pro potvrzení, které bude kanál CD nasazovat, konkrétně pro GitOps.
  • Ověří, že se image Dockeru změnila a nová image se nasdílí.

Kanál CD

Během počátečního spuštění kanálu CD musíte kanálu udělit přístup k úložišti GitOps. Po zobrazení výzvy vyberte Zobrazit , že kanál potřebuje oprávnění pro přístup k prostředku. Pak vyberte Povolit udělit oprávnění k používání úložiště GitOps pro aktuální a budoucí spuštění kanálu.

Úspěšné spuštění kanálu CI aktivuje kanál CD, aby se dokončil proces nasazení. Postupně nasadíte do každého prostředí.

Tip

Pokud se kanál CD neaktivuje automaticky:

  1. Ověřte, že název odpovídá triggeru větve v .pipelines/az-vote-cd-pipeline.yaml
    • Měla by mít hodnotu arc-cicd-demo-src CI.
  2. Znovu spusťte kanál CI.

Jakmile se šablona a manifest změní v úložišti GitOps, kanál CD vytvoří potvrzení, odešle ho a vytvoří žádost o přijetí změn ke schválení.

  1. Vyhledejte žádost o přijetí změn vytvořenou kanálem do úložiště GitOps.

  2. Ověřte změny v úložišti GitOps. Měli byste vidět tohle:

    • Změny šablony Helm vysoké úrovně
    • Manifesty Kubernetes nízké úrovně, které zobrazují základní změny požadovaného stavu. Flux nasadí tyto manifesty.
  3. Pokud všechno vypadá dobře, schvalte a dokončete žádost o přijetí změn.

  4. Po několika minutách flux změnu převezme a spustí nasazení.

  5. Monitorujte stav potvrzení Gitu na kartě Historie potvrzení. Jakmile je succeeded, kanál CD spustí automatizované testování.

  6. Přesměrujte port místně pomocí kubectl aplikace a ujistěte se, že aplikace funguje správně pomocí:

    kubectl port-forward -n dev svc/azure-vote-front 8080:80
    
  7. Zobrazte aplikaci Azure Vote v prohlížeči na adrese http://localhost:8080/.

  8. Hlasujte pro své oblíbené položky a připravte se na provedení některých změn v aplikaci.

Nastavení schválení prostředí

Při nasazení aplikace můžete nejen provádět změny kódu nebo šablon, ale také neúmyslně umístit cluster do špatného stavu.

Pokud vývojové prostředí odhalí přerušení po nasazení, zachovejte ho v pozdějších prostředích pomocí schválení prostředí.

  1. V projektu Azure DevOps přejděte do prostředí, které je potřeba chránit.
  2. Přejděte na Schválení a Kontroly prostředku.
  3. Vyberte Vytvořit.
  4. Zadejte schvalovatele a volitelnou zprávu.
  5. Dalším výběrem možnosti Vytvořit dokončíte přidání kontroly ručního schvalování.

Další podrobnosti najdete v kurzu Definování schválení a kontrol .

Při příštím spuštění kanálu CD se kanál pozastaví po vytvoření žádosti o přijetí změn GitOps. Ověřte, že se změna správně synchronizovala, a předá základní funkce. Schválením kontroly z kanálu umožníte toku změn do dalšího prostředí.

Provedení změny aplikace

Pomocí této základní sady šablon a manifestů představujících stav v clusteru provedete malou změnu aplikace.

  1. V úložišti arc-cicd-demo-src upravte azure-vote/src/azure-vote-front/config_file.cfg soubor.

  2. Vzhledem k tomu, že "Kočky vs psi" nedostává dostatek hlasů, změňte ho na "Tabs vs Spaces", aby se počet hlasů zvýšit.

  3. Potvrďte změnu v nové větvi, nasdílejte ji a vytvořte žádost o přijetí změn. Tato posloupnost kroků je typický vývojový tok, který spouští životní cyklus CI/CD.

Kanál ověření žádosti o přijetí změn

Kanál žádosti o přijetí změn je první linie obrany proti vadné změně. Běžné kontroly kvality kódu aplikace zahrnují lintování a statickou analýzu. Z pohledu GitOps musíte také zajistit stejnou kvalitu výsledné infrastruktury, která se má nasadit.

Grafy Dockerfile a Helm aplikace můžou podobně jako aplikace používat lintování.

Chyby zjištěné při lintování rozsahu od nesprávně formátovaných souborů YAML až po návrhy osvědčených postupů, jako je nastavení limitů procesoru a paměti pro vaši aplikaci.

Poznámka:

Pokud chcete dosáhnout nejlepšího pokrytí z lintování Helmu v reálné aplikaci, budete muset nahradit hodnoty, které jsou přiměřeně podobné těm, které se používají ve skutečném prostředí.

Chyby zjištěné během provádění kanálu se zobrazí v části výsledků testu spuštění. Zde můžete:

  • Sledujte užitečné statistiky o typech chyb.
  • Najděte první potvrzení, u kterého byly zjištěny.
  • Odkazy na styl trasování zásobníku na oddíly kódu, které způsobily chybu.

Po dokončení spuštění kanálu jste si zajistili kvalitu kódu aplikace a šablony, která ho nasadí. Nyní můžete žádost o přijetí změn schválit a dokončit. CI se spustí znovu a znovu vygeneruje šablony a manifesty před aktivací kanálu CD.

Tip

Ve skutečném prostředí nezapomeňte nastavit zásady větví, abyste zajistili, že žádost o přijetí změn projde kontrolou kvality. Další informace najdete v tématu Nastavení zásad větve.

Schválení procesů CD

Úspěšné spuštění kanálu CI aktivuje kanál CD, aby se dokončil proces nasazení. Tentokrát kanál vyžaduje, abyste schválili každé prostředí nasazení.

  1. Schvalte nasazení do dev prostředí.
  2. Jakmile se šablona a manifest změní v úložišti GitOps, kanál CD vytvoří potvrzení, odešle ho a vytvoří žádost o přijetí změn ke schválení.
  3. Ověřte změny v úložišti GitOps. Měli byste vidět:
    • Změny šablony Helm vysoké úrovně
    • Manifesty Kubernetes nízké úrovně, které zobrazují základní změny požadovaného stavu.
  4. Pokud všechno vypadá dobře, schvalte a dokončete žádost o přijetí změn.
  5. Počkejte, až se nasazení dokončí.
  6. Jako základní orientační test přejděte na stránku aplikace a ověřte, že hlasovací aplikace teď zobrazuje tabulátory a mezery.
    • Přesměrujte port místně pomocí kubectl aplikace a ujistěte se, že aplikace funguje správně pomocí: kubectl port-forward -n dev svc/azure-vote-front 8080:80
    • Prohlédněte si aplikaci Azure Vote v prohlížeči http://localhost:8080/ a ověřte, že se možnosti hlasování změnily na Karty a Mezery.
  7. Opakujte kroky 1 až 7 pro stage prostředí.

Nasazení je teď hotové.

Podrobný přehled všech kroků a technik implementovaných v pracovních postupech CI/CD používaných v tomto kurzu najdete v diagramu toku GitOps Azure DevOps.

Implementace CI/CD pomocí GitHubu

V tomto kurzu se předpokládá znalost GitHubu, GitHub Actions.

Fork application and GitOps repositories

Vytvoření forku úložiště aplikace a úložiště GitOps Pro účely tohoto kurzu použijte následující ukázková úložiště:

Připojení úložiště GitOps

Pokud chcete aplikaci průběžně nasazovat, připojte úložiště aplikací ke clusteru pomocí GitOps. Úložiště GitOps arc-cicd-demo-gitops obsahuje základní prostředky pro zprovoznění aplikace v clusteru arc-cicd-cluster .

Počáteční úložiště GitOps obsahuje pouze manifest , který vytvoří obory názvů pro vývoj a fázi odpovídající prostředím nasazení.

Připojení GitOps, které vytvoříte, automaticky:

  • Synchronizujte manifesty v adresáři manifestu.
  • Aktualizujte stav clusteru.

Pracovní postup CI/CD naplní adresář manifestu dalšími manifesty pro nasazení aplikace.

  1. Vytvořte nové připojení GitOps k nově rozvětvovanému úložišti arc-cicd-demo-gitops na GitHubu.

    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. Zkontrolujte stav nasazení na webu Azure Portal.

    • V případě úspěchu uvidíte v clusteru vytvořené obory dev názvů i stage obory názvů.

Instalace konektoru GitOps

  1. Přidejte úložiště konektoru GitOps do úložišť Helm:

       helm repo add gitops-connector https://azure.github.io/gitops-connector/
    
  2. Nainstalujte konektor do clusteru:

       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. Konfigurace fluxu pro odesílání oznámení do konektoru GitOps:

    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
    

Podrobnosti o instalaci najdete v úložišti konektoru GitOps.

Vytvoření tajných kódů GitHubu

Vytvoření tajných kódů úložiště GitHub

Tajný Hodnota
AZURE_CREDENTIALS Přihlašovací údaje pro Azure v následujícím formátu {"clientId":"GUID","clientSecret":"GUID","subscriptionId":"GUID","tenantId":"GUID"}
AZ_ACR_NAME Název Azure ACR, například 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 Hlasovací aplikace
AKS_RESOURCE_GROUP Skupina prostředků AKS Potřebné pro automatizované testování.
AKS_NAME Název AKS Potřebné pro automatizované testování.
PAT Token PAT GitHubu s oprávněním k žádosti o přijetí změn do úložiště GitOps

Vytvoření tajných kódů prostředí GitHubu

  1. Vytvořte az-vote-app-dev prostředí s následujícími tajnými kódy:
Tajný Hodnota
ENVIRONMENT_NAME Vývoj
TARGET_NAMESPACE dev
  1. Vytvořte az-vote-app-stage prostředí s následujícími tajnými kódy:
Tajný Hodnota
ENVIRONMENT_NAME Fáze
TARGET_NAMESPACE stage

Teď jste připraveni k nasazení do dev prostředí a stage prostředí.

Pracovní postup CI/CD Dev

Pokud chcete spustit pracovní postup CI/CD Dev, změňte zdrojový kód. V úložišti aplikace aktualizujte hodnoty v .azure-vote/src/azure-vote-front/config_file.cfg souboru a nasdílete změny do úložiště.

Pracovní postup CI/CD Dev:

  • Zajišťuje, že změna aplikace projde všemi automatizovanými kontrolami kvality nasazení.
  • Provede jakékoli dodatečné ověření, které se nepodařilo dokončit v kanálu žádosti o přijetí změn.
  • Ověří, že se image Dockeru změnila a nová image se nasdílí.
  • Publikuje artefakty (značky imagí Dockeru, šablony manifestu, nástroje), které budou použity v následujících fázích CD.
  • Nasadí aplikaci do vývojového prostředí.
    • Generuje manifesty do úložiště GitOps.
    • Vytvoří žádost o přijetí změn do úložiště GitOps ke schválení.
  1. Vyhledejte žádost o přijetí změn vytvořenou kanálem do úložiště GitOps.

  2. Ověřte změny v úložišti GitOps. Měli byste vidět tohle:

    • Změny šablony Helm vysoké úrovně
    • Manifesty Kubernetes nízké úrovně, které zobrazují základní změny požadovaného stavu. Flux nasadí tyto manifesty.
  3. Pokud všechno vypadá dobře, schvalte a dokončete žádost o přijetí změn.

  4. Po několika minutách flux změnu převezme a spustí nasazení.

  5. Monitorujte stav potvrzení Gitu na kartě Historie potvrzení. Jakmile je succeeded, CD Stage pracovní postup se spustí.

  6. Přesměrujte port místně pomocí kubectl aplikace a ujistěte se, že aplikace funguje správně pomocí:

    kubectl port-forward -n dev svc/azure-vote-front 8080:80
    
  7. Zobrazte aplikaci Azure Vote v prohlížeči na adrese http://localhost:8080/.

  8. Hlasujte pro své oblíbené položky a připravte se na provedení některých změn v aplikaci.

Pracovní postup fáze CD

Pracovní postup fáze CD se spustí automaticky, jakmile Flux úspěšně nasadí aplikaci do vývojového prostředí a prostřednictvím konektoru GitOps oznámí akce GitHubu.

Pracovní postup fáze CD:

  • Spustí orientační testy aplikací pro vývojové prostředí.
  • Nasadí aplikaci do prostředí Stage.
    • Generuje manifesty do úložiště GitOps.
    • Vytvoří žádost o přijetí změn do úložiště GitOps ke schválení.

Jakmile se manifesty PR do prostředí Fáze sloučí a Flux úspěšně použije všechny změny, stav potvrzení Gitu se aktualizuje v úložišti GitOps. Nasazení je teď hotové.

Podrobný přehled všech kroků a technik implementovaných v pracovních postupech CI/CD používaných v tomto kurzu najdete v diagramu toku GitOps GitHubu.

Vyčištění prostředků

Pokud nebudete tuto aplikaci dál používat, odstraňte všechny prostředky pomocí následujícího postupu:

  1. Odstraňte připojení konfigurace GitOps služby Azure Arc:

    az k8s-configuration flux delete \
          --name cluster-config \
          --cluster-name arc-cicd-cluster \
          --resource-group myResourceGroup \
          -t connectedClusters --yes
    
  2. Odstranění konektoru GitOps:

    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
    

Další kroky

V tomto kurzu jste nastavili úplný pracovní postup CI/CD, který implementuje DevOps z vývoje aplikací prostřednictvím nasazení. Změny aplikace automaticky aktivují ověřování a nasazení, které jsou vyměněny ručními schváleními.

V našem koncepčním článku se dozvíte více o GitOps a konfiguracích s využitím Kubernetes s podporou Azure Arc.