Skip to content

robbyq92/hacktone2_chart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

hacktone2_chart

Crear un chart de Helm

002 Helm Chart Web

Vas a crear un Helm Chart para desplegar una aplicación web llamada "WebAppX" (donde X será un número a elegir por vosotros). La aplicación es simple y consta de un servidor web que sirve una página HTML básica que podéis encontrar en esta imagen (usadla!): https://github.com/cloudogu/hello-k8s

Requisitos de la Aplicación: Servidor Web: La aplicación utiliza un servidor web https://github.com/cloudogu/hello-k8s. Haced por forwading para ver la ver la web. Página HTML: La imagen ya viene con un servidor web y un contenido customizable.

Requisitos de Chart de Helm:

Valores Configurables:

Nombre de la aplicación.
Puerto donde escucha la aplicación.
Mensaje (mirar documentación de la imagen hello-k8s).
Posibilidad de cambiar el número de replicas.

Una vez desplegada la primera aplicación, desplegar 2 más con el mismo Chart solo cambiando el nombre, el mensaje y el puerto de la aplicación.

TIPS: helm create -f

PASOS:

Primero se crea el chart de helm con helm create WebApp1, donde crea por defecto unos ficheros de configuración que nos ayuda a configurar cada cosa (deployment, servicio, service account, etc). Los ficheros los podemos configurar a nuestro gusto, ya que los primeros, son por defecto para que nos hagamos una idea de como están las variables configuradas.

helm create Webapp1

Nos crea la siguiente carpeta, donde luego borramos lo que no nos hace falta para configurar el chart creado y customizarlo.

Vemos las carpetas:

image

Dentro tenemos varios archivos:

image

Las carpetas y ficheros:

- Chart.yml -> Es el fichero de configuración donde podemos escribir las versiones del chart y la descripción del chart.
- Values.yml -> Es el fichero de configuración donde pondremos nuestros variables por defecto, para luego inyectarlos en los distintos servicios (deployment, services, etc) que se encuentra en Templates.
- Templates -> Carpeta con los ficheros .ymls de configuración, según si es un deployment, servicio, ingress, etc.
NOTA: Hay un fichero de ignore, en esto se deja todo lo que se quiere ignorar, tipo cosas de ficheros de backup, git, etc.

Dentro de la carpeta Templates, se ha dejado los ficheros ymls y un .tlp que es un fichero de templates (plantilla).

image

Despliegue

Una vez dentro de la carpeta WebApp1 en este caso, podemos ejecutar el siguiente comando:

helm install webapp1 . --dry-run  -n hacktone2-helm

El comando en si, instala el chart, pero en modo --dry-run para comprobar primero que funciona todo y no encuentra errores, en el Namespace "hacktone2-helm" dandole un nombre al chart "webapp1".

Las flechas y los bloques, se puede observar que al desplegarlo saldría con el nombre de la configuración por defecto.

image

NOTA: Para los requerimientos se pedía que se pudiese cambiar el nombre, el puerto, replicas, por lo tanto vamos a modificarlo con los parametros de --set y ver si cambia los valores requeridos:

 helm install webapp2 . --dry-run --set PORT=8082 --set MESSAGE=WebApp2 --set REPLICAS=2 --set NOMBRE_APP=WebApp2 -n hacktone2-helm

Ejecutando el comando anterior, alteramos las Replicas, Mensage, Puerto y Nombre de la App.

image

Lo mismo para el deployment 3, cambiando los tipos de Replicas, Nombre de la App y su puerto.

helm install webapp2 . --dry-run --set PORT=8083 --set MESSAGE="Deploy WebApp3" --set REPLICAS=5 --set NOMBRE_APP=WebApp3 -n hacktone2-helm

image

Comprobaciones

Una vez que tenemos el dry run, hay que hacer los despliegues para ver que conviven todos en el mismo Namespace y que funcionan todos según el puerto y el servicio. Para ello los desplegamos con los comandos anteriores pero sin el dry-run.

helm install webapp1 . -n hacktone2-helm

Se despliega el primero, sin argumentos para pillar los valores por defecto:

 kubectl get pods,svc,deploy,ingress -o wide -n hacktone2-helm

image

Probamos ahora con el forward que llegamos al puerto del servicio:

kubectl -n hacktone2-helm port-forward service/webapp1-k8 31565:80

Se ve que llegamos y nos da también el nombre del primer pod:

image

Desplegamos el segundo deploy:

helm install webapp2 .  --set PORT=8082 --set MESSAGE=webapp2 --set REPLICAS=3 --set NOMBRE_APP=webapp2 -n hacktone2-helm

Comprobamos el despliegue y el forward:

kubectl get pods,svc,deploy  -n hacktone2-helm

kubectl -n hacktone2-helm port-forward service/webapp2-k8 30310:80

image

image

El 3 Deployment con un nombre de webapp3, igual:

helm install webapp3 .  --set PORT=8083 --set MESSAGE=webapp3 --set REPLICAS=2 --set NOMBRE_APP=webapp3 -n hacktone2-helm
kubectl get pods,svc,deploy  -n hacktone2-helm

image

Le hacemos un port-forward para comprobar

kubectl -n hacktone2-helm port-forward service/webapp3-k8 30717:80

image

About

Crear un chart de Helm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages