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

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

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 Los números de compilación de Jenkins o Jenkins se pueden utilizar 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.

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
Introduzca la nueva versión en el repositorio de Helm en Amazon S3.

Para enviar el nuevo paquete, versión 0.1.1, al repositorio Helm my-helm-charts de Amazon S3, ejecute el siguiente comando: helm s3 push ./my-app-0.1.1.tgz stable-myapp

Administrador de nube, DevOps ingeniero
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