Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Implementar recursos y paquetes de Kubernetes con Amazon EKS y un repositorio de gráficos de Helm en Amazon S3
Creado por Sagar Panigrahi (AWS)
Entorno: PoC o piloto | Tecnologías: contenedores y microservicios; DevOps | Servicios de AWS: Amazon EKS |
Resumen
Este patrón le ayuda a administrar las aplicaciones de Kubernetes de forma eficiente, independientemente de su complejidad. El patrón integra Helm en sus canalizaciones de integración y entrega continuas (CI/CD) existentes para implementar aplicaciones en un clúster de Kubernetes. Helm es un administrador de paquetes de Kubernetes que le ayuda a gestionar las aplicaciones de Kubernetes. Los gráficos de Helm le ayudan a definir, instalar y actualizar aplicaciones complejas de Kubernetes. Los gráficos se pueden versionar y almacenar en repositorios de Helm, lo que mejora el tiempo medio de restauración (MTTR) durante las interrupciones.
Este patrón utiliza Amazon Elastic Kubernetes Service (Amazon EKS) para el clúster de Kubernetes. Utiliza Amazon Simple Storage Service (Amazon S3) como repositorio de gráficos de Helm, de modo que todos los desarrolladores de la organización puedan gestionar y acceder a los gráficos de forma centralizada.
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de Amazon Web Services (AWS) activa con una nube privada virtual (VPC)
Un clúster de Amazon EKS
Nodos de trabajo configurados dentro del clúster de Amazon EKS y preparados para soportar cargas de trabajo
Kubectl para configurar el archivo kubeconfig de Amazon EKS para el clúster de destino en la máquina cliente
Acceso de AWS Identity and Access Management (IAM) para crear el bucket de S3
Acceso de IAM (mediante programación o de rol) a Amazon S3 desde la máquina cliente
Administración de código fuente y una canalización de CI/CD
Limitaciones
En este momento no se admite la actualización, la eliminación o la administración de las definiciones de recursos personalizadas (CRD).
Si utiliza un recurso que hace referencia a una CRD, la CRD debe instalarse por separado (fuera del gráfico).
Versiones de producto
Helm v3.6.3
Arquitectura
Pila de tecnología de destino
Amazon EKS
Amazon VPC
Amazon S3
Gestión de código fuente
Helm
Kubectl
Arquitectura de destino
![Los clientes Helm y Kubectl implementan un repositorio de gráficos de Helm en Amazon S3 para los clústeres de Amazon EKS.](images/pattern-img/d3f993e6-4d96-4cb9-a075-c4debe431fd7/images/2f09f7bb-440a-4c4b-b29f-08d136d1ada4.png)
Automatizar y escalar
AWS se CloudFormation puede utilizar para automatizar la creación de la infraestructura. Para obtener más información, consulte Creación de recursos de Amazon EKS con AWS CloudFormation en la documentación de Amazon EKS.
Helm se incorporará a su herramienta de automatización de CI/CD existente para automatizar el empaquetado y el control de versiones de los gráficos de Helm (algo fuera del alcance de este patrón).
GitVersion o bien, se pueden utilizar los números de compilación de Jenkins para automatizar el control de versiones de los gráficos.
Herramientas
Herramientas
Amazon EKS: Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio administrado para ejecutar Kubernetes en AWS sin necesidad de crear ni mantener su propio plano de control de Kubernetes. Kubernetes es un sistema de código abierto para automatizar la implementación, escalado y administración de las aplicaciones en contenedores.
Helm
: Helm es un administrador de paquetes para Kubernetes que le ayuda a instalar y administrar aplicaciones en su clúster de Kubernetes. Amazon S3: Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento para Internet. Puede utilizar Amazon S3 para almacenar y recuperar cualquier cantidad de datos en cualquier momento y desde cualquier parte de la web.
Kubectl
: Kubectl es una utilidad de la línea de comandos para la ejecución de comandos en clústeres de Kubernetes.
Código
Se adjunta el código de ejemplo.
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instalar el cliente Helm. | Para descargar e instalar el cliente Helm en su sistema local, utilice el siguiente comando.
| DevOps ingeniero |
Validar la instalación de Helm. | Para validar que Helm puede comunicarse con el servidor API de Kubernetes del clúster de Amazon EKS, ejecute | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Crear un gráfico de Helm para NGINX. | Para crear un gráfico de Helm llamado | DevOps ingeniero |
Revisar la estructura del gráfico. | Para revisar la estructura del gráfico, ejecute el comando tree | DevOps ingeniero |
Desactive la creación de cuentas de servicio en el gráfico. | En | DevOps ingeniero |
Validar (lint) el gráfico modificado para detectar errores sintácticos. | Para validar el gráfico para detectar cualquier error sintáctico antes de instalarlo en el clúster de destino, ejecute | DevOps ingeniero |
Instale el gráfico para implementar los recursos de Kubernetes. | Para ejecutar la instalación del gráfico de Helm, utilice el siguiente comando.
La marca opcional | DevOps ingeniero |
Revisar los recursos del clúster de Amazon EKS. | Para revisar los recursos que se crearon como parte del gráfico de Helm en el espacio de nombres
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Modifique y actualice la versión. | Para modificar el gráfico, en
| DevOps ingeniero |
Revisar el historial de la versión de Helm. | Para ver todas las revisiones de una versión específica instalada con Helm, ejecute el siguiente comando.
| DevOps ingeniero |
Comprobar los detalles de una revisión específica. | Antes de cambiar a o restaurar una versión operativa, y para obtener una capa adicional de validación antes de instalar una revisión, compruebe qué valores se han pasado a cada una de las revisiones mediante el siguiente comando.
| DevOps ingeniero |
Restaurar una versión anterior. | Para restaurar una revisión anterior, utilice el siguiente comando.
Este ejemplo restaura la revisión número 1. | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Cree un bucket de S3 para gráficos de Helm. | Cree un bucket de S3 único. En el bucket, cree una carpeta llamada | Administrador de la nube |
Instalar el complemento de Helm para Amazon S3. | Para instalar el complemento helm-s3 en su máquina cliente, utilice el siguiente comando.
Nota: El soporte de Helm V3 está disponible con la versión 0.9.0 y superior del complemento. | DevOps ingeniero |
Inicializar el repositorio de Helm de Amazon S3. | Para inicializar la carpeta de destino como repositorio de Helm, utilice el siguiente comando.
El comando crea un archivo | DevOps ingeniero |
Añada el repositorio de Amazon S3 a Helm. | Para añadir el repositorio a la máquina cliente, utilice el siguiente comando.
Este comando añade un alias al repositorio de destino de la máquina cliente de Helm. | DevOps ingeniero |
Revisar la lista de repositorios. | Para ver la lista de repositorios de la máquina cliente de Helm, ejecute | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Empaquetar el gráfico. | Para empaquetar el gráfico | DevOps ingeniero |
Almacenar el paquete en el repositorio de Helm de Amazon S3. | Para cargar el paquete en el repositorio de Helm de Amazon S3, ejecute el siguiente comando usando el nombre correcto del archivo
| DevOps ingeniero |
Buscar el gráfico de Helm. | Para confirmar que el gráfico aparece tanto localmente como en el repositorio de Helm de Amazon S3, ejecute el siguiente comando.
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Modifique y empaquete el gráfico. | En Lo ideal es actualizar el control de versiones mediante la automatización mediante herramientas como GitVersion los números de compilación de Jenkins en una canalización de CI/CD. La automatización del número de versión está fuera del alcance de este patrón. | DevOps ingeniero |
Enviar la nueva versión al repositorio de Helm de Amazon S3. | Para enviar el nuevo paquete, versión 0.1.1, al repositorio de Helm
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Buscar todas las versiones del gráfico my-nginx. | Para ver todas las versiones disponibles de un gráfico, ejecute el siguiente comando con la marca
Sin la marca, Helm mostrará de forma predeterminada la última versión cargada de un gráfico. | DevOps ingeniero |
Instalar un gráfico desde el repositorio de Helm de Amazon S3. | Los resultados de búsqueda de la tarea anterior mostrarán las múltiples versiones del gráfico
| DevOps ingeniero |
Recursos relacionados
Conexiones
Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip