¿Qué es Helm?
Helm es un administrador de paquetes para Kubernetes. Al igual que las herramientas de administración de paquetes como yum y apt, Helm puede implementar fácilmente las aplicaciones que queremos con un solo clic .
Writing Helm tiene tres objetivos principales:
1. Lograr fácilmente desde "cero a Kubernetes"
2. Proporcionar un sistema de administración de paquetes similar al sistema operativo
3. Enfatizar la seguridad y la capacidad de configuración de implementar aplicaciones en Kubernetes.
Un elemento muy importante en Helm: Chart
- Chart es el paquete de software de Helm, lo que significa carta náutica. Un gráfico es un conjunto de archivos y directorios que siguen la especificación del gráfico y se utilizan para definir los recursos que se instalarán en kubernetes.
- El gráfico contiene un archivo llamado chart.yaml que describe la versión, el nombre, la descripción y alguna información sobre el autor de este gráfico.
- Un gráfico contiene plantillas, es decir, manifiestos de kubernetes.
- Hay un archivo llamado valores.yaml en el gráfico que proporciona la configuración predeterminada. Este archivo contiene parámetros que se pueden anular durante la instalación y la actualización y se pueden modificar.
- Cuando vea un gráfico, puede ser un paquete comprimido, como este
ingress-nginx-4.0.17.tgz
, o un directorioingress-nginx
. - Su estructura de directorio podría verse así:
[root@k8s-master01 ingress-nginx]# ls
CHANGELOG.md Chart.yaml ci OWNERS README.md README.md.gotmpl templates values.yaml
Cuando se instala un gráfico, su flujo puede verse así:
- Helm lee el gráfico
- Enviar valores definidos a plantilla, generar manifiesto de kubernetes
- El manifiesto se envía a kubernetes.
- kubernetes crea el recurso solicitado en el clúster según el manifiesto
usando timón
Helm tiene versiones v2 y v3, v2 se ignora aquí porque estoy usando v3.
Helm proporciona una herramienta de línea de comandos llamada helm que usamos para operar.
Notas sobre la instalación del cliente helm
Una cosa a la que debe prestar atención al instalar helm, la versión de helm debe coincidir con la versión de kubernetes, como se muestra en la siguiente figura: la
versión específica corresponde a la referencia: https://helm.sh/docs/topics/version_skew/
A continuación instalamos el cliente helm en modo binario:
Para obtener instrucciones detalladas u otras referencias de instalación: https://helm.sh/docs/intro/install/official documentation
Actualmente, la última versión de helm cuando la instalé era la 3.8.0 y la versión de mi clúster k8s era la 1.23.x Totalmente compatible.
- Descargar paquete binario
wget https://get.helm.sh/helm-v3.8.0-linux-amd64.tar.gz
- Descomprimir el paquete binario
tar xf helm-v3.8.0-linux-amd64.tar.gz
- Mueva el directorio helm en el directorio descomprimido a /usr/local/bin/helm
mv linux-amd64/helm /usr/local/bin/helm
- La instalación ha terminado, muy simple.
Agregar repositorio de gráficos
Solo una herramienta de cliente no puede funcionar, también necesitamos saber de dónde proviene su paquete de gráficos, que es equivalente a la fuente de software instalada por yum.
- Agregar un repositorio oficial
- Nota: El nombre después de agregar se personaliza para su conveniencia, no es fijo
helm repo add bitnami https://charts.bitnami.com/bitnami
# 我的环境添加的存储库
[root@k8s-master01 ~]# helm repo list
NAME URL
ingress-nginx https://kubernetes.github.io/ingress-nginx
nginx-stable https://helm.nginx.com/stable
bitnami https://charts.bitnami.com/bitnami
- ¿Comprobar si la adición es exitosa? De hecho, se ha demostrado anteriormente, este comando puede verificar que el inventario de almacenamiento que ha agregado no existe
helm repo list
Buscar en el repositorio de gráficos
- Después de agregar la biblioteca, ¿cómo puedo saber si el paquete de gráficos que quiero instalar existe o no? Usa el siguiente comando
[root@k8s-master01 ~]# helm search repo apache
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/apache 9.0.2 2.4.52 Apache HTTP Server is an open-source HTTP serve...
bitnami/airflow 12.0.1 2.2.3 Apache Airflow is a tool to express and execute...
- Por supuesto, también puede intentar buscar paquetes de gráficos en Internet:
[root@k8s-master01 ~]# helm search hub wordpress
URL CHART VERSION APP VERSION DESCRIPTION
https://artifacthub.io/packages/helm/kube-wordp... 0.1.0 1.1 this is my wordpress package
https://artifacthub.io/packages/helm/bitnami/wo... 13.0.11 5.9.0 WordPress is the world's most popular blogging ...
instalar un gráfico
- La premisa de instalar el gráfico es que debe haber un espacio de nombres, por supuesto, el valor predeterminado también puede serlo, para distinguir o crear un espacio de nombres.
- A continuación, cree un espacio de nombres llamado mysql
kubectl create ns mysql
- Luego instale el paquete de gráficos
hellm install my-mysql bitnami/mysql -n mysql
Dime qué significa este comando:
- my-mysql representa el nombre del gráfico que estoy ejecutando, que está personalizado
- bitnami/mysql: es el nombre del repositorio más el nombre del paquete
- -n mysql: es el nombre del espacio de nombres especificado
Después de la instalación, puede verificar si la instalación fue exitosa:
hay que tener en cuenta es:
- Independientemente de si su recurso Pod se puede crear con éxito, siempre que helm se cree con éxito, la instancia existirá.
- Los nombres de las instancias dentro del mismo espacio de nombres son únicos y se informará un error cuando se vuelva a crear una instancia con el mismo nombre.
[root@k8s-master01 ~]# helm list -n mysql
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-mysql mysql 1 2022-02-17 14:32:38.423267837 +0800 CST deployed mysql-8.8.23 8.0.28
- Este comando puede ver algunos estados del gráfico que creó:
[root@k8s-master01 ~]# helm status my-mysql -n mysql
- Cuando no desee este gráfico, también puede optar por desinstalarlo:
[root@k8s-master01 ~]# helm uninstall my-mysql -n mysql
Instalación de configuración personalizada
La configuración instalada predeterminada a menudo no es lo que necesitamos, luego podemos extraer el paquete de gráficos y luego modificar los parámetros antes de ejecutar.
- Despliegue el paquete de gráficos, descomprímalo y podrá ver la información básica en el paquete
[root@k8s-master01 ~]# helm pull bitnami/mysql
[root@k8s-master01 ~]# tar xf mysql-8.8.23.tgz -C /temp/
[root@k8s-master01 ~]# cd /temp/mysql/
[root@k8s-master01 mysql]# ls
Chart.lock charts Chart.yaml ci README.md templates values.schema.json values.yaml
- Puede modificar su
values.yaml
archivo, pero no se modificará aquí. - Luego ejecute el archivo modificado
values.yaml
, ya que está ejecutando un archivo local, no necesita agregar la dirección de origen
[root@k8s-master01 mysql]# helm install mysql-01 -n mysql .
- Si ejecutó el gráfico y luego modificó el archivo yaml, puede actualizarlo con este comando
[root@k8s-master01 mysql]# helm upgrade --install mysql-01 -n mysql .
Eso es todo, solo hable sobre el uso básico del timón.
En el futuro, escribiré el uso de gráficos y crearé gráficos y otro contenido por mí mismo.