Configure un repositorio de gráficos de Helm v3 en Amazon S3 - Recomendaciones de AWS

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.

Configure un repositorio de gráficos de Helm v3 en Amazon S3

Creado por Abhishek Sharma (AWS)

Entorno: PoC o piloto

Tecnologías: contenedores y microservicios DevOps; Modernización

Carga de trabajo: todas las demás cargas de trabajo

Servicios de AWS: Amazon S3

Resumen

Este patrón le ayuda a administrar los gráficos de Helm v3 de forma eficiente integrando el repositorio de Helm v3 en Amazon Simple Storage Service (Amazon S3) en la nube de Amazon Web Services (AWS). Para usar este patrón, debe estar familiarizado con Kubernetes y con el administrador de paquetes de Kubernetes Helm. El uso de repositorios de Helm para almacenar gráficos y controlar sus versiones puede mejorar el tiempo medio de restauración (MTTR) durante las interrupciones. 

Este patrón usa AWS CodeCommit para la creación de repositorios de Helm y usa un bucket de S3 como repositorio de gráficos de Helm, de modo que los desarrolladores de toda la organización puedan administrar los gráficos de forma centralizada y acceder a ellos.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa

  • Python, versión 2.7.12 o posterior.

  • pip

  • Una nube privada virtual (VPC) con subredes y una instancia de Amazon Elastic Compute Cloud (Amazon EC2) 

  • Git instalado en la instancia EC2

  • Acceso a 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

  • CodeCommit Repositorio de AWS

  • Interfaz de la línea de comandos de AWS (AWS CLI)

Versiones de producto

  • Helm v3

  • Python, versión 2.7.12 o posterior.

Arquitectura

Pila de tecnología de destino

  • Amazon S3

  • AWS CodeCommit

  • Helm

  • Kubectl

  • Python y pip

  • Git

  • complemento helm-s3

Arquitectura de destino

Repositorio de Helm en CodeCommit, instancia EC2 con Helm, Git y helm-s3, gráficos de Helm en Amazon S3.

