Kurz: Nasazení konfigurací pomocí GitOps v clusteru Kubernetes s podporou Azure Arc
Důležité
Tento kurz je určený pro GitOps s flux v1. GitOps s flux v2 je teď k dispozici pro clustery Kubernetes s podporou Azure Arc a Azure Kubernetes Service (AKS). Přejděte do kurzu pro GitOps s flux v2. Doporučujeme migrovat na Flux v2 co nejdříve.
Podpora prostředků konfigurace clusteru založených na flux v1 vytvořených před 1. lednem 2024 skončí 24. května 2025. Od 1. ledna 2024 nebudete moct vytvářet nové prostředky konfigurace clusteru založené na fluxu v1.
V tomto kurzu použijete konfigurace Flux v1 pomocí GitOps v clusteru Kubernetes s podporou Azure Arc. Získáte následující informace:
- Vytvořte konfiguraci v clusteru Kubernetes s podporou Azure Arc pomocí ukázkového úložiště Git.
- Ověřte, že se konfigurace úspěšně vytvořila.
- Použijte konfiguraci z privátního úložiště Git.
- Ověřte konfiguraci Kubernetes.
Požadavky
Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Existující připojený cluster Kubernetes s podporou Azure Arc. Pokud jste cluster ještě nepřipojili, projděte si rychlý start pro připojení clusteru Kubernetes s podporou Azure Arc.
k8s-configuration
Nainstalujte rozšíření Azure CLI verze >= 1.0.0:az extension add --name k8s-configuration
Tip
k8s-configuration
Pokud je rozšíření již nainstalované, můžete ho aktualizovat na nejnovější verzi pomocí následujícího příkazu –az extension update --name k8s-configuration
Vytvoření konfigurace
Ukázkové úložiště použité v tomto článku je strukturované kolem osoby operátora clusteru. Manifesty v tomto úložišti zřizují několik oborů názvů, nasazují úlohy a poskytují určitou konfiguraci specifickou pro tým. Pomocí tohoto úložiště s GitOps se ve vašem clusteru vytvoří následující prostředky:
- Obory názvů:
cluster-config
,team-a
team-b
- Nasazení:
arc-k8s-demo
- Objekt ConfigMap:
team-a/endpoints
Dotazuje config-agent
Azure na nové nebo aktualizované konfigurace. Tento úkol bude trvat až 5 minut.
Pokud přidružujete privátní úložiště ke konfiguraci, proveďte následující kroky v části Použití konfigurace z privátního úložiště Git.
Důležité
Tento kurz je určený pro GitOps s flux v1. GitOps s flux v2 je teď k dispozici pro clustery Kubernetes s podporou Azure Arc a Azure Kubernetes Service (AKS). Přejděte do kurzu pro GitOps s flux v2. Doporučujeme migrovat na Flux v2 co nejdříve.
Podpora prostředků konfigurace clusteru založených na flux v1 vytvořených před 1. lednem 2024 skončí 24. května 2025. Od 1. ledna 2024 nebudete moct vytvářet nové prostředky konfigurace clusteru založené na fluxu v1.
Použití Azure CLI
Pomocí rozšíření Azure CLI můžete k8s-configuration
propojit připojený cluster s ukázkovým úložištěm Git.
Pojmenujte tuto konfiguraci
cluster-config
.Řekněte agentovi, aby operátor nasadil v
cluster-config
oboru názvů.Udělte operátorovi
cluster-admin
oprávnění.az k8s-configuration flux create --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name cluster-config --operator-namespace cluster-config --repository-url https://github.com/Azure/arc-k8s-demo --scope cluster --cluster-type connectedClusters
{ "complianceStatus": { "complianceState": "Pending", "lastConfigApplied": "0001-01-01T00:00:00", "message": "{\"OperatorMessage\":null,\"ClusterState\":null}", "messageLevel": "3" }, "configurationProtectedSettings": {}, "enableHelmOperator": false, "helmOperatorProperties": null, "id": "/subscriptions/<sub id>/resourceGroups/<group name>/providers/Microsoft.Kubernetes/connectedClusters/<cluster name>/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/cluster-config", "name": "cluster-config", "operatorInstanceName": "cluster-config", "operatorNamespace": "cluster-config", "operatorParams": "--git-readonly", "operatorScope": "cluster", "operatorType": "Flux", "provisioningState": "Succeeded", "repositoryPublicKey": "", "repositoryUrl": "https://github.com/Azure/arc-k8s-demo", "resourceGroup": "MyRG", "sshKnownHostsContents": "", "systemData": { "createdAt": "2020-11-24T21:22:01.542801+00:00", "createdBy": null, "createdByType": null, "lastModifiedAt": "2020-11-24T21:22:01.542801+00:00", "lastModifiedBy": null, "lastModifiedByType": null }, "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" }
Použití veřejného úložiště Git
Parametr | Formát |
---|---|
--repository-url |
http[s]://server/úložiště[.git] |
Použití privátního úložiště Git s protokolem SSH a klíči vytvořenými nástrojem Flux
Přidejte veřejný klíč vygenerovaný nástrojem Flux do uživatelského účtu u vašeho poskytovatele služeb Git. Pokud se klíč přidá do úložiště místo uživatelského účtu, použijte git@
místo user@
adresy URL.
Další podrobnosti najdete v části Použít konfiguraci z privátního úložiště Git.
Parametr | Formát | Notes |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] nebo user@server:repo[.git] | git@ může nahradit user@ |
Použití privátního úložiště Git s protokolem SSH a klíči poskytnutými uživatelem
Zadejte svůj vlastní privátní klíč přímo nebo do souboru. Klíč musí být ve formátu PEM a musí končit novým řádekem (\n).
Přidejte přidružený veřejný klíč do uživatelského účtu u vašeho poskytovatele služeb Git. Pokud je klíč přidán do úložiště místo uživatelského účtu, použijte git@
místo user@
.
Další podrobnosti najdete v části Použít konfiguraci z privátního úložiště Git.
Parametr | Formát | Notes |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] nebo user@server:repo[.git] | git@ může nahradit user@ |
--ssh-private-key |
Kódovaný klíč base64 ve formátu PEM | Zadat klíč přímo |
--ssh-private-key-file |
úplná cesta k místnímu souboru | Zadejte úplnou cestu k místnímu souboru, který obsahuje klíč formátu PEM. |
Použití privátního hostitele Git s protokolem SSH a uživatelem zadanými známými hostiteli
Operátor Flux udržuje ve svém souboru známých hostitelů seznam známých hostitelů Git, aby mohl před navázáním připojení SSH ověřit úložiště Git. Pokud používáte neobvyklé úložiště Git nebo vlastního hostitele Git, můžete zadat klíč hostitele, aby flux mohl identifikovat vaše úložiště.
Stejně jako privátní klíče můžete obsah known_hosts poskytnout přímo nebo v souboru. Při poskytování vlastního obsahu použijte specifikace known_hosts formátu obsahu spolu s některým z výše uvedených klíčových scénářů SSH.
Parametr | Formát | Notes |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] nebo user@server:repo[.git] | git@ může nahradit user@ |
--ssh-known-hosts |
kódování base64 | Poskytnutí obsahu známých hostitelů přímo |
--ssh-known-hosts-file |
úplná cesta k místnímu souboru | Poskytnutí známého obsahu hostitelů v místním souboru |
Použití privátního úložiště Git s HTTPS
Parametr | Formát | Notes |
---|---|---|
--repository-url |
https://server/repo[.git] | HTTPS se základním ověřováním |
--https-user |
nezpracované nebo zakódované kódování base64 | Uživatelské jméno HTTPS |
--https-key |
nezpracované nebo zakódované kódování base64 | Osobní přístupový token HTTPS nebo heslo |
Poznámka:
- Chart operátora Helm verze 1.2.0+ podporuje privátní ověřování verze HELM https.
- Verze HTTPS Helm není podporovaná pro clustery spravované službou AKS.
- Pokud potřebujete flux pro přístup k úložišti Git prostřednictvím proxy serveru, budete muset aktualizovat agenty Azure Arc pomocí nastavení proxy serveru. Další informace najdete v tématu Připojení pomocí odchozího proxy serveru.
Další parametry
Přizpůsobte konfiguraci pomocí následujících volitelných parametrů:
Parametr | Popis |
---|---|
--enable-helm-operator |
Přepněte na povolení podpory pro nasazení chartů Helm. |
--helm-operator-params |
Hodnoty grafu pro operátor Helm (pokud je povoleno). Například --set helm.versions=v3 . |
--helm-operator-chart-version |
Verze grafu pro operátor Helm (pokud je povolená). Použijte verzi 1.2.0 nebo novější. Výchozí hodnota: 1.2.0. |
--operator-namespace |
Název oboru názvů operátoru. Výchozí hodnota: default. Max: 23 znaků. |
--operator-params |
Parametry operátoru. Musí se zadat v jednoduchých uvozovkách. Například --operator-params='--git-readonly --sync-garbage-collection --git-branch=main' |
Možnosti podporované v --operator-params
:
Možnost | Popis |
---|---|
--git-branch |
Větev úložiště Git, které se má použít pro manifesty Kubernetes. Výchozí hodnota je master. Novější úložiště mají pojmenovanou main kořenovou větev , v takovém případě je potřeba nastavit --git-branch=main . |
--git-path |
Relativní cesta v úložišti Git pro Flux k vyhledání manifestů Kubernetes |
--git-readonly |
Úložiště Git bude považováno za jen pro čtení. Flux se do něj nepokusí psát. |
--manifest-generation |
Pokud je tato možnost povolená, flux vyhledá soubor .flux.yaml a spustí Kustomize nebo jiné generátory manifestu. |
--git-poll-interval |
Období, ve kterém se má dotazovat úložiště Git na nové potvrzení Výchozí hodnota je 5m (5 minut). |
--sync-garbage-collection |
Pokud je tato možnost povolená, flux odstraní vytvořené prostředky, ale už nejsou v Gitu. |
--git-label |
Popisek pro sledování průběhu synchronizace Používá se k označení větve Git. Výchozí hodnota je flux-sync . |
--git-user |
Uživatelské jméno pro potvrzení Gitu |
--git-email |
E-mail, který se má použít pro potvrzení Gitu |
Pokud nechcete, aby flux zapisuje do úložiště nebo --git-user
--git-email
není nastavený, --git-readonly
automaticky se nastaví.
Další informace najdete v dokumentaci k fluxu.
Poznámka:
Flux se ve výchozím nastavení synchronizuje z master
větve úložiště Git. Novější úložiště Git však mají kořenovou větev s názvem main
, v takovém případě musíte nastavit --git-branch=main
v parametru --operator-params.
Tip
Konfiguraci můžete vytvořit na webu Azure Portal na kartě GitOps prostředku Kubernetes s podporou Azure Arc.
Ověření konfigurace
Pomocí Azure CLI ověřte, že se konfigurace úspěšně vytvořila.
az k8s-configuration flux show --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
Prostředek konfigurace se aktualizuje o stav dodržování předpisů, zprávy a informace o ladění.
{
"complianceStatus": {
"complianceState": "Installed",
"lastConfigApplied": "2020-12-10T18:26:52.801000+00:00",
"message": "...",
"messageLevel": "Information"
},
"configurationProtectedSettings": {},
"enableHelmOperator": false,
"helmOperatorProperties": {
"chartValues": "",
"chartVersion": ""
},
"id": "/subscriptions/<sub id>/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/cluster-config",
"name": "cluster-config",
"operatorInstanceName": "cluster-config",
"operatorNamespace": "cluster-config",
"operatorParams": "--git-readonly",
"operatorScope": "cluster",
"operatorType": "Flux",
"provisioningState": "Succeeded",
"repositoryPublicKey": "...",
"repositoryUrl": "git://github.com/Azure/arc-k8s-demo.git",
"resourceGroup": "AzureArcTest",
"sshKnownHostsContents": null,
"systemData": {
"createdAt": "2020-12-01T03:58:56.175674+00:00",
"createdBy": null,
"createdByType": null,
"lastModifiedAt": "2020-12-10T18:30:56.881219+00:00",
"lastModifiedBy": null,
"lastModifiedByType": null
},
"type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}
Když se vytvoří nebo aktualizuje konfigurace, stane se několik věcí:
- Azure Arc
config-agent
monitoruje Azure Resource Manager pro nové nebo aktualizované konfigurace (Microsoft.KubernetesConfiguration/sourceControlConfigurations
) a všimne si novéPending
konfigurace. - Přečte
config-agent
vlastnosti konfigurace a vytvoří cílový obor názvů. - Azure Arc
controller-manager
vytvoří účet služby Kubernetes a mapuje ho na ClusterRoleBinding nebo RoleBinding pro příslušná oprávnění (cluster
nebonamespace
obor). Pak nasadí instanciflux
. - Pokud používáte možnost SSH s klíči vygenerovanými fluxem,
flux
vygeneruje klíč SSH a protokoluje veřejný klíč. config-agent
Hlásí stav zpět ke konfiguračnímu prostředku v Azure.
Během procesu zřizování se prostředek konfigurace přesune několika změnami stavu. Sledujte průběh pomocí příkazu az k8s-configuration flux show výše:
Změna fáze | Popis |
---|---|
complianceStatus ->Pending |
Představuje počáteční a probíhající stavy. |
complianceStatus ->Installed |
config-agent cluster se úspěšně nakonfiguroval a nasadil flux bez chyby. |
complianceStatus ->Failed |
config-agent došlo k chybě při flux nasazování . Podrobnosti jsou uvedeny v complianceStatus.message textu odpovědi. |
Použití konfigurace z privátního úložiště Git
Pokud používáte privátní úložiště Git, musíte ve svém úložišti nakonfigurovat veřejný klíč SSH. Buď zadáte, nebo Flux vygeneruje veřejný klíč SSH. Veřejný klíč můžete nakonfigurovat pro konkrétní úložiště Git, nebo pro uživatele Gitu, který má k úložišti přístup.
Získání vlastního veřejného klíče
Pokud jste si vygenerovali vlastní klíče SSH, pak již máte privátní i veřejné klíče.
Získání veřejného klíče pomocí Azure CLI
Pokud klíče generuje nástroj Flux, použijte v Azure CLI následující postup.
az k8s-configuration flux show --resource-group <resource group name> --cluster-name <connected cluster name> --name <configuration name> --cluster-type connectedClusters --query 'repositoryPublicKey'
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAREDACTED"
Získání veřejného klíče z webu Azure Portal
Pokud Flux generuje klíče, projděte si následující informace na webu Azure Portal.
- Na webu Azure Portal přejděte k prostředku připojeného clusteru.
- Na stránce prostředku vyberte GitOps a prohlédněte si seznam konfigurací pro tento cluster.
- Vyberte konfiguraci, ve které se používá privátní úložiště Git.
- V kontextovém okně, které se otevře v dolní části okna, zkopírujte veřejný klíč úložiště.
Přidání veřejného klíče pomocí GitHubu
Použijte jednu z následujících možností:
Možnost 1: Přidání veřejného klíče do vašeho uživatelského účtu (platí pro všechna úložiště ve vašem účtu):
- Otevřete GitHub a klikněte na ikonu profilu v pravém horním rohu stránky.
- Klikněte na Nastavení.
- Klikněte na klíče SSH a GPG.
- Klikněte na nový klíč SSH.
- Zadejte název.
- Vložte veřejný klíč bez okolních uvozovek.
- Klikněte na Přidat klíč SSH.
Možnost 2: Přidání veřejného klíče jako klíče nasazení do úložiště Git (platí pouze pro toto úložiště):
- Otevřete GitHub a přejděte do svého úložiště.
- Klikněte na Nastavení.
- Klikněte na Nasadit klíče.
- Klikněte na Přidat klíč nasazení.
- Zadejte název.
- Zaškrtněte možnost Povolit přístup pro zápis.
- Vložte veřejný klíč bez okolních uvozovek.
- Klikněte na Přidat klíč.
Přidání veřejného klíče pomocí úložiště Azure DevOps
K přidání klíče mezi vaše klíče SSH použijte následující postup:
- V části Uživatelská nastavení v pravém horním rohu (vedle image profilu) klikněte na veřejné klíče SSH.
- Vyberte + Nový klíč.
- Zadejte název.
- Vložte veřejný klíč bez okolních uvozovek.
- Klikněte na tlačítko Přidat.
Ověření konfigurace Kubernetes
Po config-agent
instalaci flux
instance by prostředky uchovávané v úložišti Git měly začít proudit do clusteru. Pomocí následujícího příkazu zkontrolujte, že se vytvořily obory názvů, nasazení a prostředky:
kubectl get ns --show-labels
NAME STATUS AGE LABELS
azure-arc Active 24h <none>
cluster-config Active 177m <none>
default Active 29h <none>
itops Active 177m fluxcd.io/sync-gc-mark=sha256.9oYk8yEsRwWkR09n8eJCRNafckASgghAsUWgXWEQ9es,name=itops
kube-node-lease Active 29h <none>
kube-public Active 29h <none>
kube-system Active 29h <none>
team-a Active 177m fluxcd.io/sync-gc-mark=sha256.CS5boSi8kg_vyxfAeu7Das5harSy1i0gc2fodD7YDqA,name=team-a
team-b Active 177m fluxcd.io/sync-gc-mark=sha256.vF36thDIFnDDI2VEttBp5jgdxvEuaLmm7yT_cuA2UEw,name=team-b
Vidíme, že team-a
byly vytvořeny , team-b
itops
a cluster-config
obory názvů.
Operátor flux
se nasadil do cluster-config
oboru názvů podle pokynů prostředku konfigurace:
kubectl -n cluster-config get deploy -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
cluster-config 1/1 1 1 3h flux docker.io/fluxcd/flux:1.16.0 instanceName=cluster-config,name=flux
memcached 1/1 1 1 3h memcached memcached:1.5.15 name=memcached
Další průzkum
Další prostředky nasazené v rámci úložiště konfigurace můžete prozkoumat pomocí následujících možností:
kubectl -n team-a get cm -o yaml
kubectl -n itops get all
Vyčištění prostředků
Odstraňte konfiguraci pomocí Azure CLI nebo webu Azure Portal. Po spuštění příkazu delete se prostředek konfigurace okamžitě odstraní v Azure. Úplné odstranění přidružených objektů z clusteru by mělo proběhnout do 10 minut. Pokud je konfigurace ve stavu selhání při odebrání, úplné odstranění přidružených objektů může trvat až hodinu.
Když se odstraní konfigurace s oborem namespace
, azure Arc neodstraní obor názvů, aby nedošlo k přerušení stávajících úloh. V případě potřeby můžete tento obor názvů odstranit ručně pomocí kubectl
.
az k8s-configuration flux delete --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
Poznámka:
Všechny změny clusteru, které byly výsledkem nasazení ze sledovaného úložiště Git, se při odstranění konfigurace neodstraní.
Důležité
Tento kurz je určený pro GitOps s flux v1. GitOps s flux v2 je teď k dispozici pro clustery Kubernetes s podporou Azure Arc a Azure Kubernetes Service (AKS). Přejděte do kurzu pro GitOps s flux v2. Doporučujeme migrovat na Flux v2 co nejdříve.
Podpora prostředků konfigurace clusteru založených na flux v1 vytvořených před 1. lednem 2024 skončí 24. května 2025. Od 1. ledna 2024 nebudete moct vytvářet nové prostředky konfigurace clusteru založené na fluxu v1.
Další kroky
V dalším kurzu se dozvíte, jak implementovat CI/CD s GitOps.