☸️ Установка и использование Helm 2 в кластере Kubernetes

by itisgood

В сегодняшнем руководстве мы рассмотрим, как вы можете установить и использовать Helm 2 для развертывания и управления приложениями (чартами Helm) в вашем кластере Kubernetes.

Helm – это инструмент, созданный для упрощения установки и управления приложениями Kubernetes.

Можно сравнить Helm с менеджером пакетов YUM / APT или Homebrew для Kubernetes.

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

  • Кластер Kubernetes
  • Доступ администратора для установки Tiller
  • Локально настроенный kubeclt
Посмотрите наши руководства по установке Kubernetes:

Шаг 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 будет установлен в каталог /usr/local/bin/
$ 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
Ниже приведен вывод команды helm init.
Опцию –tiller-image можно использовать для установки конкретной версии Tiller, например:
--tiller-image=gcr.io/kubernetes-helm/tiller:v2.16.0
Инициализация также настроит локальную конфигурацию в $HELM_HOME (по умолчанию ~/.helm /)
$ ls ~/.helm 
cache  plugins  repository  starters
В kubernetes вы должны увидеть новый deploytment под названием tiller-deploy.
$ 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

 

You may also like

Leave a Comment