Рубрики
Uncategorized

Начало работы с Helm 3 с использованием React и Codefresh

Helm — это менеджер пакета приложений для Кубебени. Использование Kubernetes часто может быть подавляющим … Теги с DevOps, Docker, Helm, Kubernetes.

Helm — это менеджер пакета приложений для Кубебени. Использование Kubernetes часто может быть подавленным для поддержания ресурсов. Поскольку Kubernetes настроены файлами yaml, тем более сложным приложение становится, тем сложнее будет ориентироваться и вносить изменения в соответствующие файлы; Подумайте о многих и много повторяющихся файлов YAML. Сценарий, который делает каждый разрабатыватель. Хелм может помочь вам решить это.

Этот пост блога объяснит, что такое Helm, как это работает, и предоставить прохождение того, как вы можете настроить свой первый хелм-график.

Helm Обзор

HELM позволяет пользователям определять общий план приложения или выбора микросервисов на кластере Kubernetes через шаблоны HELM. Хелм шаблоны описывают ресурсы вашего приложения. Они будут генерировать файлы манифеста, которые Kubernetes могут понимать, чтобы установить и запустить ваше приложение. Комбинация шаблонов HELM и в соответствии со значениями называется хелм-графиком.

Каждый релиз проходит через несколько этапов, включая его установку, обновление, удаление и откат. С помощью Helm вы можете группировать несколько микросервисов вместе и относиться к ним как один объект. Вы можете либо создать свой собственный график или использовать существующий из Хелм Артефактный хаб. После того, как ваше приложение будет упаковано в хелм-график, она может быть легко передач и развернута на Kubernetes.

Многие критики Хелма основаны на Helm 2. Тем не менее, Helm внес несколько серьезных изменений между Helm 2 и Helm 3, а именно:

  • Нет больше румпеля: Helm 2 должен был использоваться в сочетании с румпером, который получил много критики для его контроля доступа;
  • Информация об выпуске теперь по умолчанию хранится в секретах: для получения информации о выпуске Helm может просто получить доступ к секрете, расшифруйте его и применить его. Вот почему Thilder больше не нужен.
  • Пространства имен не создаются автоматически для выпусков: Helm 3 следует соглашениями о именовании Kubecl, выбрасывая сообщение об ошибке, если вы пытаетесь создать отпуск, где пространство имен не существует;
  • Валидация диаграммы схемы JSON. Проверка: позволяя поддерживать сопровождающие для настройки jsonschema для определения конкретных типов значений на графике, инструмент проверки автоматически запускается на установке HELM/unpgrade/lint.

Несколько функций и спецификаций HELM являются необязательными или могут быть настроены на основе потребностей вашего проекта и ваших предпочтений. Если вы знакомы с Helm 2, но не 3, вы можете проверить выезда. Кроме того, Helm 2 больше не будет получать обновления безопасности с 13 ноября.

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

Альтернативы гелю

Существует несколько альтернатив HELM, которые предоставляют возможности шаблонов для управления ресурсами Kubernetes. Однако просто шаблон часто не достаточно, чтобы управлять сложностью Куберанес.

Одна широко продвигаемая альтернатива — операторы Kubernetes. Оператор представляет собой способ упаковки, развертывания и управления приложением Kubernetes. Таким образом, операторы Helm и Kubernetes иногда используются взаимозаменяемо для автоматизации задач. Однако они на самом деле совсем разные.

Оба инструмента должны использоваться для разных целей. Хелм намеревался быть менеджером пакета для Кубебени. В сравнении, операторы предназначены для перевода пользовательских знаний в многоразовый код для расширения и автоматизации процессов. Таким образом, как Мэтт Мясник , создатель Хелма, ставит это :

«Helm — менеджер по пакетам для Куберанес. Операторы — это кусочки кода, управляемые с рисунком дизайн, которые заключаются в том, что инкапсулируют знания для запуска приложения. Тем не менее (…), есть вопросы, плавающие вокруг, о котором есть «победитель».

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

Решение между обоими или использованием как в комбинации, в значительной степени зависит от типа приложения, который вы хотите управлять.

Начало работы с Helm

Этот учебник предоставит пошаговое руководство по тому, как вы можете настроить свой первый график HELM для вашего проекта; Приняв вас от установки HELM для развертывания диаграммы и настройки конвейера кодового вещества.

Предварительные условия

  • Пожалуйста, убедитесь, что имейте доступ к кластеру Kubernetes. Для первой половины учебника Minikube или Microk8s достаточно. Если вы не уверены, какой пользоваться, посмотрите на Это руководство Отказ
  • Инструмент командной строки Kubernetes — kubectl Отказ

Установка руля

Хелм обеспечивает несколько Варианты установки . Мы на Ubuntu и собираемся использовать Snap для установки Helm: Sudo Snap Install Helm --Classic

Тем не менее, вы также можете использовать существующий менеджер пакетов, такой как доменя или шоколади, или установка из двоичного выпуска, источника или сценария.

Настройка вашей первой карты HELM

Мы будем основывать нашу хелм-график на этом Реагировать приложение . Следовать в руководстве, вы можете либо

  • клонировать приложение и сделайте именно то, что мы делаем,
  • Примените шаги в свое собственное приложение Nodejs,
  • Или применить и адаптировать шаги в свое собственное приложение, используя шаги здесь в качестве ссылки.

