Guía de Repositorios de Charts
Esta sección explica cómo crear y trabajar con repositorios de charts de Helm. A alto nivel, un repositorio de charts es una ubicación donde se pueden almacenar y compartir charts empaquetados.
El repositorio de charts de la comunidad distribuida de Helm se encuentra en Artifact Hub y da la bienvenida a la participación. Pero Helm también hace posible crear y ejecutar tu propio repositorio de charts. Esta guía explica cómo hacerlo. Si estás considerando crear un repositorio de charts, es posible que quieras considerar usar un registro OCI en su lugar.
Prerrequisitos
- Revisar la Guía de Inicio Rápido
- Leer el documento de Charts
Crear un repositorio de charts
Un repositorio de charts es un servidor HTTP que aloja un archivo index.yaml y
opcionalmente algunos charts empaquetados. Cuando estés listo para compartir tus
charts, la forma preferida de hacerlo es subiéndolos a un repositorio de charts.
A partir de Helm 2.2.0, se admite la autenticación SSL del lado del cliente a un repositorio. Otros protocolos de autenticación pueden estar disponibles como plugins.
Debido a que un repositorio de charts puede ser cualquier servidor HTTP que pueda servir archivos YAML y tar y pueda responder a solicitudes GET, tienes una gran cantidad de opciones cuando se trata de alojar tu propio repositorio de charts. Por ejemplo, puedes usar un bucket de Google Cloud Storage (GCS), un bucket de Amazon S3, GitHub Pages, o incluso crear tu propio servidor web.
La estructura del repositorio de charts
Un repositorio de charts consiste en charts empaquetados y un archivo especial
llamado index.yaml que contiene un índice de todos los charts en el
repositorio. Frecuentemente, los charts que index.yaml describe también están
alojados en el mismo servidor, al igual que los archivos de
procedencia.
Por ejemplo, la estructura del repositorio https://example.com/charts podría
verse así:
charts/
|
|- index.yaml
|
|- alpine-0.1.2.tgz
|
|- alpine-0.1.2.tgz.prov
En este caso, el archivo de índice contendría información sobre un chart, el
chart Alpine, y proporcionaría la URL de descarga
https://example.com/charts/alpine-0.1.2.tgz para ese chart.
No es necesario que un paquete de chart esté ubicado en el mismo servidor que el
archivo index.yaml. Sin embargo, hacerlo suele ser lo más fácil.
El archivo de índice
El archivo de índice es un archivo yaml llamado index.yaml. Contiene algunos
metadatos sobre el paquete, incluyendo el contenido del archivo Chart.yaml de
un chart. Un repositorio de charts válido debe tener un archivo de índice. El
archivo de índice contiene información sobre cada chart en el repositorio de
charts. El comando helm repo index generará un archivo de índice basado en un
directorio local dado que contiene charts empaquetados.
Este es un ejemplo de un archivo de índice:
apiVersion: v1
entries:
alpine:
- created: 2016-10-06T16:23:20.499814565-06:00
description: Despliega un pod básico de Alpine Linux
digest: 99c76e403d752c84ead610644d4b1c2f2b453a74b921f422b9dcb8a7c8b559cd
home: https://helm.sh/helm
name: alpine
sources:
- https://github.com/helm/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.2.0.tgz
version: 0.2.0
- created: 2016-10-06T16:23:20.499543808-06:00
description: Despliega un pod básico de Alpine Linux
digest: 515c58e5f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cd78727
home: https://helm.sh/helm
name: alpine
sources:
- https://github.com/helm/helm
urls:
- https://technosophos.github.io/tscharts/alpine-0.1.0.tgz
version: 0.1.0
nginx:
- created: 2016-10-06T16:23:20.499543808-06:00
description: Crea un servidor HTTP nginx básico
digest: aaff4545f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cdffffff
home: https://helm.sh/helm
name: nginx
sources:
- https://github.com/helm/charts
urls:
- https://technosophos.github.io/tscharts/nginx-1.1.0.tgz
version: 1.1.0
generated: 2016-10-06T16:23:20.499029981-06:00
Alojar Repositorios de Charts
Esta parte muestra varias formas de servir un repositorio de charts.
Google Cloud Storage
El primer paso es crear tu bucket de GCS. Llamaremos al nuestro
fantastic-charts.

