Добро пожаловать в сегодняшнее руководство по установке и использованию Helm 3 в вашей среде Kubernetes.
Helm – лучший менеджер пакетов для Kubernetes.
Он помогает вам управлять приложениями Kubernetes с помощью Helm чартов – с его помощью вы можете определять, устанавливать и обновлять базовые приложения до самых сложных приложений Kubernetes.
У Helm 3 нет серверно-клиентской архитектуры, как у Helm 2.
Компонента tiller-сервера нет.
Таким образом, установка предназначена только для компонента командной строки helm, который взаимодействует с Kubernetes через ваш файл конфигурации kubectl и RBAC Kubernetes по умолчанию.
Для информации по Helm 2 :
- ☸️ Установка и использование Helm 2 в кластере Kubernetes
- ☸️ Как установить приложения на Kubernetes с помощью Helm
Шаг 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 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 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)