Obsługa narzędzi Helm i Kustomize

Azure Developer CLI zapewnia obsługę narzędzi Helm i Kustomize, aby ulepszyć proces aprowizacji i wdrażania w usłudze Azure Kubernetes Service (AKS). Helm i Kustomize to narzędzia, które ułatwiają konfigurowanie aplikacji Kubernetes i zarządzanie nimi. W nadchodzących sekcjach dowiesz się, jak włączyć i dostosować obsługę tych narzędzi w szablonach azd.

Włączanie obsługi programu Helm

Aby włączyć obsługę programu Helm, upewnij się, że masz zainstalowany interfejs wiersza polecenia programu Helm. Włącz flagę azd funkcji helm, uruchamiając azd config polecenie:

azd config set alpha.aks.helm on

Konfiguracja i wdrażanie programu Helm

azd Obsługa programu Helm umożliwia zdefiniowanie listy pakietów Helm do zainstalowania dla każdej azd usługi. Użyj sekcji konfiguracyjnych helm i k8s w pliku azure.yaml aby zdefiniować listę repozytoriów Helm lub wydań do zainstalowania.

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  argocd:
    host: aks
    k8s:
      namespace: argo
      service:
        name: argocd-server
      helm:
        repositories:
          - name: argo
            url: https://argoproj.github.io/argo-helm
        releases:
          - name: argocd
            chart: argo/argo-cd
            version: 5.51.4
  jupyterhub:
    host: aks
    k8s:
      namespace: jupyterhub
      service:
        name: proxy-public
      helm:
        repositories:
          - name: jupyterhub
            url: https://hub.jupyter.org/helm-chart/
        releases:
          - name: jupyterhub
            chart: jupyterhub/jupyterhub
            version: 3.1.0

Polecenie azd deploy obsługuje następujące zadania przy użyciu helm sekcji :

  • Dodaje wszystkie przywoływane repozytoria Helm i/lub je aktualizuje
  • Instaluje przywołytowane wykresy programu Helm
  • Czeka na przejście wydania programu Helm do stanu wdrożenia
  • Wyświetla listę odpowiednich usług i punktów dostępowych zdefiniowanych w zasobach wdrożenia

Zrzut ekranu przedstawiający dane wyjściowe wdrożenia programu Helm.

Włącz obsługę Kustomize

Aby włączyć obsługę Kustomize, upewnij się, że masz zainstalowany CLI Kustomize. Włącz flagę azd funkcji Kustomize przy użyciu azd config polecenia :

azd config set alpha.aks.kustomize on

Konfigurowanie i wdrażanie usługi Kustomize

Funkcja Kustomize umożliwia korzystanie z usługi Kustomize w ramach wdrożeń platformy Kubernetes i udostępnia następujące funkcje:

  • Obsługuje base i variant konfiguracje
  • edits które można uruchomić przed wdrożeniami
  • configMapGenerator z środowiskami azd

Skonfiguruj funkcje usługi Kustomize, korzystając z następujących azure.yaml sekcji:

  • dir: ścieżka względna z usługi do katalogu Kustomize zawierającego plik kustomization.yaml.
    • Obsługuje podstawianie zmiennych środowiskowych.
  • edits: Tablica wyrażeń edycji, które są stosowane przed wdrożeniem
    • Obsługuje podstawianie zmiennych środowiskowych
  • env: Mapa par klucz/wartość wygenerowana przed wdrożeniem
    • Wartości mapy obsługują podstawianie zmiennych środowiskowych

Przypadki użycia

azd obsługuje następujące przypadki użycia Kustomize.

Wdrażaj manifesty K8s

Poniższa konfiguracja wykonuje polecenie kubectl apply -k <dir>, które wskazuje folder manifestów zawierający kustomization.yaml.

# azure.yaml

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      kustomize:
        dir: ./kustomize/base

Używanie nakładek do wdrażania na różne warianty

Ten przypadek użycia jest zwykle używany do niestandardowych konfiguracji dla wdrożeń na różnych etapach lub w różnych środowiskach, takich jak dev, test i prod. W poniższym przykładzie użytkownik może określić zmienną środowiskową ${AZURE_ENV_NAME} w katalogu kustomize, aby automatycznie używać środowisk azd jako domyślnej konwencji nakładki.

# azure.yaml

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      kustomize:
        dir: ./kustomize/overlays/${AZURE_ENV_NAME}

Zmodyfikuj kustomization.yaml przed wdrożeniem

Typowym przypadkiem użycia modyfikowania elementu kustomization.yaml jest zmodyfikowanie nazw/wersji obrazów kontenera używanych w ramach wdrożenia.

Poniższy przykład określa konfigurację edits i ustawia dowolne prawidłowe kustomize edit ... polecenie. azd automatycznie interpoluje wszystkie zmienne środowiskowe, do których odwołuje się edit polecenie .

# azure.yaml

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      kustomize:
        dir: ./kustomize/overlays/${AZURE_ENV_NAME}
        edits:
          - set image todo-api=${SERVICE_API_IMAGE_NAME}

Używanie azd zmiennych środowiskowych w ramach map konfiguracji

Mapy konfiguracyjne lub sekrety są kluczowe przy konfigurowaniu klastrów K8s. Ponieważ kustomize nie obsługuje żadnych bezpośrednich podstawiań zmiennych środowiskowych, możemy użyć kustomize configMapGenerator z plikiem .env.

Sekcja kustomize konfiguracji obsługuje sekcję env, w której można zdefiniować jedną lub wiele par klucz/wartość. Ta konfiguracja automatycznie generuje plik tymczasowy .env w katalogu kustomizacji, który może być używany przez configMapGenerator.

Poniższa konfiguracja tworzy obiekt .env z określonymi parami klucz/wartość.

# azure.yaml

name: todo-nodejs-mongo-aks
metadata:
  template: todo-nodejs-mongo-aks@0.0.1-beta
services:
  api:
    project: ./src/api
    language: js
    host: aks
    k8s:
      kustomize:
        dir: ./kustomize/overlays/${AZURE_ENV_NAME}
        edits:
          - set image todo-api=${SERVICE_API_IMAGE_NAME}
        env:
          AZURE_AKS_IDENTITY_CLIENT_ID: ${AZURE_AKS_IDENTITY_CLIENT_ID}
          AZURE_KEY_VAULT_ENDPOINT: ${AZURE_KEY_VAULT_ENDPOINT}
          APPLICATIONINSIGHTS_CONNECTION_STRING: ${APPLICATIONINSIGHTS_CONNECTION_STRING}

Element configMapGenerator generuje mapę konfiguracji K8s z określoną nazwą i zawiera wszystkie pary klucz/wartość, do których odwołuje się .env plik.

# kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - deployment.yaml
  - service.yaml
  - ingress.yaml

configMapGenerator:
  - name: todo-web-config
    envs:
      - .env