Implementar recursos y paquetes de Kubernetes con Amazon EKS y un repositorio de gráficos de Helm en Amazon S3
Sagar Panigrahi, Amazon Web Services
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

Automatizar y escalar
Puede utilizar AWS CloudFormation 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).
Puede usar números de compilación de GitVersion o 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, el escalado y la 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.
| Ingeniero de DevOps |
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 | Ingeniero de DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Crear un gráfico de Helm para NGINX. | Para crear un gráfico de Helm llamado | Ingeniero de DevOps |
Revisar la estructura del gráfico. | Para revisar la estructura del gráfico, ejecute el comando tree | Ingeniero de DevOps |
Desactive la creación de cuentas de servicio en el gráfico. | En | Ingeniero de DevOps |
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 | Ingeniero de DevOps |
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 | Ingeniero de DevOps |
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
| Ingeniero de DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Modifique y actualice la versión. | Para modificar el gráfico, en
| Ingeniero de DevOps |
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.
| Ingeniero de DevOps |
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.
| Ingeniero de DevOps |
Restaurar una versión anterior. | Para restaurar una revisión anterior, utilice el siguiente comando.
Este ejemplo restaura la revisión número 1. | Ingeniero de DevOps |
| 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. | Ingeniero de DevOps |
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 | Ingeniero de DevOps |
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. | Ingeniero de DevOps |
Revisar la lista de repositorios. | Para ver la lista de repositorios de la máquina cliente de Helm, ejecute | Ingeniero de DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Empaquetar el gráfico. | Para empaquetar el gráfico | Ingeniero de DevOps |
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
| Ingeniero de DevOps |
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.
| Ingeniero de DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Modifique y empaquete el gráfico. | En Es preferible automatizar la actualización del control de versiones mediante herramientas como números de compilación de GitVersion o 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. | Ingeniero de DevOps |
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
| Ingeniero de DevOps |
| 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. | Ingeniero de DevOps |
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
| Ingeniero de DevOps |
Recursos relacionados
Conexiones
Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip