Sdílet prostřednictvím


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-ateam-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.

  1. Pojmenujte tuto konfiguraci cluster-config.

  2. Řekněte agentovi, aby operátor nasadil v cluster-config oboru názvů.

  3. 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 mainkoř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í:

  1. Azure Arc config-agent monitoruje Azure Resource Manager pro nové nebo aktualizované konfigurace (Microsoft.KubernetesConfiguration/sourceControlConfigurations) a všimne si nové Pending konfigurace.
  2. Přečte config-agent vlastnosti konfigurace a vytvoří cílový obor názvů.
  3. Azure Arc controller-manager vytvoří účet služby Kubernetes a mapuje ho na ClusterRoleBinding nebo RoleBinding pro příslušná oprávnění (cluster nebo namespace obor). Pak nasadí instanci flux.
  4. Pokud používáte možnost SSH s klíči vygenerovanými fluxem, flux vygeneruje klíč SSH a protokoluje veřejný klíč.
  5. 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 fluxnasazová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.

  1. Na webu Azure Portal přejděte k prostředku připojeného clusteru.
  2. Na stránce prostředku vyberte GitOps a prohlédněte si seznam konfigurací pro tento cluster.
  3. Vyberte konfiguraci, ve které se používá privátní úložiště Git.
  4. 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):

    1. Otevřete GitHub a klikněte na ikonu profilu v pravém horním rohu stránky.
    2. Klikněte na Nastavení.
    3. Klikněte na klíče SSH a GPG.
    4. Klikněte na nový klíč SSH.
    5. Zadejte název.
    6. Vložte veřejný klíč bez okolních uvozovek.
    7. 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ě):

    1. Otevřete GitHub a přejděte do svého úložiště.
    2. Klikněte na Nastavení.
    3. Klikněte na Nasadit klíče.
    4. Klikněte na Přidat klíč nasazení.
    5. Zadejte název.
    6. Zaškrtněte možnost Povolit přístup pro zápis.
    7. Vložte veřejný klíč bez okolních uvozovek.
    8. 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:

  1. V části Uživatelská nastavení v pravém horním rohu (vedle image profilu) klikněte na veřejné klíče SSH.
  2. Vyberte + Nový klíč.
  3. Zadejte název.
  4. Vložte veřejný klíč bez okolních uvozovek.
  5. 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-abyly vytvořeny , team-bitopsa 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.