При наступлении с Kubernetes и Helm процесс по всему жизненному циклу выпуска может чувствовать себя как черная коробка; При необходимости следовать процессам отладки, чтобы понять, что происходит за кулисами. Хелм крючки могут помочь с этим.
Этот пост дает обзор:
- Хелм крючки, почему и как они используются;
- Пример проекта, который вы можете следовать вместе с; и
- Как вы можете использовать HELM-крючки в вашем трубопроводе Codefresh.
Если вы новичок в Helm, мы предлагаем проверить наш Предыдущее руководство Во-первых, а затем возвращайтесь, чтобы узнать больше о крючках Helm.
Обзор: Что такое Helm крючки?
Крючки выполняют одно действие в указанной точке во время жизненного цикла выпуска. На каждом этапе крюки могут быть использованы для вмешательства в релиз для обновлений, понижения и удаления.
Например, крюки Helm помогут вам управлять зависимостями. Это может существовать вне кластера Kubernetes или внешней зависимости. Крючки позволяют определить, когда и будь то услуга, установка или обновление завершены перед началом нового. Например, если вы хотите портировать информацию о пользователе в вашу базу данных, вы можете убедиться, что новые данные успешно переданы перед выполнением запросов.
Значения аннотации крюка
Крючки не применяются напрямую к среде Kubernetes во время стандартной обработки. Вместо этого крючки бегут в отдельном стручке внутри ваших кластеров Kubernetes. Значение, указанное в аннотации HELM.SH/HOOK, определяет, когда крюк должен быть отображен. Это позволяет выполнять операции в определенные точки во время жизненного цикла выпуска.
Хелмные крючки имеют несколько значений аннотации, которые используются для уточнения, когда крючок должен быть выполнен. Одна аннотация может использоваться в нескольких точках во время выпуска. В целом, есть девять мест, где можно назвать крючок; Обзор предусмотрен в следующей таблице, взятой из официальной документации по рулевым документам.
| Значение аннотации | Описание |
| Предварительно установка | Выполняется после отображения шаблонов, но до того, как любые ресурсы будут созданы в Kubernetes |
| Post-install. | Выполняется после того, как все ресурсы загружены в Kubernetes |
| предварительно удалять | Выполняет запрос делеции до удаления любых ресурсов из Kubernetes |
| пост-удаление | Выполняется в запросе делеции после всех ресурсов релиза были удалены |
| Предварительно обновление | Выполняется по запросу обновления после отображения шаблонов, но до обновления любых ресурсов |
| постподатив | Выполняется на модернизации после обновления всех ресурсов |
| предварительный откат | Выполняется в запросе отката после того, как шаблоны отображаются, но прежде чем какие-либо ресурсы откатываются назад |
| пост-откат | Выполняет запрос на откат после всех ресурсов были изменены |
| контрольная работа | Выполняется, когда вызывается подкоманда теста HELM (просмотреть тестовые документы) |
Оригинальная таблица можно найти в официальном HELM Документация Отказ
Пример с использованием рульных крючков
Этот учебник сосредоточен на установке жизненного цикла.
Helm предоставляет два крючка для установки Life Cycle, «Pre-install» и «Post-install».
- «Предыдущая установка» используется после отображения шаблонов и до создания ресурсов в Кубейнетах;
- «Post-install» используется после того, как все ресурсы загружены в Kubernetes. Таким образом, его можно было бы использовать для вызова серии проверок.
Давайте начнем работать с рулями крючками. Для следующего примера мы будем использовать Этот репозиторий Github , который является простым реагированным проектом для запроса статей из Hacker News. Пожалуйста, клонируйте репозиторий на ваш аккаунт GitHub. В качестве альтернативы вы можете следовать со своим собственным проектом или запустить новое приложение React с « » Create-raction-app ‘. Решение за вами.
Вот что мы собираемся сделать:
- Покрыть предпосылки
- Настройка Codefresh.yml Файл
- Добавить предварительную установку и пост установочный крючок
- Настройка вашего конвейера Codefresh
Предварительные условия
Предполагается, что вы уже настроили кластер Kubernetes с Codefresh Отказ Этот учебник не будет охватывать процесс настройки. Вы можете узнать больше о кластерах Kubernetes в Codefresh в документации Codefresh на Используя Helm в кодовой трубопроводе Отказ
Кроме того, убедитесь, что вы:
- Есть Установлен Хэлм Отказ
- Иметь основную настройку диаграммы HELM; сделать, чтобы вы могли либо Следуйте этим руководством Отказ В качестве альтернативы, Пример репо При условии уже есть хелма.
- Может Доступ докера В вашем терминале и что ваш проект уже имеет DockerFile. Создайте свое изображение Docker и используйте один и тот же репозиторий на вашем хелме. Используя примерный репозиторий, это уже сделано для вас. Тем не менее, вы также можете Следуйте этим руководством Чтобы установить это в вашем проекте.
Настройка Codefresh.yml Файл
Файл Codefresh.yml используется для создания конвейера Codefresh и позволяет настроить шаги сборки в вашем конвейере. Есть два способа настроить файл Codefresh.yml. А именно,
- Создайте файл трубопровода с нуля
- Установка нового конвейера CodeFresh и измените его в соответствии с вашими потребностями. Это создаст файл Codefresh.yml в UI Codefresh автоматически. Затем вы можете настроить файл в пользовательском интерфейсе.
С целью этого урока мы будем следовать первым вариантом и определить наш файл Codefresh.yml в нашей папке проекта. Обратите внимание, что если вы используете примерный репозиторий, файл Codefresh.yml уже установлен. Однако, если вы используете другое изображение raction или/и докера, пожалуйста, убедитесь, что изменяйте его, как описано ниже.
Чтобы настроить файл Codefresh.yml, выполните следующую команду в вашей основной папке проекта:
touch codefresh.yml
Наше Codefresh.yml . Файл будет использовать Минимальная настройка Для этого проекта, но не стесняйтесь нырять глубже и добавить Фристайл шаги в соответствии с вашими потребностями.
version: "1.0"
stages:
- "clone"
- "build"
- "test"
- "deploy"
steps:
clone:
title: "Cloning repository"
type: "git-clone"
repo: "anais-codefresh/react-article-display"
revision: "${{CF_BRANCH}}"
git: "github"
stage: "clone"
build:
title: "Building Docker image"
type: "build"
image_name: "anaisurlichs/react-article-display"
working_directory: "./react-article-display"
tag: "${{CF_BRANCH_TAG_NORMALIZED}}"
dockerfile: "Dockerfile"
stage: "build"
test:
title: "Running test"
type: "freestyle" # Run any command
image: "ubuntu:latest" # The image in which command will be executed
working_directory: "./react-article-display" # Running command where code cloned
commands:
- "ls"
stage: "test"
Пожалуйста, не забудьте адаптировать следующие ключи в свой проект:
image_name: "your Docker image name goes here" working_directory: "change to your working directory"
На следующих шагах мы добавим наши Helm крючки на наш хелм-график.
Добавить предварительную установку и пост установочный крючок
На этом этапе мы завершили минимальную настройку, чтобы использовать Docker, кодовый трубопровод и диаграммы HELM. Теперь мы добавим Helm предварительно установить крючок на нашу карту на основе Шаблон предоставляется официальной документацией по рулевым документам и внесении модификаций по мере необходимости.
Крючки помещают в папку/шаблонов вашей графики и называли аннотацией HELM.SH/HOOK. Если вы просматриваете существующие файлы, вы можете увидеть, что крючок уже используется в шаблоне по умолчанию в Диаграммы/Пример-график/шаблоны/Test-Connection.yaml файл.
annotations: "helm.sh/hook": test-success
Во-первых, создайте файл Pre-install-job.yaml в каталоге шаблонов внутри папки диаграммы. Далее добавьте После шаблона :
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ .Release.Name }}"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
annotations:
# hooks are defined here
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
metadata:
name: "{{ .Release.Name }}"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
restartPolicy: Never
containers:
- name: pre-install-job
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ['sh', '-c', 'echo pre-install Job Pod is Running ; sleep 2']
Этот раздел аннотации указывает наш крючок:
annotations: # hooks are defined here "helm.sh/hook": pre-install "helm.sh/hook-weight": "-5" "helm.sh/hook-delete-policy": hook-succeeded
Далее мы сделаем то же самое для наших Пост-Установите крюк Отказ Создайте файл Post-install-took.yaml в каталоге шаблонов. Это будет выглядеть в значительной степени так же, как предварительно установочный крючок. Основное отличие будет аннотация крюка.
annotations: # hooks are defined here "helm.sh/hook": post-install "helm.sh/hook-weight": "3" "helm.sh/hook-delete-policy": hook-succeeded
helm install example-hook ./charts/example-chart
helm ls
Просмотр деталей крючка
- Удалите следующую строку из Post-install-job.yaml:
- Установите новый график:
- Когда вы просмотрите стручки Kubernetes, вы увидите дополнительный POD:
- Просмотр деталей стручка:
Приложение доступа
Установка кодового трубопровода
deploy:
type: "helm"
working_directory: "./react-article-display"
arguments:
action: "install"
chart_name: "charts/example-chart"
release_name: "example-chart"
helm_version: 3.0.2
kube_context: "anais-cluster@codefresh-sa"
stage: "deploy"
Убедитесь, что ваше значение Chart_name указывает на имя диаграммы в основном хранилище, в нашем случае это «графики/пример-график», и что ваш Kube_Context состояния кластера Kubernetes подключен к вашей учетной записи Codefresh что вы будете использовать. Если у вас нет кластера Kubernetes, подключенных к Codefresh, сейчас самое время для этого.
Далее мы будем толкать все наши изменения в вашем хранилище GitHUB. Как только это сделано, мы создадим наш конвейер Codefresh.
- В вашей учетной записи Codefresh выберите «Новый проект» сверху справа от приборной панели в проектах. Нажмите:
- Далее следуйте инструкциям по созданию вашего проекта.
- Как только вы создали свой проект, вы будете перенаправлены на раздел вашего проекта на вашу приборную панель:
- Продолжай и создайте трубопровод для вашего проекта. Предполагая, что вы подключены к учетной записи GitHub к Codefresh, он попросит вас выбрать репозиторий, для которого вы хотите создать конвейер. После того, как вы предоставили информацию, вы будете перенаправлены на рабочий процесс, на котором отображается автоматически сгенерированный файл CodeFresh.yml. В нашем случае мы будем использовать yaml с нашего репозитория вместо этого.
- Ударил в нижней части экрана; которые будут направлять вас на шаг кодовойферш. Вы можете выполнить обработку через командную строку. После этого вы увидите вывод нашего файла Notes.txt.
- Теперь диаграмма HELM развернута наши кластере Kubernetes, используя трубопровод Codefresh. Для просмотра HELM Chart, Access Helm> Выпускается в DEVOPS Insights. Вы должны увидеть что-то похожее на следующее. Если нет, пожалуйста, убедитесь, что вы выбрали правую версию HELM и кластер Kubernetes в настройках.
Резюме
В этом уроке мы смотрели на крючки HELM, что они используются, для различных типов аннотаций крючков, и, наконец, настроить пример проекта для использования предварительной установки и постмонтажа. Если вы выполнили все шаги, у вас есть проект вверх и работает в вашем конвейере Codefresh, который использует руль для управления ресурсами Kubernetes.
Пожалуйста, дайте нам знать в комментариях, было ли это руководство полезно, у вас есть какие-либо вопросы, предложения или полезные ссылки для сообщества, чтобы узнать больше о крючках Helm.
✨new до Codefresh? Создайте свой бесплатный аккаунт сегодня ✨. И если вам понравился этот пост и хочу убедиться, что другие увидят это тоже, пожалуйста, дайте ему 🤩
Оригинал: «https://dev.to/codefreshio/tutorial-using-helm-hooks-in-your-codefresh-pipeline-3gme»