¿Qué vamos a ver?

What You'll Learn

Basado en la documentación oficial de K8s (licencia CC-BY-4.0).

  1. Accede a console.cloud.google.com
  2. Loguéate con tu cuenta de usuario elegida para el curso.
  3. Una vez ya en la consola, en la esquina superior izquierda busca un desplegable con 3 hexágonos pequeños para seleccionar tu proyecto.
  4. Ábrelo y selecciona tu proyecto asignado. Puedes tener que hacer click en el desplegable de organizaciones y cambiar a Sin organización.
  5. Te recomendamos dividir el escritorio horizontalmente en dos ventanas, una con la consola y/o Cloud Shell y otra con las instrucciones.
  6. Activa Cloud Shell en el icono de la parte superior derecha >_.
  7. Puedes configurar la completación de comandos para kubectl con la tecla "TAB":
    source <(kubectl completion bash)
    
    Comprueba que funciona escribiendo kubectl y presionando la tecla "TAB" 2 veces.

Vamos a descargar el binario de Helm y configurar la cuenta de servicio necesaria e inicializarlo.

  1. Descarga el script de instalación de Helm:
    curl -LO https://git.io/get_helm.sh
    
  2. Haz el script ejecutable:
    chmod 700 get_helm.sh
    
  3. Ejecuta el script de instalación:
    ./get_helm.sh
    
  4. Asocia tu cuenta al rol de cluster-admin en el clúster:
    kubectl create clusterrolebinding user-admin-binding --clusterrole cluster-admin --user $(gcloud config get-value account)
    
  5. Crea una cuenta de servicio para Tiller. Helm es la herramienta de cliente y Tiller la de servidor para Helm:
    kubectl create serviceaccount tiller -n kube-system
    
  6. Asocia la cuenta de servicio de Tiller al rol de cluster-admin:
    kubectl  create clusterrolebinding tiller-admin-binding --clusterrole cluster-admin --serviceaccount kube-system:tiller
    
  7. Inicializa Helm con la cuenta de servicio de Tiller (ésto puede tardar unos minutos):
    helm init --service-account tiller
    
  8. Verifica la instalación de Helm:
    helm version
    
  9. Actualiza los repositorios de charts de Helm:
    helm repo update
    
  1. Inspecciona las plantillas de la chart de Helm antes de desplegarlas:
    helm install stable/redis --dry-run --debug
    
  2. Usando una chart de Helm, despliega una instancia de Redis en tu clúster de K8s:
    helm install stable/redis
    
  3. Comprueba los recursos desplegados por Helm:
    kubectl get services
    kubectl get statefulsets
    kubectl get configmaps
    kubectl get secrets
    
  1. Anota la IP del servicio del máster de Redis en una variable de entorno:
    export IP_REDIS=$(kubectl get services -l app=redis -o json | jq -r '.items[].spec | select(.selector.role=="master")' | jq -r '.clusterIP')
    echo $IP_REDIS
    
  2. Anota la contraseña del máster de Redis en una variable de entorno:
    export PASSWORD_REDIS=$(kubectl get secret -l app=redis -o jsonpath="{.items[0].data.redis-password}"  | base64 --decode)
    echo $PASSWORD_REDIS
    
  3. Ejecuta una sesión shell en un Pod temporal para comprobar el despliegue de Redis:
    kubectl run redis-test-pod --rm -it --env REDIS_PW=$PASSWORD_REDIS --env REDIS_IP=$IP_REDIS --image docker.io/bitnami/redis:4.0.12 -- bash
    
  4. En la sesión shell interactiva, conéctate al clúster Redis:
    redis-cli -h $REDIS_IP -a $REDIS_PW
    
  5. Establece una clave de prueba y su valor:
    set demo-key demo-value
    
  6. Recupera el valor de la clave de prueba:
    get demo-key
    

Eliminar los recursos usados

Elimina los recursos creados por Helm

helm delete --purge redis

En esta práctica hemos visto cómo:

What we've covered