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 a Azure Kubernetes Service (AKS) s podporou Azure Arc. přejděte na kurz 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 Flux v1.
V tomto kurzu použijete konfigurace pomocí GitOps v clusteru Kubernetes s podporou Azure Arc. Dozvíte se, jak:
- 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řte si účet 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.
Porozumění výhodám a architektuře této funkce Další informace najdete v článku Konfigurace a GitOps – 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 už je rozšíření 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 strukturováno podle osoby operátora clusteru. Manifesty v tomto úložišti zřizují několik oborů názvů, nasazují úlohy a poskytují konfiguraci pro konkrétní tým. Použití tohoto úložiště s GitOps vytvoří v clusteru následující prostředky:
- Obory názvů:
cluster-config
, ,team-a
team-b
- Nasazení:
arc-k8s-demo
- ConfigMap:
team-a/endpoints
Dotazuje config-agent
Azure na nové nebo aktualizované konfigurace. Tento úkol bude trvat až 5 minut.
Pokud ke konfiguraci přidružujete privátní úložiště, proveďte následující kroky v tématu Použití konfigurace z privátního úložiště Git.
Použití Azure CLI
K propojení připojeného clusteru s ukázkovým úložištěm Git použijte rozšíření Azure CLI prok8s-configuration
.
Pojmenujte tuto konfiguraci
cluster-config
.Požádejte agenta, aby nasadil operátor v
cluster-config
oboru názvů.Udělte operátorovi
cluster-admin
oprávnění.az k8s-configuration 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/repo[.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@
v adrese URL místo klíče user@
.
Další podrobnosti najdete v části Použití konfigurace z privátního úložiště Git .
Parametr | Formát | Poznámky |
---|---|---|
--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 řetězcem (\n).
Přidejte přidružený veřejný klíč 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@
Další podrobnosti najdete v části Použití konfigurace z privátního úložiště Git .
Parametr | Formát | Poznámky |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] nebo user@server:repo[.git] | git@ může nahradit user@ |
--ssh-private-key |
klíč s kódováním base64 ve formátu PEM | Přímé zadání klíče |
--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 Gitu, můžete zadat klíč hostitele, aby flux mohl identifikovat vaše úložiště.
Stejně jako soukromé klíče můžete known_hosts obsah 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 | Poznámky |
---|---|---|
--repository-url |
ssh://user@server/repo[.git] nebo user@server:repo[.git] | git@ může nahradit user@ |
--ssh-known-hosts |
kódování base64 | Přímé poskytování obsahu známých hostitelů |
--ssh-known-hosts-file |
úplná cesta k místnímu souboru | Poskytnutí obsahu známých hostitelů v místním souboru |
Použití privátního úložiště Git s HTTPS
Parametr | Formát | Poznámky |
---|---|---|
--repository-url |
https://server/repo[.git] | HTTPS se základním ověřováním |
--https-user |
kódování raw nebo base64 | Uživatelské jméno HTTPS |
--https-key |
kódování raw nebo base64 | Token nebo heslo pro osobní přístup HTTPS |
Poznámka
- Chart operátora Helm verze 1.2.0+ podporuje privátní ověřování https Helm verze.
- Verze HTTPS Helm se u spravovaných clusterů AKS nepodporuje.
- Pokud potřebujete flux pro přístup k úložišti Git prostřednictvím proxy serveru, budete muset aktualizovat agenty Azure Arc nastavením 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 podporu nasazení chartů Helm. |
--helm-operator-params |
Hodnoty grafu pro operátor Helm (pokud je povolená) 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í: "výchozí". Maximálně: 23 znaků. |
--operator-params |
Parametry pro operátor. Musí být zadané v jednoduchých uvozovkách. Například --operator-params='--git-readonly --sync-garbage-collection --git-branch=main' . |
Podporované možnosti v --operator-params
:
Možnost | Popis |
---|---|
--git-branch |
Větev úložiště Git, která se má používat pro manifesty Kubernetes. Výchozí hodnota je "master". Novější úložiště mají kořenovou větev s názvem main , v takovém případě musíte 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 povoleno, flux vyhledá .flux.yaml a spustí Kustomize nebo jiné generátory manifestu. |
--git-poll-interval |
Období, ve kterém se má v úložišti Git dotazovat na nová potvrzení Výchozí hodnota je 5m (5 minut). |
--sync-garbage-collection |
Pokud je povoleno, flux odstraní prostředky, které vytvořil, ale už nejsou v Gitu. |
--git-label |
Popisek pro sledování průběhu synchronizace. Používá se k označení větve Gitu. Výchozí je flux-sync . |
--git-user |
Uživatelské jméno pro potvrzení Gitu |
--git-email |
Email použít pro potvrzení Gitu. |
Pokud nechcete, aby flux zapisovat do úložiště a --git-user
nebo --git-email
není nastavený, nastaví --git-readonly
se automaticky.
Další informace najdete v dokumentaci k fluxu.
Poznámka
Flux se ve výchozím nastavení synchronizuje master
z 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ě je potřeba nastavit --git-branch=main
v parametru --operator-params.
Tip
Konfiguraci můžete vytvořit v 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 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"
}
Při vytvoření nebo aktualizaci konfigurace se stane několik věcí:
- Azure Arc
config-agent
monitoruje nové nebo aktualizované konfigurace AzureMicrosoft.KubernetesConfiguration/sourceControlConfigurations
Resource Manager a všimne si novéPending
konfigurace. - Načte
config-agent
vlastnosti konfigurace a vytvoří cílový obor názvů. - Azure Arc
controller-manager
vytvoří účet služby Kubernetes a namapuje ho na ClusterRoleBinding nebo RoleBinding pro příslušná oprávnění (cluster
nebonamespace
obor). Pak nasadí instanci nástrojeflux
. - Pokud použijete možnost SSH s klíči vygenerovanými fluxem,
flux
vygeneruje klíč SSH a protokoluje veřejný klíč. - Stav
config-agent
hlásí zpět do konfiguračního prostředku v Azure.
Během procesu zřizování bude prostředek konfigurace procházet několika změnami stavu. Průběh monitorujte pomocí výše uvedeného az k8s-configuration show ...
příkazu:
Změna fáze | Popis |
---|---|
complianceStatus ->Pending |
Představuje počáteční a probíhající stavy. |
complianceStatus ->Installed |
config-agent cluster úspěšně nakonfiguroval a nasadil flux se bez chyby. |
complianceStatus ->Failed |
config-agent při nasazování flux došlo k chybě . 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 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
Projděte si následující informace v Azure Portal, jestli flux generuje klíče.
- Na webu Azure Portal přejděte k prostředku připojeného clusteru.
- Na stránce prostředku vyberte GitOps a podívejte se na 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, zkopírujte v dolní části okna 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 svého 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 profilového obrázku) 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 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, jestli 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
se vytvořily obory názvů , team-b
itops
, a cluster-config
.
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é jako součást ú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 Azure Portal. Po spuštění příkazu delete se prostředek konfigurace okamžitě odstraní v Azure. K úplnému odstranění přidružených objektů z clusteru by mělo dojít během 10 minut. Pokud je konfigurace po odebrání ve stavu selhání, úplné odstranění přidružených objektů může trvat až hodinu.
Při odstranění konfigurace s oborem namespace
azure Arc obor názvů neodstraní, aby nedošlo k naruš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 delete --name cluster-config --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
Poznámka
Při odstranění konfigurace se neodstraní žádné změny clusteru, které byly výsledkem nasazení ze sledovaného úložiště Git.
Další kroky
V dalším kurzu se dozvíte, jak implementovat CI/CD pomocí GitOps.