Antes de enseñarte a cómo hacer tu propio repositorio, primero te voy a enseñar cómo administrar los repositorios.
Buscar en el repositorio de Helm:
helm search hub grafana
Buscar en los repositorios ya instalados:
helm searh repo grafana
Para ver los Values de un paquete:
helm show values grafana
Supongamos que hiciste tu propio archivo de values y lo quieres aplicar en lugar del que trae por el paquete:
helm install -f miarchivo.yaml aplicación paquete
Crear repositorio con GitHub
1. Creas un nuevo repositorio público en GitHub.
2. Ahora que estas en el repositorio nuevo que creaste, vas a settings -> Pages (en la barra de la izquierda).
3. En Branch seleccionas la branch que quieres usar, en este ejemplo usaré main y por último seleccionas el directorio que por default es /(root).
4. Por último le das click en Save. Con esto has creado un repositorio.
La URL para acceder a tu repositorio es:
https://tuuser.github.io/tu-repositorio/
Por ejemplo:
https://ahioros.github.io/nginx-charts/
Subir nuestro paquete al repositorio.
En el post anterior creamos nuestro package/paquete de nuestra aplicación. Para que funcione nuestro repositorio debemos crear una carpeta llamada charts y dentro poner nuestro paquete.
Ahora debemos crear un archivo index.yaml para que helm sepa que charts hay dentro del repositorio.
helm repo index .
Nota: Hay un espacio y un punto después de index.
El contenido de este index.yaml es:
Ahora queda subirlo al repositorio de github.
Agregando nuestro repositorio a Helm
Para agregar nuestro repositorio a Helm debemos ejecutar:
helm repo add turepo https://TUURLDETUREPOSITORIO/TUCHARTS
helm repo add ahioros https://ahioros.github.io/nginx-charts/
Comprobamos que se ha agregado correctamente nuestro repositorio:
helm search repo turepo
helm search repo ahioros
Instalando desde tu repositorio
Ahora lo que queda es instalar tus propios paquetes desde tu repositorio recien creado.
Puedes realizar una "instalación fake"
helm install --dry-run nombrepaquete turepo/nombrepaquete
helm install --dry-run test ahioros/nginx-chart
Nota: esto nos instalará el paquete nginx-chart (sin S al final) de nuestro reposirotorio que se llama nginx-charts (con S al final) el paquete cuando sea instalado se llamará test.
Salida:
---
NAME: test
LAST DEPLOYED: Tue Aug 27 18:48:41 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: nginx-chart/templates/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: nginx-chart
---
# Source: nginx-chart/templates/lbl-service.yaml
apiVersion: v1
kind: Service
metadata:
name: loadbalancer-test-nginx-chart
namespace: nginx-chart
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
type: LoadBalancer
selector:
app:
app.kubernetes.io/name: nginx-chart
app.kubernetes.io/instance: test
---
# Source: nginx-chart/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: test-nginx-chart
namespace: nginx-chart
spec:
selector:
app:
helm.sh/chart: nginx-chart-1.0.0
app.kubernetes.io/name: nginx-chart
app.kubernetes.io/instance: test
app.kubernetes.io/version: "1.16.0"
app.kubernetes.io/managed-by: Helm
ports:
- protocol: TCP
port: 80
targetPort: 80
---
# Source: nginx-chart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-nginx-chart
namespace: nginx-chart
spec:
replicas: 2
selector:
matchLabels:
app:
app.kubernetes.io/name: nginx-chart
app.kubernetes.io/instance: test
template:
metadata:
labels:
app:
app.kubernetes.io/name: nginx-chart
app.kubernetes.io/instance: test
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
NOTES:
Nginx se ha desplegado correctamente. Puedes acceder a la aplicación a través de http://IP:80
---
Ahora si todo está bien ya puedes instalar tu paquete, solo debes quitar el --dry-run:
helm install nginx-chart ahioros/nginx-chart
Podemos verificar nuestra aplicación instalada con kubectl:
kubectl get all -n nginx-chart
Listo hasta aquí la guía de Helm, espero que te sirva, si tienes dudas puedes dejarla en los comentarios.