Развертывание с помощью Helm
Вы успешно создали и отправили промежуточные и рабочие образы в Реестр контейнеров Azure экземпляре. Пришло время автоматизировать все шаги и сделать конвейер работой для вас.
В настоящее время необходимо вручную изменять файлы при каждом запуске конвейера, поэтому вы не сможете автоматически развертывать файлы. Для решения этой проблемы можно использовать диаграмму Helm для управления развертываниями. В этом уроке вы узнаете о диаграммах и шаблонах Helm.
Чарты Helm
Helm — это инструмент упаковки с открытым кодом, аналогичный диспетчерам пакетов Linux, таким как APT и Yum. Helm поможет вам установить и управлять жизненным циклом приложений Kubernetes.
Вы используете Helm для управления диаграммами Kubernetes, которые являются группами одной или нескольких рабочих нагрузок, упакованных с файлами конфигурации и файлом описания диаграммы. При упаковке в чарт файлы можно легко развернуть как единое целое в кластере Kubernetes.
Одно из преимуществ использования Helm заключается в том, чтобы не нужно развертывать файлы по отдельности. Вы можете выполнить одну команду для развертывания диаграммы. Можно даже развернуть несколько зависимых чартов с автоматическим разрешением зависимостей.
Ниже приведена структура типичного каталога диаграмм Helm:
- Файл 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 более эффективным.