Развертывание с помощью Helm

Завершено

Вы успешно создали и отправили промежуточные и рабочие образы в Реестр контейнеров Azure экземпляре. Пришло время автоматизировать все шаги и сделать конвейер работой для вас.

В настоящее время необходимо вручную изменять файлы при каждом запуске конвейера, поэтому вы не сможете автоматически развертывать файлы. Для решения этой проблемы можно использовать диаграмму Helm для управления развертываниями. В этом уроке вы узнаете о диаграммах и шаблонах Helm.

Чарты Helm

Helm — это инструмент упаковки с открытым кодом, аналогичный диспетчерам пакетов Linux, таким как APT и Yum. Helm поможет вам установить и управлять жизненным циклом приложений Kubernetes.

Вы используете Helm для управления диаграммами Kubernetes, которые являются группами одной или нескольких рабочих нагрузок, упакованных с файлами конфигурации и файлом описания диаграммы. При упаковке в чарт файлы можно легко развернуть как единое целое в кластере Kubernetes.

Одно из преимуществ использования Helm заключается в том, чтобы не нужно развертывать файлы по отдельности. Вы можете выполнить одну команду для развертывания диаграммы. Можно даже развернуть несколько зависимых чартов с автоматическим разрешением зависимостей.

Ниже приведена структура типичного каталога диаграмм Helm:

Screenshot that shows an example of a Helm chart tree.

  • Файл Chart.yaml содержит имя, описание и версию диаграммы.
  • Каталог диаграмм включает зависимые диаграммы.
  • Каталог шаблонов содержит все файлы манифеста .
  • Файл values.yaml содержит значения по умолчанию для шаблонов Helm.

Шаблоны Helm

Отличительной особенностью средства Helm является его способность создавать шаблоны и управлять ими для выполнения автоматизированных развертываний. Шаблоны позволяют автоматически добавлять файлы манифеста в конвейер CI/CD. Файл шаблона представляет собой файл манифеста, который содержит заполнители для значений переменных.

Ознакомьтесь со следующим примером файла deployment.yaml в каталоге kubernetes веб-сайта fork:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: contoso-website
spec:
  selector:
    matchLabels:
      app: contoso-website
  template:
    metadata:
      labels:
        app: contoso-website
    spec:
      containers:
        - image: !IMAGE!
          name: contoso-website
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 256Mi
          ports:
            - containerPort: 80
              name: http

Рабочий !IMAGE! процесс заменяет заполнитель именем экземпляра реестра контейнеров и образа. В ручном рабочем процессе можно выполнить следующую команду, чтобы заменить !IMAGE! заполнитель, а затем распечатать результат. Чтобы запустить код вручную, можно передать команду для kubectl apply -f - создания рабочих нагрузок:

$ sed 's+!IMAGE!+'"$ACR_NAME"'/contoso-website+g' kubernetes/deployment.yaml

Однако это решение вручную не является элегантным или эффективным. При использовании собственного шаблона Helm можно заменить !IMAGE! с помощью переменной {{.Values.containerImage}} .

...
  template:
...
    spec:
      containers:
        - image: {{.Values.containerImage}}
...

Затем выполните команду helm install , чтобы указать на изображение и передать папку диаграмм :

$ helm install contoso-website ./chart-location --set containerImage="$ACR_NAME/contoso-website"

Helm также предлагает функции шаблона для более сложной логики, например для включения значений по умолчанию и обязательных значений в вашей среде. Перейдите к следующему уроку, чтобы создать диаграмму Helm, чтобы сделать конвейер CI/CD более эффективным.

Проверьте свои знания

1.

Что такое Helm?

2.

Что делает Helm особенно полезным в конвейере CI/CD?