viernes, 30 de agosto de 2024

Helm creando tu repositorio

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:

```bash
helm search hub grafana
```

Buscar en los repositorios ya instalados:

```bash
helm searh repo grafana
```

Para ver los Values de un paquete:

```bash
helm show values grafana
```

Supongamos que hiciste tu propio archivo de values y lo quieres aplicar en lugar del que trae por el paquete:

```bash
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.

```bash
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:

```bash
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:

```bash
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"
```bash
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:

```bash
---
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:

```bash
helm install nginx-chart ahioros/nginx-chart
```
Podemos verificar nuestra aplicación instalada con kubectl:

```bash
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.

No hay comentarios.: