Este tutorial demuestra cómo usar Google Kubernetes Engine (GKE) para exponer su aplicación web a Internet en una dirección IP externa estática y configurar un nombre de dominio para apuntar a su aplicación. Este tutorial asume que posee un nombre de dominio registrado, como ejemplo.com Puede registrar un nombre de dominio a través de Google Dominios u otro registrador de dominios de su elección si no tienes uno ## Objetivos Este tutorial demuestra los siguientes pasos: ## Costos Este instructivo usa los siguientes componentes facturables de Google Cloud: Para generar una estimación de costos basada en su uso proyectado, usa la calculadora de precios Cuando termine este tutorial, puede evitar la facturación continua eliminando los recursos que creó. Para obtener más información, consulte Limpiar ## Antes de comenzar Siga los siguientes pasos para habilitar la API de Kubernetes Engine: - Visite la página de Kubernetes Engine en la consola de Google Cloud - Crear o seleccionar un proyecto - Espere a que se habiliten la API y los servicios relacionados. Esto puede tardar varios minutos - Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Más información sobre cómo verificar si la facturación está habilitada en un proyecto Instale las siguientes herramientas de línea de comandos utilizadas en este tutorial: - gcloud se usa para crear y eliminar clústeres de Kubernetes Engine gcloud está incluido en el gcloudCLI - kubectlis se usa para administrar Kubernetes, el sistema de orquestación de clústeres que utiliza Kubernetes Engine. puedes instalar kubectlusing gcloud: los componentes de gcloud instalan kubectl Clona el código de muestra de GitHub: clon de git httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Establecer valores predeterminados para el Para ahorrar tiempo escribiendo su ID de proyecto y las opciones de zona de Compute Engine en el herramienta de línea de comandos de gcloud herramienta gcloudcommand-line, puede establecer los valores predeterminados: proyecto de conjunto de configuración de gcloud proyecto-idgcloud conjunto de configuración cómputo/zona cómputo-zona Crear un clúster Cree un clúster de contenedores llamado prueba de dominio para implementar su aplicación web: los clústeres de contenedores de gcloud crean una prueba de dominio ## Desplegando su aplicación web El siguiente manifiesto describe una implementación que ejecuta una imagen de contenedor de aplicación web de muestra: # Copyright 2021 Google LLC # # Licencia de Apache, versión 2.0 (la "Licencia # no puede usar este archivo excepto de conformidad con la Licencia. # Puede obtener una copia de la Licencia en # # http://www.apache.org/licenses/LICENSE-2.0 # # A menos que lo requiera la ley aplicable o se acuerde por escrito, el software # distribuido bajo la Licencia se distribuye "TAL CUAL", # SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita. # Consulte la Licencia para conocer el idioma específico que rige los permisos y # las limitaciones en virtud de la Licencia. apiVersion: apps/v1 kind: Deployment metadata: name: helloweb label: app: hello spec: selector: matchLabels: app: hello tier: plantilla web: metadatos: etiquetas: aplicación: hola nivel: especificación web: contenedores: - nombre: hola-aplicación imagen: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 puertos: - containerPort : 8080 recursos: solicitudes: cpu: 200m Ejecute el siguiente comando para crear la implementación: kubectl apply -f helloweb-deployment.yaml ## Exponiendo tu aplicación Puedes exponer tu aplicación en GKE usando cualquiera de los siguientes métodos: Use un servicio, que crea un equilibrador de carga de red TCP que funciona con direcciones IP regionales. Use un Ingress, que crea un equilibrador de carga HTTP(S) y admite direcciones IP globales Para obtener más información sobre las ventajas y desventajas de cada método, consulte Configuración del equilibrio de carga HTTP(S) con Ingress usar un servicio Para asegurarse de que su aplicación tenga una dirección IP pública estática, debe reservar una dirección IP estática Si elige exponer su aplicación mediante un Servicio, debe crear una dirección IP regional. Las direcciones IP globales solo funcionan con el tipo de recurso Ingress, como se explica en la siguiente sección Para usar un Servicio, cree una dirección IP estática llamada helloweb-ip en el región us-central1: gcloud Las direcciones de computación de gcloud crean helloweb-ip --region us-central1 Para encontrar la dirección IP estática que creó, ejecute el siguiente comando: Las direcciones de computación de gcloud describen helloweb-ip --region us-central1Output: dirección: 203.0.113.32 .. Conector de configuración **Nota Este paso requiere Conector de configuración. Siga el Instrucciones de instalación para instalar Config Connector en su clúster apiVersion: compute.cnrm.cloud.google.com/v1beta1 tipo: ComputeAddress metadatos: nombre: helloweb-ip spec: ubicación: us-central1 kubectl apply -f compute-address-regional.yamlPara encontrar la dirección IP estática, ejecute el siguiente comando: kubectl obtener dirección de cálculo helloweb-ip -o jsonpathspec.address}'El siguiente manifiesto describe un Servicio de tipo LoadBalancer, que crea un balanceador de carga de red para exponer Pods con una IP pública Reemplazar `SU.IP.DIRECCIÓN.AQUÍ` con la dirección IP estática: # Copyright 2021 Google LLC # # Con licencia de Apache License, versión 2.0 (la "Licencia # no puede usar este archivo excepto de conformidad con la Licencia. # Puede obtener una copia de la Licencia en # # httpwww.apache.org /licenses/LICENSE-2.0 # # A menos que lo requiera la ley aplicable o se acuerde por escrito, el software # distribuido bajo la Licencia se distribuye "TAL CUAL", # SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. # Consulte la Licencia para conocer el idioma específico que rige los permisos y las # limitaciones en virtud de la Licencia. apiVersion: v1 kind: Service metadata: name: helloweb label: app: hello spec: selector: app: hello tier: web ports: - port: 80 targetPort: 8080 tipo: LoadBalancer loadBalancerIP: "SU.DIRECCIÓN.IP.AQUÍ"Luego, crea el Servicio: kubectl apply -f helloweb-service-ip-estática.yaml Para ver la dirección IP reservada asociada con el balanceador de carga: kubectl obtener salida de servicio: NOMBRE CLÚSTER-IP EXTERNO-IP PUERTO(S) EDAD helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Usar un ingreso Si elige exponer su aplicación mediante un Ingress, que crea un equilibrador de carga HTTP(S), debe reservar una dirección IP estática global. Las direcciones IP regionales no funcionan con Ingress Para obtener más información sobre cómo usar Ingress para exponer sus aplicaciones a Internet, consulte el tutorial Configuración del equilibrio de carga HTTP(S) con Ingress. Para crear una dirección IP estática global llamada holaweb-ip: gcloud Las direcciones de computación de gcloud crean helloweb-ip --global Para encontrar la dirección IP estática que creó: Las direcciones de computación de gcloud describen helloweb-ip --globalOutput: dirección: 203.0.113.32 .. Conector de configuración **Nota Este paso requiere Conector de configuración. Siga el Instrucciones de instalación para instalar Config Connector en su clúster apiVersion: compute.cnrm.cloud.google.com/v1beta1 tipo: ComputeAddress metadatos: nombre: helloweb-ip spec: ubicación: global kubectl apply -f cómputo-dirección-global.yaml El siguiente manifiesto describe un Ingress que es una aplicación web en una IP estática con dos recursos: - A serviciocon tipo: Puerto de nodo - Un Entrada configurada con el nombre del servicio y la anotación de IP estática # Copyright 2021 Google LLC # # Con licencia de Apache License, versión 2.0 (la "Licencia # no puede usar este archivo excepto de conformidad con la Licencia. # Puede obtener una copia de la Licencia en # # httpwww.apache.org /licenses/LICENSE-2.0 # # A menos que lo requiera la ley aplicable o se acuerde por escrito, el software # distribuido bajo la Licencia se distribuye "TAL CUAL", # SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. # Consulte la Licencia para conocer el idioma específico que rige los permisos y las # limitaciones en virtud de la Licencia. -ip etiquetas: aplicación: hola especificaciones: backend predeterminado: servicio: nombre: helloweb-backend puerto: número: 8080apiVersion: v1 tipo: metadatos del servicio: nombre: helloweb-backend etiquetas: aplicación: hola especificaciones: tipo: NodePort selector: aplicación: hola nivel: puertos web: - puerto: 8080 targetPort: 8080 Él La anotación kubernetes.io/ingress.global-static-ip-name especifica el nombre del recurso de dirección IP global que se asociará con la carga HTTP(S) Balancín Aplique el recurso al clúster: kubectl apply -f helloweb-ingress-static-ip.yamlOutput: ingreso "helloweb"creado servicio "helloweb-backend"creado Para ver la dirección IP de reserva asociada con el balanceador de carga: kubectl obtener entrada Salida: NOMBRE ANFITRIONES DIRECCIÓN PUERTOS EDAD helloweb * 203.0.113.32 80 4m ## Visitando su dirección IP estática reservada Para verificar que el balanceador de carga esté configurado correctamente, puede usar un navegador web para visitar la dirección IP o usar rizo: curl http203.0.113.32/Salida: ¡Hola Mundo! Nombre de host: helloweb-3766687455-8lvqv ## Configurando sus registros de nombres de dominio Para que los navegadores consulten su nombre de dominio, como ejemplo.com, o subdominio nombre, como blog.example.com, apunte a la dirección IP estática que reservó, debe actualizar los registros DNS (Domain Name Server) de su nombre de dominio Debes crear un **A** (Dirección) tipo de registro DNS para su dominio o subdominio nombre y tener su valor configurado con la dirección IP reservada Los registros DNS de su dominio son administrados por su servidor de nombres. Su servidor de nombres puede ser el "registrador"donde registró su dominio, un servicio DNS como Cloud DNS u otro proveedor externo. Si su servidor de nombres es Cloud DNS: siga la guía de inicio rápido de Cloud DNS para configurar el registro DNS A para su nombre de dominio con la dirección IP reservada de su aplicación. Si su servidor de nombres es de otro proveedor: consulte la documentación de su servicio DNS sobre la configuración de registros DNS A para configurar su nombre de dominio. Si elige usar Cloud DNS en su lugar, consulte Migración a Cloud DNS ## Visitando su nombre de dominio Para verificar que los registros DNS A de su nombre de dominio se resuelvan en la dirección IP que reservó, visite su nombre de dominio Para realizar una consulta de DNS para el registro A de su nombre de dominio, ejecute el anfitrión dominio: host ejemplo.comSalida: ejemplo.com tiene la dirección 203.0.113.32 En este punto, puede apuntar su navegador web a su nombre de dominio y visitar su sitio web. ## Limpiar Para evitar incurrir en cargos a su cuenta de Google Cloud por los recursos utilizados en este instructivo, elimine el proyecto que contiene los recursos o conserve el proyecto y elimine los recursos individuales. Elimine los recursos de equilibrio de carga: kubectl eliminar ingreso, servicio -l app=hola Libere la IP estática reservada. Después de eliminar el balanceador de carga, la dirección IP no utilizada pero reservada ya no es gratuita y se factura según el precio de la dirección IP no utilizada. Ejecute los siguientes comandos para liberar el recurso de IP estática: Si usó un Servicio: Las direcciones de cálculo de gcloud eliminan helloweb-ip --region us-central1 Si usó un ingreso: Las direcciones de computación de gcloud eliminan helloweb-ip --global - Eliminar la aplicación de muestra: kubectl delete -f helloweb-deployment.yaml Espere hasta que se elimine el equilibrador de carga observando el resultado del siguiente comando. El resultado no debe mostrar una regla de reenvío que contenga "helloweb"en su nombre: lista de reglas de reenvío de cómputo de gcloud Eliminar el clúster de contenedores: Los clústeres de contenedores de gcloud eliminan la prueba de dominio ## Que sigue Registre su propio nombre de dominio a través de Google Domains Explore otros tutoriales de Kubernetes Engine Explore arquitecturas de referencia, diagramas, tutoriales y prácticas recomendadas sobre Google Cloud. Eche un vistazo a nuestro Centro de arquitectura en la nube.