Tabla de contenido
(2) Helm tiene tres conceptos importantes:
(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