Wdrażanie pakietów Helm przy użyciu metodyki GitOps w klastrze Kubernetes z obsługą usługi Azure Arc

Ważne

Ten artykuł dotyczy metodyki GitOps z platformą Flux w wersji 1. Usługa GitOps z rozwiązaniem Flux v2 jest teraz dostępna dla klastrów Kubernetes i Azure Kubernetes Service (AKS) z obsługą usługi Azure Arc; Przejdź do samouczka dotyczącego metodyki GitOps z rozwiązaniem Flux w wersji 2. Zalecamy jak najszybsze przeprowadzenie migracji do wersji Flux v2 .

Obsługa zasobów konfiguracji klastra opartych na platformie Flux w wersji 1 utworzonych przed 1 stycznia 2024 r. zakończy się 24 maja 2025 r. Od 1 stycznia 2024 r. nie będzie można utworzyć nowych zasobów konfiguracji klastra opartego na platformie Flux w wersji 1. Helm to narzędzie do tworzenia pakietów typu open source, które ułatwia instalowanie cyklu życia aplikacji Kubernetes i zarządzanie nim. Podobnie jak menedżerowie pakietów systemu Linux, tacy jak APT i Yum, program Helm służy do zarządzania wykresami Kubernetes, które są pakietami wstępnie skonfigurowanych zasobów Kubernetes.

W tym artykule pokazano, jak skonfigurować narzędzie Helm i używać go z platformą Kubernetes z obsługą usługi Azure Arc.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.

  • Istniejący połączony klaster Kubernetes z włączoną usługą Azure Arc.

  • Zrozumienie korzyści i architektury tej funkcji. Przeczytaj więcej w artykule Configurations and GitOps - Azure Arc-enabled Kubernetes (Konfiguracje i GitOps — platforma Kubernetes z obsługą usługi Azure Arc).

  • Zainstaluj rozszerzenie interfejsu k8s-configuration wiersza polecenia platformy Azure w wersji >= 1.0.0:

    az extension add --name k8s-configuration
    

Omówienie korzystania z usług GitOps i Helm z platformą Kubernetes z włączoną usługą Azure Arc

Operator programu Helm udostępnia rozszerzenie flux, które automatyzuje wydania pakietu Helm Chart. Wydanie pakietu Helm Chart zostało opisane za pośrednictwem niestandardowego zasobu Kubernetes o nazwie HelmRelease. Platforma Flux synchronizuje te zasoby z usługi Git z klastrem, a operator programu Helm upewnia się, że wykresy programu Helm są zwalniane zgodnie z wymaganiami w zasobach.

Przykładowe repozytorium używane w tym artykule jest ustrukturyzowane w następujący sposób:

├── charts
│   └── azure-arc-sample
│       ├── Chart.yaml
│       ├── templates
│       │   ├── NOTES.txt
│       │   ├── deployment.yaml
│       │   └── service.yaml
│       └── values.yaml
└── releases
    └── app.yaml

W repozytorium Git mamy dwa katalogi: jeden zawierający pakiet Helm Chart i jeden zawierający konfigurację wydań. releases W katalogu zawiera app.yaml konfigurację programu HelmRelease pokazaną poniżej:

apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: azure-arc-sample
  namespace: arc-k8s-demo
spec:
  releaseName: arc-k8s-demo
  chart:
    git: https://github.com/Azure/arc-helm-demo
    ref: master
    path: charts/azure-arc-sample
  values:
    serviceName: arc-k8s-demo

Konfiguracja wydania programu Helm zawiera następujące pola:

Pole Opis
metadata.name Pole obowiązkowe. Musi przestrzegać konwencji nazewnictwa platformy Kubernetes.
metadata.namespace Pole opcjonalne. Określa miejsce utworzenia wydania.
spec.releaseName Pole opcjonalne. Jeśli nazwa wydania nie zostanie podana, będzie to $namespace-$name.
spec.chart.path Katalog zawierający wykres (względem katalogu głównego repozytorium).
spec.values Dostosowania użytkownika domyślnych wartości parametrów z samego wykresu.

Opcje określone w wersji Helm Przesłonią spec.values opcje określone w values.yaml źródle wykresu.

Więcej informacji na temat wersji helm można uzyskać w oficjalnej dokumentacji programu Helm Operator.

Tworzenie konfiguracji

Za pomocą rozszerzenia k8s-configurationinterfejsu wiersza polecenia platformy Azure dla programu połącz połączony klaster z przykładowym repozytorium Git. Nadaj tej konfiguracji nazwę azure-arc-sample i wdróż operator Flux w arc-k8s-demo przestrzeni nazw.

az k8s-configuration create --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name flux --operator-namespace arc-k8s-demo --operator-params='--git-readonly --git-path=releases' --enable-helm-operator --helm-operator-chart-version='1.2.0' --helm-operator-params='--set helm.versions=v3' --repository-url https://github.com/Azure/arc-helm-demo.git --scope namespace --cluster-type connectedClusters

Parametry konfiguracji

Aby dostosować tworzenie konfiguracji, dowiedz się więcej o dodatkowych parametrach.

Weryfikacja konfiguracji

Za pomocą interfejsu wiersza polecenia platformy Azure sprawdź, czy konfiguracja została pomyślnie utworzona.

az k8s-configuration show --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters

Zasób konfiguracji jest aktualizowany przy użyciu informacji o stanie zgodności, komunikatach i debugowaniu.

{
  "complianceStatus": {
    "complianceState": "Installed",
    "lastConfigApplied": "2019-12-05T05:34:41.481000",
    "message": "{\"OperatorMessage\":null,\"ClusterState\":null}",
    "messageLevel": "3"
  },
  "enableHelmOperator": "True",
  "helmOperatorProperties": {
    "chartValues": "--set helm.versions=v3",
    "chartVersion": "1.2.0"
  },
  "id": "/subscriptions/57ac26cf-a9f0-4908-b300-9a4e9a0fb205/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/azure-arc-sample",
  "name": "azure-arc-sample",
  "operatorInstanceName": "flux",
  "operatorNamespace": "arc-k8s-demo",
  "operatorParams": "--git-readonly --git-path=releases",
  "operatorScope": "namespace",
  "operatorType": "Flux",
  "provisioningState": "Succeeded",
  "repositoryPublicKey": "",
  "repositoryUrl": "https://github.com/Azure/arc-helm-demo.git",
  "resourceGroup": "AzureArcTest",
  "type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}

Weryfikowanie aplikacji

Uruchom następujące polecenie i przejdź do localhost:8080 w przeglądarce, aby sprawdzić, czy aplikacja jest uruchomiona.

kubectl port-forward -n arc-k8s-demo svc/arc-k8s-demo 8080:8080

Następne kroki

Stosowanie konfiguracji klastra na dużą skalę przy użyciu usługi Azure Policy.