[Nativo de la nube, k8s] Introducción al administrador de paquetes de aplicaciones Helm

Tabla de contenido

1. ¿Por qué necesitas Helm?

(1) Introducción a Helm

(2) Helm tiene tres conceptos importantes:

(3) Funciones del timón

2. Cambios en el timón V3

(1) Cambios de arquitectura

(2) Crear automáticamente un espacio de nombres

3. Implementación del administrador de paquetes de aplicaciones Helm

1. Implementar la herramienta cliente Helm

2. Control de comandos de uso común

3. Configurar el almacén de gráficos nacional

4. Utilice el gráfico para implementar una aplicación Nginx

5. Utilice el gráfico para implementar una aplicación Tomcat

6. Renderizar plantillas con variables


Configuración de requisitos previos: basada en k8s (kubernetes varias vueltas)

 

1. ¿Por qué necesitas Helm?

        Los servicios de aplicaciones implementados en Kubernetes se componen de descripciones de recursos específicos, incluida la implementación, el servicio, etc. Cada objeto de recurso se guarda en su propio archivo o se escribe colectivamente en un archivo de configuración. Luego impleméntelo a través del comando kubectl apply –f demo.yaml.

 

Si el sistema empresarial sólo consta de uno o varios de estos servicios, entonces el método de gestión de implementación anterior es suficiente.

        Para un sistema empresarial complejo, habrá muchos archivos de descripción de recursos similares a los anteriores. Por ejemplo, una aplicación de arquitectura de microservicio puede tener hasta diez o docenas de servicios que componen la aplicación. Si es necesario actualizar o revertir una aplicación, puede ser necesario modificar y mantener una gran cantidad de archivos de objetos de recursos involucrados, y esta forma de organizar y administrar aplicaciones se vuelve insuficiente.

        Además, debido a la falta de gestión y control de las versiones de las aplicaciones publicadas, el mantenimiento y las actualizaciones de las aplicaciones en Kubernetes enfrentan muchos desafíos, principalmente los siguientes problemas:

Cómo gestionar estos servicios en su conjunto

Cómo reutilizar estos archivos de recursos de manera eficiente

No se admite la gestión de versiones a nivel de aplicación

(1) Introducción a Helm

        Helm es una herramienta de administración de paquetes de Kubernetes. Al igual que los administradores de paquetes en Linux, como yum/apt-get, etc., Helm puede implementar fácilmente archivos yaml previamente empaquetados en Kubernetes.

(2) Helm tiene tres conceptos importantes:

helm: una herramienta cliente de línea de comandos que se utiliza principalmente para la creación, empaquetado, publicación y gestión de gráficos de aplicaciones de Kubernetes.

Gráfico: Directorio o paquete comprimido, utilizado para la descripción de la aplicación, que consta de una serie de archivos utilizados para describir los objetos de recursos de k8s.

Versión: entidad de implementación basada en gráficos. Después de que Helm ejecute un gráfico, se generará la versión correspondiente; se creará un objeto de recurso en ejecución real en k8s.

(3) Funciones del timón

        Un administrador de paquetes desarrollado para Kubernetes. Cada paquete se llama Gráfico y un Gráfico es un directorio (generalmente, el directorio se empaquetará y comprimirá para formar un solo archivo en el formato nombre-versión.tar.gz para facilitar la transmisión). almacenamiento)

        Para los editores de aplicaciones, Helm se puede utilizar para empaquetar aplicaciones, administrar dependencias de aplicaciones, administrar versiones de aplicaciones y publicar aplicaciones en almacenes de software.

        Los usuarios, después de usar Helm, ya no necesitan comprender la sintaxis Yaml de Kubernetes y escribir archivos de implementación de aplicaciones, sino que pueden descargar e instalar las aplicaciones requeridas en Kubernetes a través de Helm.

Helm proporciona potentes funciones para la implementación, eliminación, actualización y reversión de aplicaciones en Kubernetes.

2. Cambios en el timón V3

El 13 de noviembre de 2019, el equipo de Helm lanzó la primera versión estable de Helm v3. Los principales cambios en esta versión son los siguientes:

(1) Cambios de arquitectura

El cambio más obvio es la eliminación de Tiller.

 

1) Los nombres de las versiones se pueden reutilizar en diferentes espacios de nombres

2) Soporte para enviar Chart al puerto del almacén espejo de Docker

