Kubernetes 1.7 – Использование Helm
О технологиях

Kubernetes 1.7 – Использование Helm

1766
6 минут

Использование Helm – это самый простой способ запуска и управления приложениями в кластере Kubernetes. Helm позволяет выполнять ключевые операции по управлению приложениями.

Kubernetes-1.7-Using-Helm


В прошлой статье мы установили небольшой кластер Kubernetes 1.7 на CentOS. Сегодня мы продолжим знакомство с Kubernetes, добавив к нему пакетный менеджер Helm.

Использование Helm – это самый простой способ запуска и управления приложениями в кластере Kubernetes. Helm позволяет выполнять ключевые операции по управлению приложениями, т.к. установка, обновление или их удаление. Если совсем просто, то Helm можно легко рассматривать yum и apt в CentOS или Ubuntu.

Helm состоит из двух частей: Helm (клиент) и Tiller (сервер). Далее мы рассмотрим очень простой процесс установки Helm и Tiller.


Установка Helm

Для установки Helm вам необходимо выполнить следующие команды на хосте, с которого вы администрируете ваш Kubernetes кластер (там, где установлен kubectl):



$ curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

Для пользователей OS X можно воспользоваться brew



$ brew install kubernetes-helm

Что такое Tiller

После того как вы установили клиент Helm, можно переходить к установке Tiller



$ helm init

Если вы хотите обновить уже установленный Tiller на последнюю версию, это делается не менее просто



$ helm init --upgrade

Для проверки, что Tiller установлен корректно, выполните следующую команду



$ kubectl --namespace kube-system get pods | grep tiller
tiller-deploy-3360264398-d82c5   1/1       Running   0          2d

Обязательно проверьте вывод команды



$ helm list

Если вы увидите ошибку



Error: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system". (get configmaps), 

выполните следующие инструкции для создания сервисной учетной записи, необходимой Helm для работы с включенным RBAC (более подробно на GitHub):



$ kubectl create serviceaccount --namespace kube-system tiller
serviceaccount "tiller" created

$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
clusterrolebinding "tiller-cluster-rule" created

$ kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
deployment "tiller-deploy" patched

$ helm init --service-account tiller --upgrade
$HELM_HOME has been configured at /user/.helm.

$ helm list
Error: could not find a ready tiller pod

# Это нормально, tiller pod пересоздается

$ helm list

Установка приложений с помощью Helm

Приложения в Helm называются чартами (charts). Посмотреть список актуальных и доступных чартов можно в их официальном репозитории.

При выполнении команды helm install, выбранное приложение будет развернуто в вашем кластере Kubernetes.

Пример установки Redis:



$ helm install stable/redis
NAME:   nuanced-fish
LAST DEPLOYED: Mon Aug 14 07:05:46 2017
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/Secret
NAME                TYPE    DATA  AGE
nuanced-fish-redis  Opaque  1     1s

==> v1/PersistentVolumeClaim
NAME                STATUS   VOLUME  CAPACITY  ACCESSMODES  STORAGECLASS  AGE
nuanced-fish-redis  Pending  1s

==> v1/Service
NAME                CLUSTER-IP   EXTERNAL-IP  PORT(S)   AGE
nuanced-fish-redis  10.106.51.9         6379/TCP  0s

==> v1beta1/Deployment
NAME                DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
nuanced-fish-redis  1        1        1           0          0s


NOTES:
Redis can be accessed via port 6379 on the following DNS name from within your cluster:
nuanced-fish-redis.default.svc.cluster.local
To get your password run:

    REDIS_PASSWORD=$(kubectl get secret --namespace default nuanced-fish-redis -o jsonpath="{.data.redis-password}" | base64 --decode)

To connect to your Redis server:

1. Run a Redis pod that you can use as a client:

   kubectl run nuanced-fish-redis-client --rm --tty -i --env REDIS_PASSWORD=$REDIS_PASSWORD --image bitnami/redis:3.2.9-r2 -- bash

2. Connect using the Redis CLI:

  redis-cli -h nuanced-fish-redis -a $REDIS_PASSWORD


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

19 июня 2023
Семь трендов на рынке облачных услуг в 2023 году
До 2022 года на рынке облаков в России главенствовали мировые тренды, но сейчас наша страна пошла своим путем. О том, для чего сейчас компании используют облачные технологии и как меняется рынок, рассказал директор бизнес-юнита K2 Cloud Сергей Зинкевич.
1 минута
1021
29 марта 2023
Сетевые балансировщики нагрузки и другие обновления К2 Облака

Мы рады вам представить новый сервис K2 Облака для распределения трафика между экземплярами – Балансировщики нагрузки. Кроме того, мы автоматизировали обновление сертификатов Kubernetes и добавили возможность удаления рабочих узлов из кластера Kubernetes.

2 минуты
320
12 января 2023
Российский Kubernetes, какой он? Знакомьтесь, платформа Deckhouse

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

2 минуты
1568
26 декабря 2022
Что выгоднее — использовать готовую платформу для управления контейнерами или разрабатывать своими силами?
Совсем недавно мы провели опрос среди ИТ-руководителей, чтобы выяснить, насколько они знакомы с технологией Kubernetes и используют ли ее в ИТ-инфраструктуре своей компании, личных проектах и т.д. Результаты показали, что 63% опрошенных уже работает с Kubernetes прямо сейчас, 23% пока не дошли и 14% участников планируют в ближайшее время.
1 минута
551
4 декабря 2020
Дайджест обновлений К2 Облака осень 2020 г.
За осень в К2 Облаке многое изменилось. Мы активно писали код и не успевали сообщать обо всех переменах. Постараемся исправиться и информировать вас ASAP, чтобы вы могли сразу же использовать новые фичи.
1 минута
299
scrollup