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

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

Структура диаграммы Helm

С помощью команды create, Helm предоставляет предопределенную структуру для обеспечения стандарта.

hello-world

├── Chart.yaml
├─ ─ диаграммы
├── шаблоны
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── values.yaml

Файлы, указанные выше, будут автогенерируемая. Helm использует формат YAML для файлов конфигурации.

Вызов Helm

Чтобы использовать Helm, вам понадобятся следующие вещи :

  • Кластер Kubernetes (Minikube обеспечивает простой способ запуска Kubernetes)
  • Установите Helm и Tiller, серверный компонент.

(Убедитесь, что версии Minikube и Tiller совместимы с кластером Kubernetes)

После установки всех компонентов запустите свой minikube:

$ minikube start

Вам также потребуется использовать следующую команду для инициализации Helm и Tiller:

$ helm init

Затем используйте следующую команду Helm для создания структуры, описанной выше:

$ helm create hello-world

Написание вашей первой диаграммы Helm

Давайте проверим статус модулей:

$ kubectl get pod —all-namespaces
NAMESPACE NAME R EADY STATUS ВОЗВРАЩАЕТСЯ ВОЗРАСТ
kube-system kube-addon-manager-minikube 1/1 Выполняется 2 1 час
kube-system kube-dns-54cccfbdf8-xcltd 3/3 Работает 6 1 час
kube-system kubernetes-dashboard-77d8b98585-sj9lm 1/1 Выполняется 2 1 час
kube-system storage-provisioner 1/1 Выполняется 2 1 час
kube-system tiller-deploy-59d854595c-97hdp 1 /1 Бег 2 1 ч.

Блок управления и блоки мини-куба работают. Давайте внесем некоторые изменения в Helm Charts. Мы собираемся открыть value.yml. Это выглядит так:

# Значения по умолчанию для hello-world.
# Это файл в формате YAML.
# Объявление переменных для быть переданы в ваши шаблоны.

replicaCount: 1

image:
репозиторий: heroku/nodejs-hello-world
тег: стабильный
pullPolicy: IfNotPresent

служба:
тип: ClusterIP
порт: 80

вход :
включено: false
аннотации: {}
# kubernetes.io/ingress.class: nginx
# kubernetes. io/tls-acme: «true»
путь:/
хосты:
— chart-example.local
tls: []
# — secretName: chart-example-tls
# hosts:
# — chart-example.local

resources: {}
# Обычно мы рекомендую не указывать ресурсы по умолчанию и оставить это как сознательный
# выбор для пользователя. Это также увеличивает шансы запуска диаграмм в средах с небольшими ресурсами
#, таких как Minikube. Если вы все же хотите указать ресурсы, раскомментируйте следующие строки
#, измените их по мере необходимости и удалите фигурные скобки после ‘resources:’.
# limits:
# cpu : 100m
# память: 128Mi
# запросы:
# cpu: 100m
# память: 128Mi

nodeSelector: { }

допуски: []

affinity: {}

Выделенная строка была изменена. Вместо nginx мы загрузим heroku/nodejs-hello-world. Вы можете установить значения по умолчанию в этом файле value.yml. Они будут использоваться совместно с другими файлами.

Если мы проверим Helm, мы ничего не увидим:

$ helm ls

Начнем с Helm Chart:

$ helm install hello-world
NAME: kissing-markhor
ПОСЛЕДНИЙ РАЗВЕРТЫВАНИЕ: пт, 9 марта, 09:13:04 2018
NAMESPACE: по умолчанию
СТАТУС: РАЗВЕРТЫВАЕТСЯ

РЕСУРСЫ:
==> v1/ Служба
ИМЯ ТИП КЛАСТЕР-IP ВНЕШНИЙ IP-ПОРТ (И) ВОЗРАСТ
kissing-markhor-hello-world ClusterIP 10.110.109.73 80/TCP 1s

==> v1beta2/Развертывание
ИМЯ ЖЕЛАТЕЛЬНОЕ АКТУАЛЬНОЕ АКТУАЛЬНОЕ ДОСТУПНЫЙ ВОЗРАСТ
kissing-markhor-hello-world 1 1 1 0 1s

==> v1/Pod (связанный)
ИМЯ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ ВОЗРАСТ
kissing-markhor-hello-world-6bbb947b9c-rttnz 0/1 ContainerCreating 0 1s

