Szybki start: programowanie w usłudze Azure Kubernetes Service (AKS) przy użyciu narzędzia Helm

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 zarządza wykresami Kubernetes, które są pakietami wstępnie skonfigurowanych zasobów Kubernetes.

W tym przewodniku Szybki start użyjesz narzędzia Helm, aby spakować i uruchomić aplikację w usłudze AKS. Aby uzyskać informacje na temat instalowania istniejącej aplikacji przy użyciu programu Helm, zobacz Instalowanie istniejących aplikacji za pomocą programu Helm w usłudze AKS.

Wymagania wstępne

Tworzenie rejestru Azure Container Registry

Aby uruchomić aplikację w klastrze usługi AKS przy użyciu narzędzia Helm, musisz przechowywać obrazy kontenerów w usłudze Azure Container Registry (ACR). Nazwa rejestru musi być unikatowa na platformie Azure i zawierać od 5 do 50 znaków alfanumerycznych. Dozwolone są tylko małe litery. Podstawowa jednostka SKU to zoptymalizowany pod kątem kosztów punkt wejścia do celów programistycznych zapewniający równowagę między przestrzenią dyskową i przepływnością.

  1. Utwórz grupę zasobów platformy Azure przy użyciu polecenia az group create . W poniższym przykładzie tworzona jest grupa zasobów o nazwie myResourceGroup w lokalizacji eastus.

    az group create --name myResourceGroup --location eastus
    
  2. Utwórz usługę Azure Container Registry o unikatowej nazwie, wywołując polecenie az acr create . Poniższy przykład tworzy rekord ACR o nazwie myhelmacr z podstawową jednostkę SKU.

    az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
    

    Dane wyjściowe powinny wyglądać podobnie do następujących skróconych przykładowych danych wyjściowych. Zanotuj wartość loginServer dla usługi ACR, która ma być używana w późniejszym kroku.

    {
      "adminUserEnabled": false,
      "creationDate": "2023-12-26T22:36:23.998425+00:00",
      "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myhelmacr",
      "location": "eastus",
      "loginServer": "myhelmacr.azurecr.io",
      "name": "myhelmacr",
      "networkRuleSet": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sku": {
        "name": "Basic",
        "tier": "Basic"
      },
      "status": null,
      "storageAccount": null,
      "tags": {},
      "type": "Microsoft.ContainerRegistry/registries"
    }
    

Tworzenie klastra AKS

Nowy klaster usługi AKS musi mieć dostęp do usługi ACR, aby ściągnąć obrazy kontenerów i uruchomić je.

  • Utwórz klaster usługi AKS przy użyciu polecenia az aks create z parametrem --attach-acr w celu udzielenia klastrowi dostępu do usługi ACR. Poniższy przykład tworzy klaster usługi AKS o nazwie myAKSCluster i udziela mu dostępu do usługi ACR myhelmacr . Pamiętaj, aby zastąpić myhelmacr ciąg nazwą usługi ACR.

    az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
    

Połączenie do klastra usługi AKS

Aby połączyć klaster Kubernetes lokalnie, należy użyć klienta wiersza polecenia Kubernetes, kubectl. kubectl program jest już zainstalowany, jeśli używasz usługi Azure Cloud Shell.

  1. Zainstaluj kubectl lokalnie za pomocą polecenia az aks install-cli .

    az aks install-cli
    
  2. Skonfiguruj, kubectl aby nawiązać połączenie z klastrem Kubernetes przy użyciu polecenia az aks get-credentials . Następujące polecenie pobiera poświadczenia dla klastra usługi AKS o nazwie myAKSCluster w grupie myResourceGroup.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Pobieranie przykładowej aplikacji

W tym przewodniku Szybki start jest używana aplikacja Azure Vote.

  1. Sklonuj aplikację z usługi GitHub przy użyciu git clone polecenia .

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Przejdź do azure-vote katalogu przy użyciu cd polecenia .

    cd azure-voting-app-redis/azure-vote/
    

Kompilowanie i wypychanie przykładowej aplikacji do usługi ACR

  • Skompiluj i wypchnij obraz do usługi ACR przy użyciu polecenia az acr build . Poniższy przykład tworzy obraz o nazwie azure-vote-front:v1 i wypycha go do usługi ACR myhelmacr . Pamiętaj, aby zastąpić myhelmacr ciąg nazwą usługi ACR.

    az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
    

Uwaga

Możesz również zaimportować wykresy programu Helm do usługi ACR. Aby uzyskać więcej informacji, zobacz Wypychanie i ściąganie wykresów Helm do rejestru kontenerów platformy Azure.