Решение зависит от вас.

Set-Up Dockerfile

Мы будем использовать Docker Image нашего приложения в нашем графике HELM. Следуйте следующим шагам, чтобы создать свой DockerFile.

Для DockerFile мы используем многоступенчатую сборку для объединения нескольких сборки в одном доке DockerFile. Вы можете прочитать больше на многостадийных сборках на Codefresh blog Отказ

В вашей основной папке проекта создайте DockerFile:

Touch Dockerfile

Откройте файл и не скопируйте и вставьте следующее Dockerfile в свой собственный докер или измените контент в соответствии с вашими потребностями. Пожалуйста, посмотрите на комментарии, предоставленные для получения дополнительной информации.

# Pull official base image

FROM node:14.9.0 as build-deps

# A directory within the virtualized Docker environment

# Becomes more relevant when using Docker Compose later

WORKDIR /usr/src/app

# Copies package.json and package-lock.json to Docker environment

COPY package.json yarn.lock ./

# Installs all node packages

RUN npm install

# Copies everything over to Docker environment

COPY . ./

# Installs all node packages

RUN npm run build

# the base image for this is an alpine based nginx image

FROM nginx:1.19-alpine

# copy the build folder from react to the root of nginx (www)

COPY --from=build-deps /usr/src/app/build /usr/share/nginx/html

# expose port 80 to the outer world

EXPOSE 80

# start nginx

CMD ["nginx", "-g", "daemon off;"]

Обратите внимание на наше. Dockerignore Файл, ссылающийся на файлы и папки, которые будут игнорироваться демоном Docker. Узнайте больше о Важность Dockerignore И как вы можете оптимизировать свои образы Docker с правильными спецификациями.

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

Docker Build -t.

Если вы используете тот же DockerFile, вы должны ожидать, что вывод, аналогичный указанному ниже:

Если вы получили какие-либо сообщения об ошибках, пожалуйста, разрешите тем, прежде чем перейти к следующему шагу.

Как только мы создали DockerFile, мы можем запустить следующую команду для доступа к нашему приложению:

Docker Run -it —rm -P 3001: 80

Тогда вы можете открыть приложение на http://localhost: 3001/ Отказ

Наконец, мы хотим опубликовать нашу докерный образ в публичный реестр. В нашем случае мы собираемся использовать Docker Hub. Тем не менее, вы также можете использовать другой реестр, такой как Реестр контейнера GitHub Отказ Выбор остается за вами.

Войти в докер:

Docker Login.

Нажмите на ваше изображение:

Docker Push

Глаф для набора

Далее мы создадим график руль. Этот учебник будет использовать Кодовая документация Чтобы настроить диаграмму HELM с Хелм создать команда.

  1. Настройка папки диаграммы в вашем основном репозитории: MKDIR диаграммы
  2. Изменить в папку диаграммы: CD Charts
  3. Запустите команду HELM, чтобы создать шаблон диаграммы: HELM Создать пример-график

Это создаст следующий каталог в вашем основном репозитории:

charts/example-chart/

templates/         # the chart template

charts/         # any chart dependencies

.helmignore         # files to ignore

Chart.yaml          # meta-information about the chart

Values.yaml         # default values for the chart template

Чтобы использовать наш собственный репозиторий приложений вместо предоставленного хранилища по умолчанию, мы должны заменить репозиторий и тег по умолчанию внутри значений.yaml с нашим именем хранилища.

image:

repository: anaisurlichs/react-article-display 

Сочетание руля с кодомфрейшей

  • Создать трубопровод с нуля;
  • Используйте автосверенный трубопровод в качестве отправной точки.

С целью этого урока мы будем следовать первым вариантом и определить наш файл Codefresh.yml в нашей папке проекта.

Чтобы настроить файл Codefresh.yml, выполните следующую команду в вашей основной папке проекта:

Прикосновение 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"

Пожалуйста, не забудьте адаптировать следующие ключи в свой проект:

image_name: "your Docker image name goes here"

working_directory: "change to your working directory"

Пожалуйста, добавьте следующее в вашем файле CodeFresh.yml, чтобы использовать диаграммы HELM, которые вы определены на предыдущем шаге.

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"

Для учебных целей мы установим диаграмму HELM напрямую из файловой системы нашего трубопровода. Обычно вы сначала выдвинули диаграмму HELM к вашим репозитории HELM, а затем установите.

Убедитесь, что ваше значение Chart_name указывает на имя диаграммы в основном хранилище, в нашем случае это «графики/пример-график», и что ваш Kube_Context состояния кластера Kubernetes подключен к вашей учетной записи Codefresh что вы будете использовать. Если у вас нет кластера Kubernetes, подключенных к Codefresh, сейчас самое время для этого.

Далее мы будем толкать все наши изменения в вашем хранилище GitHUB. Как только это сделано, мы установим наш конвейеров Codefres.

  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 в настройках.

Резюме

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

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

Новичок в Codefresh? Создайте свой бесплатный аккаунт сегодня!

Оригинал: «https://dev.to/codefreshio/getting-started-with-helm-3-using-react-and-codefresh-1k10»