ПРИМЕЧАНИЯ:
ПРИМЕЧАНИЯ:
1. Получите URL-адрес приложения, выполнив следующие команды:
export POD_NAME = $ (kubectl get pods —namespace default -l «app = hello-world, release = kissing
-markhor» -o jsonpath = «{.items [0] .metadata.name}»)
echo «Посетите http://127.0.0.1:8080, чтобы использовать ваше приложение»
kubectl port-forward $ POD_NAME 8080: 80

Заметная часть — это «ИМЯ». Это имя было сгенерировано Helm.

Давайте проверим Helm:

$ helm ls
ИМЯ ПЕРЕСМОТР ОБНОВЛЕННАЯ ДИАГРАММА СОСТОЯНИЯ NAMESPACE
kissing-markhor 1 пт 9 марта 09:13:04 2018 РАЗВЕРТЫВАЕТСЯ hello-world-0.1. 0 по умолчанию

Также Kubernetes:

$ kubectl get pod —all-namespaces
NAMESPACE NAME READY STATUS ВОЗРАСТ ВОССТАНОВЛЕНИЯ
default kissing-markhor-hello-world-6bbb947b9c-rttnz 1/1 Бег 0 5 м
kube-system kube-addon-manager-minikube 1/1 Бег 2 2 ч
kube-system kube-dns-54cccfbdf8-xcltd 3/3 Выполняется 6 2 часа
kube-system kubernetes-dashboard-77d8b98585-sj9lm 1/1 Выполняется 2 2 часа
kube-system storage-provisioner 1 /1 Запуск 2 2 часа
kube-system tiller-deploy-59d854595c-97hdp 1/1 Запуск 2 2 часа

Итак, модуль развернут в Kubernetes. Мы можем использовать переадресацию портов:

$ kubectl port-forward kissing-markhor-hello-world-6bbb947b9c-rttnz 8080: 80

Теперь вы можете проверить развернутое приложение.

$ curl http://127.0.0.1:8080

Добро пожаловать в nginx!

body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}

Добро пожаловать в nginx!

Если вы видите эту страницу, веб-сервер nginx успешно установлен и
работает. Требуется дополнительная настройка.

Для получения интерактивной документации и поддержки обратитесь к
nginx.org .

Коммерческая поддержка доступна на
nginx.com .

Спасибо за использование nginx.

Кроме того, вы можете проверить http://127.0.0.1:8080, чтобы увидеть только что созданное приложение. Давай приберемся. Найдите имя сервера:

$ helm ls
ИМЯ ПЕРЕСМОТР ОБНОВЛЕННАЯ ДИАГРАММА СТАТУСА NAMESPACE

kissing-markhor 1 пт, 9 марта 09:13:04 2018 РАЗВЕРТЫВАЕТСЯ hello-world-0.1. 0 по умолчанию

Используйте следующую команду для удаления:

$ helm delete kissing-markhor
release «kissing -markhor «удален

Давайте проверим кластер:

$ kubectget pod —all-namespaces
NAMESPACE НАЗВАНИЕ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ ВОЗРАСТ
kube-system kube-addon-manager-minikube 1/1 Выполняется 2 2 часа
kube-system kube-dns-54cccfbdf8-xcltd 3/3 Работает 6 2 часа
kube-system kubernetes-dashboard-77d8b98585-sj9lm 1/1 Выполняется 2 2 часа
kube-system storage-provisioner 1/1 Выполняется 2 2 часа
kube-system tiller-deploy-59d854595c-97hdp 1/1 Бег 2 2 часа

Мы видим, что маркер поцелуев исчез.

Заключение

Вышесказанное должно вдохновить вас на то, чтобы начать использовать Helm Charts. Это должно упростить обработку ваших развертываний Kubernetes.

Ссылки:

  • helm.sh/
  • docs.bitnami.com/kubernetes/how-to/create-your-first-helm-chart/
  • https://docs.helm.sh/using_helm/
  • Создание Helm-диаграмм с нуля: введение в Kubernetes [I] — Эми Чен, Heptio
  • Развертывание приложения NodeJS в Kubernetes с помощью Helm | Эпизод 3
Оцените статью
nanomode.ru
Добавить комментарий