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.
Crea 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