Este instructivo está dirigido a los arquitectos de nube y administradores de operaciones interesados en implementar una aplicación web en un clúster de Google Kubernetes Engine (GKE) y exponerla con un balanceador de cargas HTTPS.
Objetivos
En este instructivo aprenderás realizar las siguientes tareas:
- Crear un clúster de GKE.
- Crear una dirección IP global y una zona de Cloud DNS con Terraform.
- Configurar el balanceo de cargas HTTPS.
- Implementar una aplicación web de muestra.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
Configurar tu proyecto
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
- Debes tener un nombre de dominio. El nombre de dominio no debe tener más de 63 caracteres. Puedes usar Google Domains o algún otro registrador.
Configura tu entorno
En este instructivo, usarás Cloud Shell para administrar recursos alojados en Google Cloud. Cloud Shell tiene preinstalado el software que necesitas para este instructivo, incluidos Docker, kubectl
y la CLI de gcloud.
Establece las variables de entorno:
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1
Clona el repositorio de código:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
Cambia al directorio de trabajo:
cd kubernetes-engine-samples/autopilot/networking-tutorial
Crear un clúster de GKE
El siguiente archivo de Terraform crea un clúster de GKE:
El siguiente archivo de Terraform crea una dirección IP global y una zona de Cloud DNS:
Inicializa Terraform mediante este comando:
terraform init
Observa los cambios en la infraestructura:
terraform plan
Cuando se te solicite, ingresa tu dominio, como
my-domain.net
.Aplica la configuración de Terraform:
terraform apply --auto-approve
Cuando se te solicite, ingresa tu dominio, como
my-domain.net
.El resultado es similar a este:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"
Crea un balanceador de cargas de aplicaciones externo
En el siguiente manifiesto, se describe un ManagedCertificate, FrontendConfig, Deployment, Service y también Ingress:
Reemplaza
DOMAIN_NAME
por tu nombre de dominio, comomy-domain.net
.Este manifiesto tiene las siguientes propiedades:
networking.gke.io/managed-certificates
: El nombre del ManagedCertificate.networking.gke.io/v1beta1.FrontendConfig
: El nombre del recurso FrontendConfig.kubernetes.io/ingress.global-static-ip-name
: El nombre de la dirección IP.kubernetes.io/ingress.class
: Indica al controlador de Ingress de GKE que crea un balanceador de cargas de aplicaciones externo.
Aplica el manifiesto al clúster:
kubectl apply -f kubernetes-manifests.yaml
Verifica si se creó el Ingress:
kubectl describe ingress frontend
El resultado es similar a este:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...
El Ingress puede tardar varios minutos en aprovisionarse.
Probar la aplicación
Verifica el estado del certificado SSL:
kubectl get managedcertificates.networking.gke.io networking-managed-cert
El certificado SSL puede tardar hasta 30 minutos en aprovisionarse. El siguiente resultado indica que el certificado SSL está listo:
NAME AGE STATUS networking-managed-cert 28m Active
Ejecuta un comando
curl
:curl -Lv https://DOMAIN_NAME
El resultado es similar a este:
* Trying 34.160.115.33:443... * Connected to DOMAIN_NAME (34.160.115.33) port 443 (#0) ... * TLSv1.3 (IN), TLS handshake, Certificate (11): ... * Server certificate: * subject: CN=DOMAIN_NAME ... > Host: DOMAIN_NAME
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Borra los recursos individuales
Borra los recursos de Kubernetes:
kubectl delete -f kubernetes-manifests.yaml
Borra los recursos de Terraform:
terraform destroy --auto-approve
Cuando se te solicite, ingresa tu dominio, como
my-domain.net
.
¿Qué sigue?
- Obtén más información sobre las herramientas de redes de GKE.