No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Gestionar stacks con Helm

24/33
Recursos

Comandos utilizados en la clase:

// Instalar helm
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

// Verificar si tenemos helm instalado
helm

// Configurar helm
helm init

// Verificar si Tiller está instalado
kubectl get pods -n kube-system

// Dar permisos a helm
kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

// Buscar paquetes
helm search

// Ejemplo de cómo instalar un paquete
helm search prometheus
helm inspect stable/prometheus | less
helm install stable/prometheus --set server.service.type=NodePort --set server.persistentVolume.enabled=false

// Obtener servicios
kubectl get svc

// Crear helm chart
helm create dockercoins
cd dockercoins
mv templates/ templates-old
mkdir templates
cd ..
kubectl get -o yaml --export deployment worker

Aportes 29

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

A la fecha los comandos estan un poco desactualizados, en mi caso utilice los siguientes:

Agregue el repo de prometheus-community que es el repositorio oficial de prometheus:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

Como ya tenemos el repositorio agregado, vamos hacer un search para ubicar los diferentes charts de prometheus:

helm search repo prometheus

Le hacemos un inspect a prometheus-community/prometheus:

helm inspect all prometheus-community/prometheus | less

Instalamos prometheus:

helm install my-prometheus prometheus-community/prometheus --set server.service.type=NodePort --set server.persistentVolume.enabled=false --version 15.0.1

y si estas utilizando minikube puedes exponer tu servicio de prometheus server de la siguiente forma:

minikube service my-prometheus-server -p platzi 

Recuerda que el -p <cluster_name> es para especificar el nombre del cluster en minikube, si no especificaste un nombre de cluster puedes quitar este flag.
.
.
.
Para la creación de los templates y poder crear tu chart dejo el script bash actualizado a la fecha:

while read kind name; do
kubectl get -o yaml $kind $name > templates/$name-$kind.yaml
done <<EOF
deployment worker
deployment hasher
daemonset rng
deployment webui
deployment redis
service hasher
service rng
service webui
service redis
EOF

Y recuerda que para instalar un chart con helm debes indicarle el siguiente comando (recuerda ubicarte por fuera de la carpeta de tu chart, si no intentara buscar el chart en el hub o en un custom repo):

helm install <target_name> <chart_name> 

Se requiere la actualización del curso, helm va en la Version:“v3.5.2” a la fecha …
Upgrading to Helm 3 will remove the server side component of Helm, Tiller and is a very straight forward and safe process.
Para Instalar los pasos que ocupe son los siguientes:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
El comando para buscar prometheus:
helm search repo prometheus
La version 13.4.0 todavia es BETA a la fecha de este aporte por lo que use la stable/prometheus aunque esta DEPRECATED, si quieren instalar la community de cualquier forma agreguen el repositorio
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

La instalacion se realiza de la siguiente forma
helm install --generate-name stable/prometheus --set server.service.type=NodePort --set server.persistentVolume.enabled=false

Al script le quitas --export debido a que ya no se usa y te va a dar el error

while read kind name; do kubectl get -o yaml $kind $name > dockercoins/templates/$name-$kind.yaml
done <<EOF
deployment worker
deployment hasher
daemonset rng
deployment webui
deployment redis
service hasher
service rng
service webui
service redis
EOF

helm install --generate-name dockercoins/
Espero les sirva.

A partir de helm v3. helm init ha sido deprecado y no es necesario utilizar Tiller. reference

<h1>¿Qué es Helm?</h1>

Es una herramienta que nos sirve como gestor de paquetes de Kubernetes.

Conceptos:

  • helm: es el cliente de Helm.
  • tiller: es el componente del servidor. Nos sirve para recibir los comandos que le enviamos desde helm. Ya que tiller se comunica directamente con el API de Kubernetes.
  • chart: son los paquetes manejados por helm.

Hola, parece que Helm en su nueva versión 3 ya no contiene el argumento ‘init’ ni es necesario ‘Tiller’

La forma de instalar y usar Helm ha cambiado:

https://helm.sh/docs/intro/quickstart/

Yo estoy siguiente el curso con mi clúster creado en Digital Ocean.
Y dado que ellos son los que gestionan el master, los pasos para poder manejar e instalar helm en nuestro clúster son distintos.
😄 Pero siempre la comunidad ayuda y encontré este tutotial en español que enseña paso a paso como hacerlo:
Link
Espero les sirva!

Helm 2 fue descontinuado.
Helm 3 no requiere tiller en el cluster de k8s.

while read kind name; do
kubectl get -o yaml $kind $name > dockercoins/templates/$name-$kind.yaml
done <<EOF
deployment worker
deployment hasher
daemonset rng
deployment webui
deployment redis
service hasher
service rng
service webui
service redis
EOF

curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

helm search hub prometheus
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm search repo prometheus-community
helm install my-prometheus prometheus-community
helm status my-prometheus

Instalacion de helm en Fedora:

sudo yum install openssl
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
helm version

Importante!!: Si usas CentOS o play with kubernetes debes instalar OpenSSL con el siguiente comando: yum install openssl y luego curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

Excelente, es muy importante que se renueve el contenido, porque no funciona porque las nuevas versiones se implementan diferente

si les aparece el siguiente error los pueden solucionar de la sigueinte manera:
error:

Error: failed to start container "node-exporter": Error response from daemon: path / is mounted on / but it is not a shared or slave mount

crean un archivo values.yaml y colocan el siguiente texto:

nodeExporter:
  hostRootfs: false
prometheus-node-exporter:
  hostRootFsMount: false

finalmente realizar un upgrade de la instalacion de prometheus que tengan:

helm upgrade --install my-prometheus prometheus-community/prometheus --set server.service.type=NodePort --set server.persistentVolume.enabled=false --version 15.0.1 -f values.yaml

Para la instalacion de helm en linux pueden hacer lo siguiente
descargan el binario desde la pagina de realeses del projecto en github
en mi caso es 3.9.3 y copiamos el link de descarga y luego usamos wget para descargar el archivo

wget https://get.helm.sh/helm-v3.9.3-linux-amd64.tar.gz

luego descomprimimos el archivo usando el siguiente comando

tar xf helm-v3.9.3-linux-amd64.tar.gz

esto nos dejara una carpeta si ingresamos a ella veremos el siguiente contenido:

-rw-r--r-- 1 user user 12K Aug 10 14:02 LICENSE
-rw-r--r-- 1 user user 3.3K Aug 10 14:02 README.md
-rwxr-xr-x 1 user user 45M Aug 10 13:58 helm*

luego usaremos el siguiente comando para moverlo a la carpeta donde linux almacena este tipo de binarios

sudo mv helm /usr/local/bin/

para confirmar que la instalacion se hizo de manera correcta usamos el siguiente comando y deberiamos ver lo siguiente:

helm version
version.BuildInfo{Version:"v3.9.3", GitCommit:"414ff28d4029ae8c8b05d62aa06c7fe3dee2bc58", GitTreeState:"clean", GoVersion:"go1.17.13"}

por qué en el script de export utiliza el recurso daemonset para rng? si al ejecutar kubectl get all no aparece ningún recurso del tipo daemonset creado? En mi caso cambie esa línea por deployment rng y me funcionó correctamente, tanto la exportación de los templates, como la creación de la aplicación con helm

Comando para hacer la instalación del helm chart:
Obtenido de la v3 de Helm. =>
helm install [release-name] [chart] [flags]

$ helm install dockercoins dockercoins

A mi me funcionó con el siguiente comando:

helm install v1 prometheus-community/prometheus --set server.service.type=NodePort --set server.persistentVolume.enabled=false

me sale el sigueinte error:
Error: error installing: the server could not find the requested resource
Alguein podria ayudarme con este problema?

Para quienes están utilizando kubectl (en pleno 2022), deben tener instalada la última versión de helm.

$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

No olviden que pueden instalarlo con brew (para el caso de MacOs)

$ brew install helm

Después, siguen los siguientes comandos para instalar Prometheus (link)

$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo update
$ helm install prometheus-community/prometheus --set server.service.type=NodePort --set server.persistentVolume.enabled=false --generate-name

Instalar helm url updated:
https://helm.sh/docs/intro/install/

en las versiones más recientes de helm, el último comando se debe cambiar por
helm install --generate-name dockercoins

Falta el script de bash para exportar los services.

Falta los apuntes

buena ayuda a la hora de hacer deploy masivo 😃 gracias

Abril 2021:
la bandera --export está obsoleta desde la version 1.14 en su lugar se utiliza algo como esto:

kubectl get [objeto] [nombre-objeto] -n [namespace] -o [yaml | json] > nombre_archivo.[yaml | json]

a continuación dejo mi script para descargar los archivos yaml

while read kind name; do
if [! -f ~/templates/$name-$kind.yaml]
then
touch ~/templates/$name-$kind.yaml
else
kubectl get $kind $name -n dockercoins -o yaml > ~/templates/$name-$kind.yaml
fi
done <<EOF
deployment worker
deployment hasher
daemonset rng
deployment webui
deployment redis
service hasher
service rng
service webui
service redis
EOF

SONARQUBE_JDBC_URL: jdbc:postgresql://db.example.com:5432/sonar?ssl=true&sslmode=verify-ca&sslrootcert=/secrts/server-ca.pem&sslkey=/secrts/client-key.pem&sslcert=/path/to/client-cert.pem

quiero conectar el configmap con esos certificados en el chjart como puedo hacer agradezco si me pueden ayudar

Por qué aparece que el servicio hasher ya existe? es decir, el ejercicio no se estaba realizando era con el worker? Quien podria explicarme esto ultimo por favor.

Y con el comando helm install dockercoins, se crean todos los servicios que copiamos en la carpeta templates?