Рубрики
Uncategorized

Учебник: Использование крючков HELM в вашем трубопроводе Codefresh

При наступлении с Kubernetes и Helm, процесс по всему жизненному циклу выпуска может почувствовать … Tagged DevOps, Helm, Kubernetes, CICD.

При наступлении с 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

Просмотр деталей крючка

  1. Удалите следующую строку из Post-install-job.yaml:
  2. Установите новый график:
  3. Когда вы просмотрите стручки Kubernetes, вы увидите дополнительный POD:
  4. Просмотр деталей стручка:

Приложение доступа

Установка кодового трубопровода

 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.

  1. В вашей учетной записи Codefresh выберите «Новый проект» сверху справа от приборной панели в проектах. Нажмите:
  2. Далее следуйте инструкциям по созданию вашего проекта.
  3. Как только вы создали свой проект, вы будете перенаправлены на раздел вашего проекта на вашу приборную панель:
  4. Продолжай и создайте трубопровод для вашего проекта. Предполагая, что вы подключены к учетной записи GitHub к Codefresh, он попросит вас выбрать репозиторий, для которого вы хотите создать конвейер. После того, как вы предоставили информацию, вы будете перенаправлены на рабочий процесс, на котором отображается автоматически сгенерированный файл CodeFresh.yml. В нашем случае мы будем использовать yaml с нашего репозитория вместо этого.
  5. Ударил в нижней части экрана; которые будут направлять вас на шаг кодовойферш. Вы можете выполнить обработку через командную строку. После этого вы увидите вывод нашего файла Notes.txt.
  6. Теперь диаграмма 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»