В сегодняшнем руководстве мы рассмотрим, как вы можете установить и использовать Helm 2 для развертывания и управления приложениями (чартами Helm) в вашем кластере Kubernetes.
Helm – это инструмент, созданный для упрощения установки и управления приложениями Kubernetes.
Можно сравнить Helm с менеджером пакетов YUM / APT или Homebrew для Kubernetes.
Есть несколько предварительных условий, необходимых для успешной установки и эксплуатации Helm.
- Кластер Kubernetes
- Доступ администратора для установки Tiller
- Локально настроенный kubeclt
- ☸️ Простое управление несколькими кластерами Kubernetes с помощью kubectl & kubectx
- ☸️ Как развернуть легкий кластер Kubernetes за 5 минут с K3s
- ☸️ Разверните готовый кластер Kubernetes с помощью Ansible & Kubespray
- 👨🚀 Как запустить локальные кластеры Kubernetes в Docker
Шаг 1: Установка клиента Helm
Клиент Helm может работать на вашем ноутбуке, пайплайнах CI / CD и т. д.
Установка клиента Helm упрощается благодаря скрипту bash.
curl -L https://git.io/get_helm.sh | bash
Вот ожидаемый результат установки:
Helm v2.16.1 is available. Changing from version .
Downloading https://get.helm.sh/helm-v2.16.1-linux-amd64.tar.gz
Preparing to install helm and tiller into /usr/local/bin
helm installed into /usr/local/bin/helm
tiller installed into /usr/local/bin/tiller
Run 'helm init' to configure helm.
$ helm version
Client: &version.Version{SemVer:"v2.16.1", GitCommit:"bbdfe5e7803a12bbdf97e94cd847859890cf4050", GitTreeState:"clean"}
Шаг 2. Создание учетной записи службы Tiller и привязка роли
Helm2 имеет серверный компонент под названием Tiller.
Служба tiller будет работать в нашем кластере Kubernetes, и клиент helm общается с ней при управлении приложениями helm в кластере.
Нам нужно создать сервисную учетную запись для Tiller с доступом администратора к кластеру.
Создайте новый файл с именем tiller-serivice-account.yaml.
$ vim tiller-account-rbac.yaml
Вставьте данные, указанные ниже данные в файл.
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
Из определения манифеста мы создали ClusterRoleBinding с разрешениями кластера-администратора для учетной записи службы tiller.
Создайте ресурсы в Kubernetes, используя команду kubectl:
$ kubectl apply -f tiller-account-rbac.yaml serviceaccount/tiller created clusterrolebinding.rbac.authorization.k8s.io/tiller created
Подтвердите создание этих объектов:
$ kubectl get serviceaccount tiller -n kube-system
NAME SECRETS AGE
tiller 1 64s
$ kubectl get clusterrolebinding tiller -n kube-system
NAME AGE
tiller 100s
Шаг 3: разверните Tiller и инициализируйте Helm
Команда helm init используется для установки Tiller (серверного компонента Helm) на ваш
Kubernetes Cluster.
Обратите внимание, что эта команда обнаруживает кластеры Kubernetes читая $KUBECONFIG (по умолчанию ‘~/.kube/config‘) и используя контекст по умолчанию.
Теперь инициализируйте Helm, используя команду ниже.
$ helm init --service-account=tiller \
--stable-repo-url=https://kubernetes-charts.storage.googleapis.com \
--upgrade \
--automount-service-account-token=true \
--replicas=1 \
--history-max=100 \
--wait
--tiller-image=gcr.io/kubernetes-helm/tiller:v2.16.0
$ ls ~/.helm
cache plugins repository starters
$ kubectl get deployment -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
metrics-server 1/1 1 1 20d
local-path-provisioner 1/1 1 1 20d
coredns 1/1 1 1 20d
traefik 1/1 1 1 20d
tiller-deploy 1/1 1 1 63m
$ kubectl get deployment tiller-deploy -n kube-system -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
tiller-deploy 1/1 1 1 64m tiller gc