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 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
- Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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.
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
Terraform,
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-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-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 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"
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_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.
Probar la aplicación
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
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
Borra un Google Cloud proyecto:
gcloud projects delete PROJECT_ID
Borra los recursos individuales
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.
¿Qué sigue?
- Obtén más información sobre las herramientas de redes de GKE.