Поддержка Helm и Kustomize

Интерфейс командной строки разработчика Azure обеспечивает поддержку Helm и Kustomize для улучшения процесса подготовки и развертывания в службе Azure Kubernetes (AKS). Helm и Kustomize — это средства, помогающие настраивать приложения Kubernetes и управлять ими. В следующих разделах вы узнаете, как включить и настроить поддержку этих средств в azd шаблонах.

Включение поддержки Helm

Чтобы включить поддержку Helm, убедитесь, что у вас установлен интерфейс командной строки Helm. azd Включите флаг функции Helm, выполнив azd config команду:

azd config set alpha.aks.helm on

Конфигурация и развертывание Helm

azd Поддержка Helm позволяет определить список чартов Helm для установки для каждого azd сервиса. Используйте разделы конфигурации helm и k8s в файле azure.yaml, чтобы определить список репозиториев helm или выпусков для установки.

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

Команда azd deploy обрабатывает следующие задачи с помощью helm раздела:

  • Добавляет все ссылки на репозитории Helm и (или) обновляет их
  • Устанавливает указанные чарты Helm
  • Ожидание, пока Helm-релиз перейдет в развернутое состояние.
  • Перечисляет соответствующие службы и входящий трафик, определенные в развернутых ресурсах

Снимок экрана вывода данных развертывания Helm.

Включение поддержки Kustomize

Чтобы включить поддержку Kustomize, убедитесь, что установлен интерфейс командной строки Kustomize. azd Включите флаг компонента Kustomize с помощью azd config команды:

azd config set alpha.aks.kustomize on

Настройка и развертывание Kustomize

Функция Kustomize позволяет использовать Kustomize в рамках развертываний Kubernetes и предоставляет следующие функции:

  • Поддержка base и variant конфигурации
  • edits это можно запустить перед развертыванием
  • configMapGeneratorсо средами azd

Настройте функции Kustomize с помощью следующих azure.yaml разделов:

  • dir: относительный путь из службы в каталог Kustomize, содержащий kustomization.yaml файл.
    • Поддерживает подстановку переменных среды.
  • edits: массив выражений редактирования, применяемых перед развертыванием
    • Поддерживает подстановку переменных среды
  • env: отображение пар "ключ-значение", созданное перед развертыванием
    • Значения карты поддерживают подстановку переменных среды

Случаи использования

azd поддерживает следующие варианты использования Kustomize.

Развертывание манифестов K8s

Следующая конфигурация выполняет команду kubectl apply -k <dir>, указывающую на папку манифестов, содержащую 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

Использование наложений для развертывания с различными вариантами

Этот вариант использования обычно применяется для настройки кастомных конфигураций при развертывании на разных этапах или средах, таких как dev, test и prod. В следующем примере пользователь может указать ${AZURE_ENV_NAME} переменную среды в каталоге kustomize, чтобы автоматически использовать среды azd в качестве стандартного наложения.

# 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}

Измените kustomization.yaml перед развертыванием

Типичное использование изменения kustomization.yaml заключается в корректировке имен и версий образов контейнера, используемых в процессе развертывания.

В следующем примере задается edits конфигурация и kustomize edit ... любая допустимая команда. azd автоматически интерполирует все переменные среды, на которые ссылается команда edit .

# 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}

Использование azd переменных среды в картах конфигурации

Карты конфигурации или секреты критически важны при настройке кластеров K8s. Так как kustomize не поддерживает прямую подстановку переменных окружения, можно использовать kustomize configMapGenerator с файлом .env.

Раздел kustomize конфигурации поддерживает env раздел, в котором можно определить одну или несколько пар "ключ-значение". Эта конфигурация автоматически создает временный .env файл в каталоге kustomization, который может использоваться configMapGenerator.

Следующая конфигурация создает .env с указанными парами "ключ-значение".

# 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}

configMapGenerator генерирует ConfigMap K8s с указанным именем, содержащую все пары ключ/значение, упомянутые в файле .env.

# kustomization.yaml

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

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

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