Implementación de Clúster de Kubernetes en GKE con Terraform

Fcastillovilches
5 min readJun 10, 2021

--

Prerrequisitos

  • Terraform Instalado (Documentación)
  • Cuenta GCP y Google Cloud SDK Instalado (Documentación).
  • Proyecto Nuevo en GCP.
  • Configuración de Proyecto en la consola de Google Cloud SDK.

Ir a la terminal y usando la consola de Google Cloud SDK, ejecutar el siguiente comando, con el fin de determinar que estaremos usando por defecto el proyecto usado para la implementación del proyecto.

gcloud config set project [id_proyecto]

Manos a la obra

Primero verificaremos nuestros proyectos existentes.

Luego debemos verificar que tenemos habilitada la API de GKE en el proyecto Seleccionado. Se debería ver una imagen como la siguiente:

Una vez que tengamos habilitado todo por el lado de la consola web de GCP podemos proceder a revisar nuestros archivos de terraform, los que tendrán cada una de las características a configurar en el clúster.

La estructura del repositorio es la siguiente:

Los archivos importantes de esta implementación son:

  • terraform.tfvars : Archivo donde declaramos las variables a usar en nuestro proyecto.
  • vpc.tf : Especificaciones de las configuraciones de red de nuestra implementación.
  • gke.tf : Especificaciones de las configuraciones de kubernetes de nuestra implementación.
  • outputs.tf : Especificaciones de variables de exportación o de salidas de nuestra implementación (Estas variables serán entregadas al final de la aplicación de Terraform).

Nota: Para esta implementación se usa como location una zona con el fin de usar la capa gratuita de GCP.

Repositorio Github

https://github.com/facmin/gke

Una vez que hemos modificado nuestras variables según las características que necesitamos, tales como proyecto, región, zona, nombre, cantidad de nodos workers, direccionamiento IP, tipo de node, etc. Podremos proceder a la implementación de nuestro proyecto a través de terraform

Proceder ejecutando el comando de inicialización de Terraform.

terraform init

Una vez inicializado Terraform podremos valida nuestra configuración a través del siguiente comando.

terraform plan

En la imagen anterior se describen cada una de las configuraciones que realizara terraform en GCP, con el fin de implementar la infraestrcurtura de Kubernetes definida en los archviso de Terraform.

Una vez que estemos seguro de que esta es la configuración deseada proceder con el comando de implementación o aplicación de la configuración.

terraform apply

Al final nos pedirá la confirmación para aplicacion de los cambios en donde debemos escribir yes.

Si vamos alla consola web de GCP especifcamente a la seccion de GKE veremos que nuestra infraestrcurura se esta creando.

Una vez terminada la implementación veremos que un mensaje de que el proceso a sido completado en su totalidad y se detallaran los recursos creados, además de se expresaran las variables que definimos como salida en el archivo outputs.tf.

Ahora que el proceso ha terminado podremos revisar la información del cluster implementado en la consola web de GCP.

Para conectarnos a nuestros cluster de Kubernetes por defecto con el comando kubectl necesitamos que este presente el archvivo config en ~/.kube/config

Para esto podremos obtener esta información directamente a traves del Gcloud SDK con el siguiente comando.

gcloud container clusters get-credentials k8s-test-302200-gke --zone us-central1-c

En este caso para mi k8s-test-302200-gke representa el nombre del clúster, en cambio us-central1-c representa la zona en donde fue implementado el clúster.

Con el comando detallado anteriormente se descargara automatica mente el archivo kubeconfig en el directorio ~/.kube/config

Con esto ya ejecutado podremos interarctuar con nuestro cluster a traves de kubectl.

Algunos comandos de Ejemplo:

Obtener información básica de los nodos del clúster (Worker):

kubectl get nodes

Obtener información extendida de los nodos del clúster (Worker):

kubectl get nodes -o wide

Obtener los pods, deployments, servicios, replicaset y daemonset de todo el cluster:

kubectl get all --all-namespaces

En caso de que se desee borrar toda la infaestrutura creada, debemos ejecutar el siguiente comando:

terraform destroy

Al fnal veremos un mensaje como el siguiente en donde se obtendra información de los destuido.

Repositorio

https://github.com/facmin/gke

Originally published at http://www.facmin.cl.

--

--

No responses yet