3) Utilice JSONSchema para verificar los valores del gráfico

4) Otros

Cambios de nombre individuales de Helm CLI para coordinar mejor la redacción con otros administradores de paquetes

helm eliminar` pasó a llamarse `helm uninstall

helm inspect` pasó a llamarse `helm show

helm fetch` pasó a llamarse helm pull

Sin embargo, los antiguos comandos anteriores todavía se pueden utilizar.

Se eliminó el comando helm server utilizado para crear temporalmente el repositorio de gráficos localmente.

(2) Crear automáticamente un espacio de nombres

        Helm 2 creó el espacio de nombres al crear una distribución en un espacio de nombres que no existía. Helm 3 sigue el comportamiento de otros objetos de Kubernetes y devuelve un error si el espacio de nombres no existe.

require.yaml ya no es necesario, las dependencias se definen directamente en chart.yaml.

3. Implementación del administrador de paquetes de aplicaciones Helm

1. Implementar la herramienta cliente Helm

Dirección de descarga del cliente Helm: Lanzamientos · helm/helm · GitHub

Descomprima el paquete del código fuente y muévalo al directorio /usr/bin/.

[root@k8s-master ~]# wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# tar xf helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# cd linux-amd64/

[root@k8s-master linux-amd64]#ls

[root@k8s-master linux-amd64]# mv helm /usr/bin/

[root@k8s-master ~]# helm #Verifique si el comando helm está disponible

 

2. Control de comandos de uso común

Orden

describir

crear

Crear un gráfico y especificar un nombre

dependencia

Administrar dependencias de gráficos

conseguir

Descargar una versión. Subcomandos disponibles: todos, ganchos, manifiesto, notas, valores

historia

Obtener historial de lanzamientos

instalar

Instalar un gráfico

lista

Lista de lanzamientos

paquete

Empaquetar el directorio de gráficos en un archivo de almacenamiento de gráficos

jalar

Descargue el gráfico del repositorio remoto y extráigalo localmente# helm pull stable/mysql --untar

repositorio

Agregue, enumere, elimine, actualice e indexe repositorios de gráficos. Subcomandos disponibles: agregar, indexar, enumerar, eliminar, actualizar

Retroceder

Retroceder desde la versión anterior

buscar

Buscar gráficos basados ​​en palabras clave. Subcomandos disponibles: hub, repo

espectáculo

Ver detalles del gráfico. Subcomandos disponibles: todos, gráfico, Léame, valores

estado

Mostrar el estado de una versión con nombre

plantilla

Plantilla de renderizado local

desinstalar

Desinstalar una versión

mejora

Actualizar una versión

versión

Verifique la versión del cliente de helm

3. Configurar el almacén de gráficos nacional

Se recomienda encarecidamente el almacén de Microsoft ( Índice de /kubernetes/charts/ ). Básicamente, todos los gráficos del sitio web oficial están disponibles aquí.

Almacén en la nube de Alibaba ( https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )

Almacén oficial ( Kubeapps | Inicio ) El almacén oficial de gráficos es un poco difícil de usar en China.

Agregar repositorio de gráficos

[root@k8s-master ~]# repositorio de helm agregar estable http://mirror.azure.cn/kubernetes/charts

[root@k8s-master ~]# repositorio de helm agrega aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

[root@k8s-master ~]# actualización del repositorio de helm

Ver el repositorio de gráficos configurado

[root@k8s-master ~]# lista de repositorios de helm

 

Eliminar el repositorio:

[root@k8s-master ~]# helm repo eliminar aliyun

[root@k8s-master ~]# lista de repositorios de helm

 

4. Utilice el gráfico para implementar una aplicación Nginx

1) Crear gráfico

[root@k8s-master ~]# helm crear nginx

 

[root@k8s-master ~]# árbol nginx/

Explicación detallada:

nginx/

├── gráficos #dependen de archivos de gráficos de otros paquetes

├── Chart.yaml # El archivo de descripción del gráfico, incluida la dirección IP, información de versión, etc.

├── plantillas # Directorio para almacenar archivos de plantillas k8s

│ ├── implementación.yaml #Crear una plantilla yaml para los recursos de implementación de k8s

│ ├── _helpers.tpl # Otras plantillas pueden hacer referencia a los archivos que comienzan con un guión bajo

│ ├── hpa.yaml #Configurar recursos de servicio memoria CPU

│ ├── ingress.yaml # Configuración de ingreso para acceder al nombre de dominio del servicio

│ ├── NOTAS.txt # Archivo de descripción, el contenido que se muestra al usuario después de la instalación de helm

│ ├── cuentaservicio.yaml

│ ├── service.yaml #kubernetes Plantilla de servicio yaml

│ └── pruebas

│ └── prueba-conexión.yaml

└── valores.yaml #Variables utilizadas para archivos de plantilla

 

2) Modifique el tipo de servicio en valores.yaml a NodePort

[root@k8s-master ~]# cd nginx/

[root@k8s-master nginx]# valores vim.yaml

 

3) Instale la tarea del gráfico (tenga en cuenta el último punto en el comando)

[root@k8s-master nginx]# helm install -f valores.yaml

4) Ver lanzamiento

[root@k8s-master nginx]# helm ls #o lista de helm

 

5) Eliminar versión

[root@k8s-master nginx]# helm eliminar nginx

6) Verificar el estado del módulo

[root@k8s-master nginx]# kubectl obtener pod

[root@k8s-master nginx]# kubectl obtiene pod -o ancho

7) Verificar el estado del servicio

[root@k8s-master nginx]# kubectl obtiene svc

 

Visita 192.168.100.132:30281

5. Utilice el gráfico para implementar una aplicación Tomcat

[root@k8s-master ~]# helm crear tomcat

Creando gato

[root@k8s-master ~]# cd tomcat/

Modificar los archivos despliegue.yaml y service.yaml

[root@k8s-master tomcat]# plantillas vim/deployment.yaml

[root@k8s-master tomcat]# plantillas vim/servicio.yaml

 

Crear lanzamiento

[root@k8s-master tomcat]# helm instalar tomcat.

 

Ver lanzamiento

[root@k8s-master tomcat]# helm ls

 

Ver pods y servicio

[root@k8s-master tomcat]# kubectl get pod

[root@k8s-master tomcat]# kubectl get pod -o wide

[root@k8s-master tomcat]# kubectl get svc

 

Preparar página de prueba

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-s7qxl /bin/bash

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# mkdir webapps/ROOT

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# echo "helm test1" > webapps/ROOT/index.jsp

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-tkp95 /bin/bash

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# mkdir webapps/ROOT

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# echo "helm test2" > webapps/ROOT/index.jsp

 

Prueba de acceso:

Visita 192.168.100.132:32092

Visita 192.168.100.133:32092

 

borrar

[root@k8s-master tomcat]# helm eliminar tomcat

[root@k8s-master tomcat]# helm ls

 

Actualizar (volver a aplicar después de cambiar el archivo yaml)

[root@k8s-master tomcat]# helm instalar tomcat.

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl obtener pod

 

[root@k8s-master tomcat]# plantillas vim/deployment.yaml

 

[root@k8s-master tomcat]# actualización de timón tomcat.

[root@k8s-master tomcat]# kubectl obtener pod

[root@k8s-master tomcat]# helm ls

 

Retroceder

[root@k8s-master tomcat]# helm rollback tomcat 1

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl obtener pod

 

6. Renderizar plantillas con variables

Pruebe si la plantilla es normal.

[root@k8s-master tomcat]# helm install --dry-run tomcat.

 

Definir variables en el archivo value.yaml

[root@k8s-master tomcat]# valores de gato.yaml

 

[root@k8s-master tomcat]# plantillas cat/deployment.yaml

[root@k8s-master tomcat]# plantillas cat/service.yaml

 

Las variables en los archivos implementación.yaml y service.yaml son valores predefinidos y referenciados en value.yaml.

Release.Name representa el nombre después de la instalación de helm

[root@k8s-master tomcat]# helm eliminar tomcat

Elimine todos los archivos redundantes en el directorio de plantillas, dejando solo dos archivos de prueba.

[root@k8s-master tomcat]# ls plantillas/

[root@k8s-master tomcat]# helm install -f valores.yaml

[root@k8s-master tomcat]# helm ls

 

Ver estado de publicación

[root@k8s-master tomcat]# estado del timón tomcat

[root@k8s-master tomcat]# kubectl obtener pod

 

Ver detalles del módulo

[root@k8s-master tomcat]# kubectl describe pod tomcat-dp-67df6cd4d6-78pxc

 

Supongo que te gusta

Origin blog.csdn.net/2302_77582029/article/details/132360012
Recomendado
Clasificación