Añado Helm
This commit is contained in:
parent
7aa94445cd
commit
ecc14aee43
128
README.md
128
README.md
@ -77,6 +77,9 @@
|
||||
- [Llamar a la API](#llamar-a-la-api)
|
||||
- [Información del Cluster](#información-del-cluster)
|
||||
- [Resumen en una imagen](#resumen-en-una-imagen)
|
||||
- [Helm: Control de despliegues en Kubernetes](#helm-control-de-despliegues-en-kubernetes)
|
||||
- [Instalación de Helm](#instalación-de-helm)
|
||||
- [Crear una release](#crear-una-release)
|
||||
- [Agradecimientos 🎁](#agradecimientos-)
|
||||
|
||||
|
||||
@ -1827,10 +1830,131 @@ kubectl get componentstatuses
|
||||
|
||||
[Descarga PNG](img/kubernetes-cheat-sheet.png)
|
||||
|
||||
## Helm: Control de despliegues en Kubernetes
|
||||
|
||||
[Helm](https://helm.sh/) es uno de los proyectos más interesantes dentro de la comunidad de Kubernetes.
|
||||
|
||||
La idea de Helm es controlar un **despliegue** (lo llaman release) de tal forma que:
|
||||
|
||||
- Usando un solo conjunto de valores (generalmente expresado en YAML):
|
||||
- Todos los artefactos que lo componen (deploys, pods, configmaps, services...) tienen reflejados los valores de configuración correctos.
|
||||
- Están declarados correctamente en el clúster K8s.
|
||||
- Ante un cambio de valores, se reconfiguran los artefactos correspondientes.
|
||||
- El release, con un solo comando, puede:
|
||||
- Listarse
|
||||
- Detenerse
|
||||
- Actualizarse
|
||||
- Reconfigurarse
|
||||
- Los releases parten de planes o [charts](https://github.com/helm/charts), es decir, repositorios con el código necesario para lanzar una aplicación en Kubernetes:
|
||||
- Se encuentran en repositorios públicos.
|
||||
- Los hay de todos los tipos (mysql, mongo, Wordpress...).
|
||||
- Se pueden descargar y utilizar o ampliar como queramos.
|
||||
|
||||
### Instalación de Helm
|
||||
|
||||
En nuestro ubuntu es muy sencillo:
|
||||
|
||||
```shell
|
||||
snap install helm --classic
|
||||
```
|
||||
|
||||
**¡Nota! El binario está en /snap/bin/helm, si no está en la ruta, puede incluirlo o crear un enlace simbólico, por ejemplo, a /usr/sbin/helm.*
|
||||
|
||||
En versiones anteriores era necesario inicializar helm para empezar a trabajar con él, pero en la versión 3 ya no es así. Si estamos usando una versión anterior, tendremos que lanzar el siguiente comando:
|
||||
|
||||
```shell
|
||||
helm init
|
||||
```
|
||||
|
||||
**¡Nota! Si dice que las versiones son incompatibles, haga `helm init --upgrade`.*
|
||||
|
||||
**¡Nota 2! helm puede tardar un minuto en ponerse en marcha. Espere hasta que pueda interactuar con él.*
|
||||
|
||||
Ahora, podemos crear un release.
|
||||
|
||||
### Crear una release
|
||||
|
||||
Para crear un release, descargue el **chart** o el plano o pídale a helm que lo descargue él mismo.
|
||||
|
||||
Los charts están en repositorios.
|
||||
|
||||
```shell
|
||||
# listamos os repos
|
||||
helm repo list
|
||||
|
||||
NAME URL
|
||||
local http://127.0.0.1:8879/charts
|
||||
|
||||
# Engadimos o repo de bitnami, un dos máis utilizados
|
||||
helm repo add bitnami https://charts.bitnami.com
|
||||
|
||||
"bitnami" has been added to your repositories
|
||||
|
||||
# Listamos os charts dispoñibles
|
||||
helm search repo bitnami
|
||||
NAME CHART VERSION APP VERSION
|
||||
bitnami/airflow 13.0.4 2.3.3 Apache Airflow is a tool to express and execute...
|
||||
bitnami/apache 9.1.18 2.4.54 Apache HTTP Server is an open-source HTTP serve...
|
||||
bitnami/argo-cd 4.0.6 2.4.8 Argo CD is a continuous delivery tool for Kuber...
|
||||
```
|
||||
|
||||
Podemos, por ejemplo, instalar un mariadb:
|
||||
|
||||
```shell
|
||||
helm install bbdd bitnami/mariadb
|
||||
```
|
||||
Para ver el release
|
||||
|
||||
```shell
|
||||
helm list
|
||||
|
||||
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
|
||||
bbdd default 1 2022-08-11 10:12:54.717064554 -0400 EDT deployed mariadb-11.1.7 10.6.8
|
||||
```
|
||||
|
||||
Si exploramos nuestro clúster:
|
||||
|
||||
```shell
|
||||
kubectl get pods
|
||||
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
bbdd-mariadb-0 1/1 Running 0 98s
|
||||
|
||||
```
|
||||
|
||||
También creó el servicio vinculado al pod, un secreto para password y un configmap.
|
||||
|
||||
Es decir, ¡tenemos un MariaDB instalado con las mejores prácticas de la industria para Kubernetes!
|
||||
|
||||
Para configurarlo hay que ir a [artifacthub](https://artifacthub.io/packages/helm/bitnami/mariadb), donde nos indican los valores a modificar para gestionar nuestra instalación.
|
||||
|
||||
Ponga esos valores en un archivo yaml:
|
||||
|
||||
```yaml
|
||||
# values.yaml
|
||||
db:
|
||||
username: paco
|
||||
password: segredo
|
||||
database: test
|
||||
```
|
||||
|
||||
Ahora estamos relanzando nuestro release:
|
||||
|
||||
```shell
|
||||
# borramos a release
|
||||
helm uninstall bbdd
|
||||
|
||||
# relanzamos cos values
|
||||
helm install maria -f values.yaml bitnami/mariadb
|
||||
```
|
||||
|
||||
Y tendríamos el deployment con una base de datos creada y un usuario vinculado a ella.
|
||||
|
||||
## Agradecimientos 🎁
|
||||
|
||||
Esta guía ha sido creada a partir de multitud de tutoriales que he hecho, son mis apuntes personales. Pero quiero hacer una especial mención a [Pelado Nerd](https://www.youtube.com/c/PeladoNerd), espero que la guía sea como el Pelado manda.
|
||||
|
||||
Esta guía ha sido creada a partir de multitud de tutoriales que he hecho, son mis apuntes personales. Pero quiero hacer unas menciones especiales a:
|
||||
- [**Pelado Nerd**](https://www.youtube.com/c/PeladoNerd). Espero que la guía sea como el Pelado manda.
|
||||
- [**Prefapp**](https://prefapp.es/). De donde he folkeado el [tutorial de helm](https://github.com/prefapp/formacion/blob/master/cursos/kubernetes/03_configuracion/07_Helm.md).
|
||||
|
||||
---
|
||||
[Manu](https://vergaracarmona.es) 😊
|
Loading…
Reference in New Issue
Block a user