Tworzenie wykresu programu Helm

  1. Wygeneruj helm create wykres Helm przy użyciu polecenia .

    helm create azure-vote-front
    
  2. Zaktualizuj plik azure-vote-front/Chart.yaml , aby dodać zależność dla wykresu redis z https://charts.bitnami.com/bitnami repozytorium wykresu i zaktualizować appVersion go do v1elementu , jak pokazano w poniższym przykładzie:

    Uwaga

    Wersje obrazów kontenera pokazane w tym przewodniku zostały przetestowane pod kątem pracy z tym przykładem, ale mogą nie być najnowszą dostępną wersją.

    apiVersion: v2
    name: azure-vote-front
    description: A Helm chart for Kubernetes
    
    dependencies:
      - name: redis
        version: 17.3.17
        repository: https://charts.bitnami.com/bitnami
    
    ...
    # This is the version number of the application being deployed. This version number should be
    # incremented each time you make changes to the application.
    appVersion: v1
    
  3. Zaktualizuj zależności wykresu helm przy helm dependency update użyciu polecenia .

    helm dependency update azure-vote-front
    
  4. Zaktualizuj plik azure-vote-front/values.yaml , wykonując następujące zmiany.

    • Dodaj sekcję redis, aby ustawić szczegóły obrazu, port kontenera i nazwę wdrożenia.
    • Dodaj element backendName na potrzeby łączenia części frontonu z wdrożeniem usługi Redis.
    • Zmień plik image.repository na <loginServer>/azure-vote-front.
    • Zmień wartość image.tag na v1.
    • Zmień wartość service.type na LoadBalancer.

    Na przykład:

    replicaCount: 1
    backendName: azure-vote-backend-master
    redis:
      image:
        registry: mcr.microsoft.com
        repository: oss/bitnami/redis
        tag: 6.0.8
      fullnameOverride: azure-vote-backend
      auth:
        enabled: false
    
    image:
      repository: myhelmacr.azurecr.io/azure-vote-front
      pullPolicy: IfNotPresent
      tag: "v1"
    ...
    service:
      type: LoadBalancer
      port: 80
    ...
    
  5. Dodaj sekcję env do pliku azure-vote-front/templates/deployment.yaml , aby przekazać nazwę wdrożenia usługi Redis .

    ...
          containers:
            - name: {{ .Chart.Name }}
              securityContext:
                {{- toYaml .Values.securityContext | nindent 12 }}
              image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
              imagePullPolicy: {{ .Values.image.pullPolicy }}
              env:
              - name: REDIS
                value: {{ .Values.backendName }}
    ...
    

Uruchamianie wykresu helm

  1. Zainstaluj aplikację przy użyciu pakietu Helm przy użyciu helm install polecenia .

    helm install azure-vote-front azure-vote-front/
    
  2. Zwrócenie publicznego adresu IP przez usługę może potrwać kilka minut. Monitoruj postęp za pomocą kubectl get service polecenia z argumentem --watch .

    kubectl get service azure-vote-front --watch
    

    Gdy usługa jest gotowa, EXTERNAL-IP wartość zmienia się z <pending> na adres IP. Naciśnij klawisz , CTRL+C aby zatrzymać proces zegarka kubectl .

      NAME               TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
      azure-vote-front   LoadBalancer   10.0.18.228   <pending>       80:32021/TCP   6s
      ...
      azure-vote-front   LoadBalancer   10.0.18.228   52.188.140.81   80:32021/TCP   2m6s
    
  3. Przejdź do modułu równoważenia obciążenia aplikacji w przeglądarce przy użyciu polecenia , <EXTERNAL-IP> aby wyświetlić przykładową aplikację.

Usuwanie klastra

  • Usuń grupę zasobów, klaster usługi AKS, rejestr kontenerów platformy Azure, obrazy kontenerów przechowywane w usłudze ACR i wszystkie powiązane zasoby przy użyciu polecenia az group delete z --yes parametrem w celu potwierdzenia usunięcia i --no-wait parametru, aby powrócić do wiersza polecenia bez oczekiwania na zakończenie operacji.

    az group delete --name myResourceGroup --yes --no-wait
    

Uwaga

Jeśli klaster usługi AKS został utworzony przy użyciu tożsamości zarządzanej przypisanej przez system (domyślna opcja tożsamości w tym przewodniku Szybki start), tożsamość jest zarządzana przez platformę i nie wymaga usunięcia.

Jeśli klaster usługi AKS został utworzony przy użyciu jednostki usługi, jednostka usługi nie zostanie usunięta po usunięciu klastra. Aby usunąć jednostkę usługi, zobacz Zagadnienia i usuwanie jednostki usługi AKS.

Następne kroki

Aby uzyskać więcej informacji na temat korzystania z programu Helm, zobacz dokumentację programu Helm.