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
astage
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. | |
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. | |
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. |
Použití Azure Cloud Shellu:
Spusťte Cloud Shell.
Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.
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.
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:
- Přihlaste se ke službě Azure DevOps Services.
- Ověřte, že máte oprávnění Správce sestavení a Správce projektu pro Azure Repos a Azure Pipelines.
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
- URL: https://github.com/Azure/arc-cicd-demo-src
- Obsahuje příklad aplikace Azure Vote, kterou nasadíte pomocí GitOps.
- Import úložiště s názvem
arc-cicd-demo-src
Úložiště GitOps arc-cicd-demo-gitops
- URL: https://github.com/Azure/arc-cicd-demo-gitops
- Funguje jako základ pro prostředky clusteru, které jsou součástí aplikace Azure Vote.
- Import úložiště s názvem
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.
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
.Zkontrolujte stav nasazení na webu Azure Portal.
- V případě úspěchu uvidíte v clusteru vytvořené obory
dev
názvů istage
obory názvů. - Můžete také ověřit, že na stránce webu Azure Portal vašeho clusteru se na kartě f
GitOps
vytvoří konfiguracecluster-config
.
- V případě úspěchu uvidíte v clusteru vytvořené obory
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:
- 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.
- Zvolte + Nové připojení služby a vyberte typ připojení služby, které potřebujete.
- 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 .
- 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.
- 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í:
- 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.
- Zvolte + Nové připojení služby a vyberte
Generic
typ. - 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.
- Adresa URL serveru
- 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.
- Pokud chcete vytvořit připojení, zvolte OK .
Instalace konektoru GitOps
Přidejte úložiště konektoru GitOps do úložišť Helm:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
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ítBuild: Read & execute
aCode: Full
mít oprávnění.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
- Naklonujte skupinu proměnných az-vote-app-dev .
- Změňte název na az-vote-app-stage.
- 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í.
- Přejděte na
Project settings
hlavní stránku projektu Azure DevOps. - Vyberte možnost
Repos/Repositories
. - Vyberte možnost
Security
. <Project Name> Build Service (<Organization Name>)
Pro pole a proProject Collection Build Service (<Organization Name>)
něj (zadejte ho do vyhledávacího pole, pokud se nezobrazí), povolteContribute
,Contribute to pull requests
aCreate branch
.- Přejděte na
Pipelines/Settings
. - 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ů.
- Ověřte, že je proměnná, ke které se přistupuje, AZURE_SUBSCRIPTION.
- Autorizuje použití.
- 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:
- 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
.
- Měla by mít hodnotu
- 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í.
Vyhledejte žádost o přijetí změn vytvořenou kanálem do úložiště GitOps.
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.
Pokud všechno vypadá dobře, schvalte a dokončete žádost o přijetí změn.
Po několika minutách flux změnu převezme a spustí nasazení.
Monitorujte stav potvrzení Gitu na kartě Historie potvrzení. Jakmile je
succeeded
, kanál CD spustí automatizované testování.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
Zobrazte aplikaci Azure Vote v prohlížeči na adrese
http://localhost:8080/
.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í.
- V projektu Azure DevOps přejděte do prostředí, které je potřeba chránit.
- Přejděte na Schválení a Kontroly prostředku.
- Vyberte Vytvořit.
- Zadejte schvalovatele a volitelnou zprávu.
- 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.
V úložišti arc-cicd-demo-src upravte
azure-vote/src/azure-vote-front/config_file.cfg
soubor.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.
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í.
- Schvalte nasazení do
dev
prostředí. - 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í.
- 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.
- Pokud všechno vypadá dobře, schvalte a dokončete žádost o přijetí změn.
- Počkejte, až se nasazení dokončí.
- 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.
- Přesměrujte port místně pomocí
- 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ě:
Úložiště aplikací arc-cicd-demo-src
- URL: https://github.com/Azure/arc-cicd-demo-src
- Obsahuje příklad aplikace Azure Vote, kterou nasadíte pomocí GitOps.
Úložiště GitOps arc-cicd-demo-gitops
- URL: https://github.com/Azure/arc-cicd-demo-gitops
- Funguje jako základ pro prostředky clusteru, které jsou součástí aplikace Azure Vote.
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.
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
Zkontrolujte stav nasazení na webu Azure Portal.
- V případě úspěchu uvidíte v clusteru vytvořené obory
dev
názvů istage
obory názvů.
- V případě úspěchu uvidíte v clusteru vytvořené obory
Instalace konektoru GitOps
Přidejte úložiště konektoru GitOps do úložišť Helm:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
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>
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
- 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 |
- 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í.
Vyhledejte žádost o přijetí změn vytvořenou kanálem do úložiště GitOps.
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.
Pokud všechno vypadá dobře, schvalte a dokončete žádost o přijetí změn.
Po několika minutách flux změnu převezme a spustí nasazení.
Monitorujte stav potvrzení Gitu na kartě Historie potvrzení. Jakmile je
succeeded
,CD Stage
pracovní postup se spustí.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
Zobrazte aplikaci Azure Vote v prohlížeči na adrese
http://localhost:8080/
.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:
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
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.