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

by itisgood

Добро пожаловать в сегодняшнее руководство по установке и использованию Helm 3 в вашей среде Kubernetes.

Helm – лучший менеджер пакетов для Kubernetes.

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

У Helm 3 нет серверно-клиентской архитектуры, как у Helm 2.

Компонента tiller-сервера нет.

Таким образом, установка предназначена только для компонента командной строки helm, который взаимодействует с Kubernetes через ваш файл конфигурации kubectl и RBAC Kubernetes по умолчанию.

Для информации по Helm 2 :

Шаг 1: Установите Helm 3

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

curl -L https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
Вот пример выходных данных установки:
Helm v3.0.2 is available. Changing from version v3.0.1.
Downloading https://get.helm.sh/helm-v3.0.2-linux-amd64.tar.gz
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm

Подтвердите установку Helm 3

$ helm version
version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}

Шаг 2: Добавить репозиторий чартов Helm

После установки Helm добавьте хранилище чартов.

Мы добавим официальные стабильные чарты Helm:

$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/

"stable" has been added to your repositories

После этого вы сможете перечислить чарты, которые можно установить:

$ helm search repo stable

Шаг 3: Установите приложения через чарты Helm

Убедитесь, что ваш CLI Kubernetes использует правильный контекст кластера, сначала перечислив доступные контексты.

$ kubectl config get-contexts
CURRENT   NAME       CLUSTER    AUTHINFO         NAMESPACE
*         k3s        k3s        k3s-admin        kube-system
          prod       prod       prod-admin   

Переключиться на нужный контекст:

$ kubectl config use-context k3s
Switched to context "k3s".

Мы подтвердим, можем ли мы использовать Helm 3 для установки приложений в нашем кластере Kubernetes.

В этой настройке я установлю ingress controller Nginx.

Контроллер NGINX Ingress можно легко установить из официального репозитория stable/nginx-ingress

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈ Happy Helming!⎈ 
Посмотрим функции чарты:
$ helm show chart stable/nginx-ingress

apiVersion: v1
appVersion: 0.26.1
description: An nginx Ingress controller that uses ConfigMap to store the nginx configuration.
home: https://github.com/kubernetes/ingress-nginx
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Nginx_logo.svg/500px-Nginx_logo.svg.png
keywords:
- ingress
- nginx
kubeVersion: '>=1.10.0-0'
maintainers:
- name: ChiefAlexander
- email: Trevor.G.Wood@gmail.com
  name: taharah
name: nginx-ingress
sources:
- https://github.com/kubernetes/ingress-nginx
version: 1.26.2
Установите чарт с помощью команды helm intsall

$ helm install nginx-ingress stable/nginx-ingress 

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

NAME: nginx-ingress
LAST DEPLOYED: Mon Dec 16 00:08:12 2019
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace kube-system get services -o wide -w nginx-ingress-controller'

An example Ingress that makes use of the controller:

  apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.class: nginx
    name: example
    namespace: foo
  spec:
    rules:
      - host: www.example.com
        http:
          paths:
            - backend:
                serviceName: exampleService
                servicePort: 80
              path: /
    # This section is only required if TLS is to be enabled for the Ingress
    tls:
        - hosts:
            - www.example.com
          secretName: example-tls

If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:

  apiVersion: v1
  kind: Secret
  metadata:
    name: example-tls
    namespace: foo
  data:
    tls.crt: <base64 encoded cert>
    tls.key: <base64 encoded key>
  type: kubernetes.io/tls
Чтобы удалить выпуск, используйте команду helm uninstall:
$ helm uninstall nginx-ingress
release "nginx-ingress" uninstalled

$ helm list                   
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION

Ниже приведен пример, когда для установки DokuWiki на Kubernetes используется Helm.

 $ helm install dokuwiki stable/dokuwiki 
NAME: dokuwiki
LAST DEPLOYED: Mon Dec 23 13:32:52 2019
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **

1. Get the DokuWiki URL by running:

** Please ensure an external IP is associated to the dokuwiki service before proceeding **
** Watch the status using: kubectl get svc --namespace kube-system -w dokuwiki **

  export SERVICE_IP=$(kubectl get svc --namespace kube-system dokuwiki --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
  echo "URL: http://$SERVICE_IP/"

2. Login with the following credentials

  echo Username: user
  echo Password: $(kubectl get secret --namespace kube-system dokuwiki -o jsonpath="{.data.dokuwiki-password}" | base64 --decode)

 

You may also like

Leave a Comment