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 obtener una estimación de costos en función del uso previsto,
usa la calculadora de precios.
Cuando completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.
Antes de comenzar
Configura 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.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - 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.
Establece las variables de entorno:
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1Clona el repositorio de código:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.gitCambia al directorio de trabajo:
cd kubernetes-engine-samples/autopilot/networking-tutorialInicializa Terraform mediante este comando:
terraform initObserva los cambios en la infraestructura:
terraform planCuando se te solicite, ingresa tu dominio, como
my-domain.net.Aplica la configuración de Terraform:
terraform apply --auto-approveCuando 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"En el siguiente manifiesto, se describe un ManagedCertificate, FrontendConfig, Deployment, Service y también Ingress:
Reemplaza
DOMAIN_NAMEpor tu nombre de dominio, comomy-domain.net.Este manifiesto tiene las siguientes propiedades:
networking.gke.io/managed-certificates: El nombre del ManagedCertificate. Este recurso aprovisiona un certificado SSL administrado por Google (clásico).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.yamlVerifica si se creó el Ingress:
kubectl describe ingress frontendEl 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.
Verifica el estado del certificado SSL:
kubectl get managedcertificates.networking.gke.io networking-managed-certEl 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 ActiveEjecuta un comando
curl:curl -Lv https://DOMAIN_NAMEEl 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- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Borra los recursos de Kubernetes:
kubectl delete -f kubernetes-manifests.yamlBorra los recursos de Terraform:
terraform destroy --auto-approveCuando se te solicite, ingresa tu dominio, como
my-domain.net.- Obtén más información sobre las herramientas de redes de GKE.
Configura tu entorno
En este instructivo, usarás Cloud Shell para administrar recursos alojados enGoogle Cloud. Cloud Shell tiene preinstalado el software que necesitas para este instructivo, incluidos Terraform, kubectl y la CLI de gcloud.
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:
Crea un balanceador de cargas de aplicaciones externo
Probar la aplicación
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.