A continuación, haz público tu bucket editando los permisos del bucket.

Inserta esta línea para hacer público tu bucket:

¡Felicitaciones, ahora tienes un bucket de GCS vacío listo para servir charts!
Puedes subir tu repositorio de charts usando la herramienta de línea de comandos
de Google Cloud Storage, o usando la interfaz web de GCS. Un bucket público de
GCS puede ser accedido vía HTTPS simple en esta dirección:
https://bucket-name.storage.googleapis.com/.
Cloudsmith
También puedes configurar repositorios de charts usando Cloudsmith. Lee más sobre repositorios de charts con Cloudsmith aquí
JFrog Artifactory
De manera similar, también puedes configurar repositorios de charts usando JFrog Artifactory. Lee más sobre repositorios de charts con JFrog Artifactory aquí
Ejemplo de GitHub Pages
De manera similar puedes crear un repositorio de charts usando GitHub Pages.
GitHub te permite servir páginas web estáticas de dos maneras diferentes:
- Configurando un proyecto para servir el contenido de su directorio
docs/ - Configurando un proyecto para servir una rama particular
Tomaremos el segundo enfoque, aunque el primero es igual de fácil.
El primer paso será crear tu rama gh-pages. Puedes hacerlo localmente como:
$ git checkout -b gh-pages
O vía navegador web usando el botón Branch en tu repositorio de GitHub:

A continuación, querrás asegurarte de que tu rama gh-pages esté configurada como GitHub Pages, haz clic en Settings de tu repositorio y desplázate hacia abajo hasta la sección GitHub pages y configura como se muestra a continuación:

