Helm es una herramienta para administrar aplicaciones en Kubernetes mediante paquetes llamados charts. Los charts contienen los recursos de Kubernetes necesarios para implementar una aplicación. Helm facilita el despliegue, actualización y eliminación de aplicaciones en Kubernetes de una manera declarativa y reproducible.
2. Who am I?
● Mario Inga Cahuana
● DevOps Engineer en BlazingSQL
● Software Developer
● Miembro de comunidades:
○ DevOps Perú
○ Cloud Native Peru
○ Docker Lima
● Security fan
● Metal m/
● twitter: @mario21ic
7. Los problemas
- Manejo de diferentes versiones (tags, componentes, config, etc)
- Outputs (url de mi service, instrucciones)
- Condicionales?
- Distribución de mi recetario con varios parámetros.
- Instalar una solución más de una vez (namespace?)
- Instalar dicha solución con algunos cambios como: services,
pods, volumes, configmap, secrets, etc.
Spoiler: Kubernetes manifest no es dinámico!
8. Alternativas
- Repositorio de codigo: github, gitlab, bitbucket, etc
- Un buen Readme.md
- La vieja confiable “bash script”
- Le paso parametros
- Hacemos el clásico “sed”
- Realiza el “kubectl apply *.yml“
- Poner un sleep.
- Obtener la Url de un Service
- Imprimir la Url e indicaciones.
9. Helm
● El manejador de paquetes (charts) para Kubernetes.
● Es la mejor forma para encontrar, compartir
y usar aplicaciones hechas para Kubernetes.
● Opensource https://github.com/helm/helm
● Web Oficial https://helm.sh/
● Actualmente en “v3”
(No Tiller)
10. Helm
1. Manejo de la complejidad
2. Actualizaciones fáciles (helm upgrade)
3. Simple forma de compartir recetarios (Charts)
4. Rollbacks
5. Chart Testing
11. Chart
Helm es una herramienta para manejar Charts.
Charts son paquetes pre configurados de
recursos de Kubernetes.
En resumen:
Un Chart es un grupo de Kubernetes manifests.
12. Repository
Un lugar centralizado donde se pueden almacenarse Charts y compartir.
Nota: también puedes crearte tu propio Helm Repository
Mas informacion https://helm.sh/docs/topics/chart_repository/
CLI:
$ helm repo list
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com
$ helm repo update
13. Helm Hub
Es el Repositorio público de Helm
https://hub.helm.sh/
CLI:
$ helm search hub redis
14. Releases
Es la manera de manejar las instalaciones de Charts obtenidos
mediante Repositorios en Kubernetes.
CLI:
$ helm install <nombre_release> <ubicacion del chart>
$ helm install <nombre_release> --set replicatCount=1 <ubicacion del chart>
$ helm status <nombre_release>
$ helm list
$ helm upgrade <nombre_release> <ubicacion del chart>
$ helm uninstall <nombre_release>
15. Helm Flow
$ helm client mychart/Chart.yaml Releases
$ helm list
K8s cluster
$ kubectl
get nodes
17. Demo time!
1. Navegar en el Hub de Helm e instalar un Wordpress.
2. Clonar y analizar el App https://github.com/mario21ic/devops-peru-meetup-mayo-2020
3. Generar un Release con nombre “demo1”, obtener k8s manifest y probar.
4. Generar otro Release con nombre “demo2”, 3 réplicas y Service de tipo “Load Balancer” finalmente
probar que sean independientes.
5. Actualizar el Release con una nueva versión del docker image.
6. Desinstalar el Release.
18. Demo App
1. Es una web hecha en Python
2. Obtiene e imprime la variable de entorno “MY_KEY” obtenido desde un Configmap.
3. Se conecta a Redis mediante el endpoint almacenado en un Configmap.
4. Hace get de un Key de Redis y aplica +1, luego lo imprime.
5. Imprime el Hostname del container.
6. Imprime la Versión actual del Docker Image
19.
20. Helm graduation - 30 Abril
https://www.cncf.io/announcement/2020/04/30/cloud-native-computing-foundation-announces-helm-graduation/