Automatizar y escalar

  • Puede incorporar Helm a su herramienta existente de automatización de integración y entrega continuas (CI/CD) para automatizar el empaquetado y el control de versiones de los gráficos de Helm (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

  • 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.

  • Complemento helm-s3: el complemento helm-s3 respalda la interacción con Amazon S3. Se puede usar con Helm v2 o Helm v3.

Prácticas recomendadas

< El autor elimina estas notas: proporciona una lista de pautas y recomendaciones que pueden ayudar a los usuarios a implementar este patrón de manera más eficaz.>

Epics

TareaDescripciónHabilidades requeridas

Instale el cliente Helm v3.

Para descargar e instalar el cliente de Helm en su sistema local, ejecute el siguiente comando: sudo curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

Administrador de nube, ingeniero DevOps

Valide la instalación de Helm.

Para validar el cliente de Helm, ejecute el siguiente comando: helm version --short

Administrador de nube, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Cree un bucket de S3 para gráficos de Helm.

Cree un bucket de S3 único. En el bucket, cree una carpeta llamada stable/myapp. El ejemplo de este patrón usa s3://my-helm-charts/stable/myapp como repositorio de gráficos de destino.

Administrador de nube, DevOps ingeniero

Instale el complemento helm-s3 para Amazon S3.

Para instalar el plugin helm-s3 en su máquina cliente, ejecute el siguiente comando: helm plugin install https://github.com/hypnoglow/helm-s3.git

Administrador de nube, DevOps ingeniero

Inicialice el repositorio Helm de Amazon S3.

Para inicializar la carpeta de destino como repositorio de Helm, ejecute el siguiente comando: helm s3 init s3://my-helm-charts/stable/myapp 

El comando crea un archivo index.yaml en el destino para rastrear toda la información del gráfico almacenada en esa ubicación.

Administrador de nube, DevOps ingeniero

Verifique el repositorio de Helm recién creado.

Para comprobar que se ha creado el archivo index.yaml, ejecute el siguiente comando: aws s3 ls s3://my-helm-charts/stable/myapp/

Administrador de nube, DevOps ingeniero

Añada el repositorio de Amazon S3 a Helm en la máquina cliente.

Para añadir el alias del repositorio de destino a la máquina cliente de Helm, ejecute el siguiente comando: helm repo add stable-myapp s3://my-helm-charts/stable/myapp/

Administrador de nube, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Clone sus gráficos de Helm.

Si no hay gráficos de Helm locales en tu CodeCommit repositorio, clónalos desde tu GitHub repositorio ejecutando el siguiente comando: git clone <url_of_your_helm_source_code>.git

Administrador de nube, ingeniero DevOps

Empaquete el gráfico de Helm local.

Para empaquetar el gráfico que ha creado o clonado, ejecute el siguiente comando: helm package ./my-app  

Como ejemplo, este patrón usa el gráfico my-app. El comando empaqueta todo el contenido de la carpeta de gráficos my-app en un archivo de almacenamiento. Este archivo toma su nombre del número de versión mencionado en el archivo Chart.yaml.

Administrador de nube, DevOps ingeniero

Almacene el paquete local en el repositorio Helm de Amazon S3.

Para cargar el paquete local en el repositorio de Helm en Amazon S3, ejecute el siguiente comando: helm s3 push ./my-app-0.1.0.tgz stable-myapp

En el comando, my-app es el nombre de la carpeta de gráficos, 0.1.0 es la versión del gráfico mencionada en Chart.yaml y stable-myapp es el alias del repositorio de destino.

Administrador de nube, DevOps ingeniero

Busque 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: helm search repo stable-myapp

Administrador de nube, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Modifique y empaquete el gráfico.

En values.yaml, establezca el valor replicaCount en 1 y, a continuación, empaquete el gráfico, esta vez cambiando la versión de Chart.yaml a 0.1.1. Lo ideal es que el control de versiones se logre mediante la automatización mediante el uso de 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. Para agrupar la tabla, ejecute el siguiente comando: helm package ./my-app/

Administrador de nube, ingeniero 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 my-helm-chartsHelm de Amazon S3, ejecute el siguiente comando: helm s3 push ./my-app-0.1.1.tgz stable-myapp

Administrador de nube, ingeniero DevOps

Compruebe el gráfico de Helm actualizado.

Para confirmar que el gráfico actualizado aparece tanto localmente como en el repositorio Helm de Amazon S3, ejecute los siguientes comandos.

helm repo update

helm search repo stable-myapp

Administrador de nube, DevOps ingeniero
TareaDescripciónHabilidades requeridas

Busque todas las versiones del gráfico my-app.

Para ver todas las versiones disponibles de un gráfico, ejecute el siguiente comando con la marca --versions: helm search repo my-app --versions 

Sin la marca, Helm mostrará de forma predeterminada la última versión cargada de un gráfico.

DevOps Ingeniero

Instale una tabla desde el repositorio Helm de Amazon S3.

La instalación automatizada está fuera del alcance de este patrón, pero puede realizar una instalación manual. Los resultados de la búsqueda de la tarea anterior mostrarán las múltiples versiones del gráfico my-app. Para instalar la nueva versión (0.1.1) desde el repositorio de Helm de Amazon S3, ejecute el siguiente comando: helm upgrade --install my-app-release stable-myapp/my-app --version 0.1.1 --namespace dev

DevOps Ingeniero
TareaDescripciónHabilidades requeridas

Compruebe los detalles de una revisión específica.

La reversión automática está fuera del alcance de este patrón, pero puede restaurar manualmente una versión anterior. Antes de cambiar o revertir a una versión funcional, y para obtener un nivel 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: helm get values --revision=2 my-app-release

DevOps Ingeniero

Vuelva a una versión anterior.

La reversión automática está fuera del alcance de este patrón. Para restaurar manualmente una revisión anterior, ejecute el siguiente comando: helm rollback my-app-release 1 

Este ejemplo restaura la revisión número 1.

DevOps Ingeniero

Recursos relacionados