Por defecto, Source generalmente se establece en rama gh-pages. Si esto no está establecido por defecto, entonces selecciónalo.
Puedes usar un dominio personalizado allí si lo deseas.
Y verifica que Enforce HTTPS esté marcado, para que se use HTTPS cuando se sirvan los charts.
En tal configuración puedes usar tu rama predeterminada para almacenar tu código
de charts, y la rama gh-pages como repositorio de charts, por ejemplo:
https://USERNAME.github.io/REPONAME. El repositorio de demostración TS
Charts es accesible en
https://technosophos.github.io/tscharts/.
Si has decidido usar GitHub pages para alojar el repositorio de charts, revisa Chart Releaser Action. Chart Releaser Action es un flujo de trabajo de GitHub Action para convertir un proyecto de GitHub en un repositorio de charts de Helm autoalojado, usando la herramienta CLI helm/chart-releaser.
Servidores web ordinarios
Para configurar un servidor web ordinario para servir charts de Helm, solo necesitas hacer lo siguiente:
- Coloca tu índice y charts en un directorio que el servidor pueda servir
- Asegúrate de que el archivo
index.yamlpueda ser accedido sin requisitos de autenticación - Asegúrate de que los archivos
yamlse sirvan con el tipo de contenido correcto (text/yamlotext/x-yaml)
Por ejemplo, si quieres servir tus charts desde $WEBROOT/charts, asegúrate de
que haya un directorio charts/ en tu raíz web, y coloca el archivo de índice y
los charts dentro de esa carpeta.
Servidor de Repositorio ChartMuseum
ChartMuseum es un servidor de Repositorio de Charts de Helm de código abierto escrito en Go (Golang), con soporte para backends de almacenamiento en la nube, incluyendo Google Cloud Storage, Amazon S3, Microsoft Azure Blob Storage, Alibaba Cloud OSS Storage, Openstack Object Storage, Oracle Cloud Infrastructure Object Storage, Baidu Cloud BOS Storage, Tencent Cloud Object Storage, DigitalOcean Spaces, Minio, y etcd.
También puedes usar el servidor ChartMuseum para alojar un repositorio de charts desde un sistema de archivos local.
Registro de Paquetes de GitLab
Con GitLab puedes publicar charts de Helm en el Registro de Paquetes de tu proyecto. Lee más sobre cómo configurar un repositorio de paquetes de helm con GitLab aquí.
Gestionar Repositorios de Charts
Ahora que tienes un repositorio de charts, la última parte de esta guía explica cómo mantener los charts en ese repositorio.
Almacenar charts en tu repositorio de charts
Ahora que tienes un repositorio de charts, vamos a subir un chart y un archivo de
índice al repositorio. Los charts en un repositorio de charts deben estar
empaquetados (helm package chart-name/) y versionados correctamente (siguiendo
las directrices de SemVer 2).
Estos próximos pasos componen un flujo de trabajo de ejemplo, pero eres libre de usar cualquier flujo de trabajo que prefieras para almacenar y actualizar charts en tu repositorio de charts.
Una vez que tengas un chart empaquetado listo, crea un nuevo directorio y mueve tu chart empaquetado a ese directorio.
$ helm package docs/examples/alpine/
$ mkdir fantastic-charts
$ mv alpine-0.1.0.tgz fantastic-charts/
$ helm repo index fantastic-charts --url https://fantastic-charts.storage.googleapis.com
El último comando toma la ruta del directorio local que acabas de crear y la URL
de tu repositorio de charts remoto y compone un archivo index.yaml dentro de
la ruta del directorio dada.
Ahora puedes subir el chart y el archivo de índice a tu repositorio de charts usando una herramienta de sincronización o manualmente. Si estás usando Google Cloud Storage, revisa este ejemplo de flujo de trabajo usando el cliente gsutil. Para GitHub, simplemente puedes colocar los charts en la rama de destino apropiada.
Agregar nuevos charts a un repositorio existente
Cada vez que quieras agregar un nuevo chart a tu repositorio, debes regenerar el
índice. El comando helm repo index reconstruirá completamente el archivo
index.yaml desde cero, incluyendo solo los charts que encuentra localmente.
Sin embargo, puedes usar la bandera --merge para agregar incrementalmente
nuevos charts a un archivo index.yaml existente (una gran opción cuando
trabajas con un repositorio remoto como GCS). Ejecuta helm repo index --help
para aprender más.
Asegúrate de subir tanto el archivo index.yaml revisado como el chart. Y si
generaste un archivo de procedencia, súbelo también.
Compartir tus charts con otros
Cuando estés listo para compartir tus charts, simplemente hazle saber a alguien cuál es la URL de tu repositorio.
A partir de ahí, agregarán el repositorio a su cliente helm mediante el comando
helm repo add [NOMBRE] [URL] con cualquier nombre que deseen usar para
referenciar el repositorio.
$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com
$ helm repo list
fantastic-charts https://fantastic-charts.storage.googleapis.com
Si los charts están respaldados por autenticación HTTP básica, también puedes proporcionar el nombre de usuario y la contraseña aquí:
$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com --username my-username --password my-password
$ helm repo list
fantastic-charts https://fantastic-charts.storage.googleapis.com
Nota: Un repositorio no se agregará si no contiene un index.yaml válido.
Nota: Si tu repositorio de helm está usando, por ejemplo, un certificado
autofirmado, puedes usar helm repo add --insecure-skip-tls-verify ... para
omitir la verificación de CA.
Después de eso, tus usuarios podrán buscar entre tus charts. Después de que
hayas actualizado el repositorio, pueden usar el comando helm repo update
para obtener la información más reciente de los charts.
Internamente, los comandos helm repo add y helm repo update están
obteniendo el archivo index.yaml y almacenándolos en el directorio
$XDG_CACHE_HOME/helm/repository/cache/. Aquí es donde la función helm
search encuentra información sobre los charts.