Desplegar una aplicación en GKE en Azure
En esta página se describe cómo crear un clúster y un pool de nodos, y cómo desplegar una aplicación de ejemplo con GKE en Azure.
Compatibilidad con Terraform
Si conoces Terraform, puedes usar los scripts de Terraform disponibles en GitHub para automatizar los requisitos previos y crear un clúster.
Antes de empezar
Antes de crear un clúster, debes completar los requisitos previos. En concreto, debe proporcionar los siguientes recursos:
- Una red virtual de Azure en la que se ejecutará el clúster.
- Una subred para las réplicas del plano de control de Kubernetes.
- Asignaciones de roles de Azure que concederán acceso a GKE en Azure a tu entorno de Azure mediante una cuenta principal de servicio.
- Un recurso AzureClient que usa GKE en Azure para autenticarse en los servicios de Azure y gestionar recursos en tu cuenta de Azure.
- Un par de claves SSH para acceder a las máquinas virtuales de Azure del clúster.
Es tu responsabilidad crear y gestionar estos recursos, que se pueden compartir entre todos tus clústeres. GKE en Azure gestiona todos los demás recursos de Azure subyacentes de tu clúster.
Definir la configuración predeterminada de gcloud CLI
Usa la CLI de gcloud para configurar los ajustes predeterminados de tu proyecto predeterminado y tu región Google Cloud .
Tu proyecto tiene un ID de proyecto como identificador único. Cuando creas un proyecto, puedes usar el ID de proyecto que se genera automáticamente o crear el tuyo propio.
Tu Google Cloud región es una ubicación desde la que se gestionarán tus clústeres. Por ejemplo, us-west1
. Consulta más información sobre las regiones de gestión.
Cuando configures estos ajustes predeterminados, no tendrás que incluirlos al ejecutar la CLI de Google Cloud. También puedes especificar ajustes o anular los predeterminados pasando las marcas --project
y --location
a la interfaz de línea de comandos de Google Cloud.
Cuando creas recursos de GKE en Azure después de configurar tu proyecto y tu ubicación predeterminados, los recursos se crean automáticamente en ese proyecto y en esa ubicación.
Para definir los valores predeterminados, sigue estos pasos:
Definir el proyecto predeterminado:
gcloud config set project PROJECT_ID
Sustituye
PROJECT_ID
por el ID del proyecto.Define la ubicación de gestión predeterminada:
gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
Sustituye
GOOGLE_CLOUD_LOCATION
por tu ubicación, comous-west1
.
Seleccionar los IDs de recursos de Azure de tu clúster
Seleccione un ID de grupo de recursos
Guarda el grupo de recursos de tu clúster en una variable de entorno ejecutando el siguiente comando:
CLUSTER_RESOURCE_GROUP_ID=$(az group show --query id --output tsv \
--resource-group=CLUSTER_RESOURCE_GROUP_NAME)
Sustituye CLUSTER_RESOURCE_GROUP_NAME
por el nombre del grupo de recursos en el que se aprovisionarán los recursos del clúster, que has configurado en el paso de requisito previo Crear un grupo de recursos de Azure.
Seleccione un ID de red virtual
Guarda el ID de la red virtual de tu clúster en una variable de entorno ejecutando el siguiente comando:
VNET_ID=$(az network vnet show --query id --output tsv \
--resource-group=VNET_RESOURCE_GROUP_NAME \
--name=VNET_NAME)
Haz los cambios siguientes:
VNET_RESOURCE_GROUP_NAME
con el nombre del grupo de recursos que contiene la red virtual, tal como se ha configurado en el paso de requisito previo Crear una red virtual de Azure.VNET_NAME
con el nombre de tu red virtual, tal como se ha configurado en el paso de requisito previo Crear una red virtual de Azure.
Seleccionar un ID de subred
Guarda el ID de la subred de tu clúster en una variable de entorno ejecutando el siguiente comando:
SUBNET_ID=$(az network vnet subnet show --query id --output tsv \
--resource-group VNET_RESOURCE_GROUP_NAME \
--vnet-name VNET_NAME \
--name SUBNET_NAME)
Sustituye:
VNET_RESOURCE_GROUP_NAME
con un nombre de grupo de recursos que contenga tu red virtual. Puede ser el nombre del grupo de recursos que haya configurado en Crear una red virtual de Azure.VNET_NAME
con el nombre de tu red virtual. Puede ser el nombre de la red virtual que hayas configurado en Crear una red virtual de Azure.SUBNET_NAME
con el nombre de tu subred. Por ejemplo,default
.
Seleccionar intervalos CIDR para el clúster
Kubernetes requiere que se proporcionen dos intervalos CIDR para el clúster. Estos intervalos CIDR deben elegirse de forma que no se solapen con los intervalos CIDR que usan tus subredes de VPC. Deben ser lo suficientemente grandes para el tamaño máximo previsto de tu clúster.
Intervalo CIDR de direcciones de pods: cuando se crea un nuevo
Pod
, se le asigna una dirección IP de este intervalo. Intervalo de ejemplo: 192.168.208.0/20Intervalo CIDR de direcciones de servicio: cuando se crea un servicio, se le asigna una dirección IP de este intervalo. Intervalo de ejemplo: 192.168.224.0/20
Crear un clúster
Usa el siguiente comando para crear un clúster en GKE en Azure.
gcloud container azure clusters create azure-cluster-0 \
--cluster-version 1.32.4-gke.200 \
--azure-region AZURE_REGION \
--fleet-project FLEET_PROJECT_ID \
--client CLIENT_NAME \
--resource-group-id $CLUSTER_RESOURCE_GROUP_ID \
--vnet-id $VNET_ID \
--subnet-id $SUBNET_ID \
--pod-address-cidr-blocks POD_CIDR_BLOCK \
--service-address-cidr-blocks SERVICE_CIDR_BLOCK \
--ssh-public-key "SSH_PUBLIC_KEY" \
--tags "google:gkemulticloud:cluster=azure-cluster-0"
Sustituye:
AZURE_REGION
: una región de Azure admitida asociada a tu región de Google CloudFLEET_PROJECT_ID
por el ID del proyecto host de la flota en el que se registrará el clúster.CLIENT_NAME
: el nombre de tu AzureClient.POD_CIDR_BLOCK
: el intervalo de direcciones de pods de tu clústerSERVICE_CIDR_BLOCK
: el intervalo de direcciones de servicio de tu clústerSSH_PUBLIC_KEY
con el texto de tu clave pública SSH, tal como se creó en el paso Crear un par de claves SSH de los requisitos previos. Si has guardado la clave pública en una variable de entorno en ese paso, puedes usar${SSH_PUBLIC_KEY}
.
Para obtener más información y parámetros opcionales, consulta la página de referencia de gcloud container azure clusters create.
Crear un grupo de nodos
Crea un grupo de nodos con Google Cloud CLI:
gcloud container azure node-pools create pool-0 \
--cluster azure-cluster-0 \
--node-version 1.32.4-gke.200 \
--vm-size Standard_B2s \
--max-pods-per-node 110 \
--min-nodes 1 \
--max-nodes 5 \
--ssh-public-key "SSH_PUBLIC_KEY" \
--subnet-id $SUBNET_ID \
--tags "google:gkemulticloud:cluster=azure-cluster-0"
Sustituye SSH_PUBLIC_KEY
por el texto de tu clave pública SSH,
que has creado en el paso Crear un par de claves SSH. Si has guardado tu clave pública en una variable de entorno, puedes usar ${SSH_PUBLIC_KEY}
.
Ver el estado de un clúster
Después de crear un clúster y un grupo de nodos, puedes ver el estado de un clúster con la CLI de Google Cloud o con la Google Cloud consola. Para ver el estado del clúster, elige si vas a usar la CLI de Google Cloud o la consola y sigue estos pasos: Google Cloud
gcloud
Usa el comando gcloud container azure clusters describe
para obtener detalles sobre tu clúster:
gcloud container azure clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre de tu clústerGOOGLE_CLOUD_LOCATION
: el nombre de la Google Cloud ubicación que gestiona el clúster
Google Cloud consola
En la Google Cloud consola, ve a la página Resumen de clústeres de Google Kubernetes Engine.
Los clústeres se muestran por su nombre y ubicación.
Haz clic en el nombre del clúster. Aparecerá un panel con información sobre el clúster, incluido su estado y las funciones habilitadas.
Obtener las credenciales de autenticación del clúster
Después de crear el clúster, debes obtener las credenciales de autenticación para interactuar con él:
gcloud container azure clusters get-credentials azure-cluster-0
Este comando configura kubectl
para acceder al clúster que has creado con Connect Gateway. Necesitas al menos un grupo de nodos para usar la pasarela Connect, ya que depende del agente Connect, que se ejecuta como un Deployment en el clúster.
Desplegar una aplicación en el clúster
Ahora que has creado un clúster, puedes desplegar una aplicación en contenedor en él. En esta guía de inicio rápido, puedes desplegar nuestra aplicación web de ejemplo,
hello-app
.
Los objetos de Kubernetes se usan para crear y gestionar los recursos de tu clúster. El objeto Deployment se usa para desplegar aplicaciones sin estado, como servidores web. Los objetos Service definen reglas y balanceadores de carga para acceder a tu aplicación desde Internet.
Crear el despliegue
Para ejecutar hello-app
en tu clúster, debes desplegar la aplicación ejecutando el siguiente comando:
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Este comando de Kubernetes,
kubectl create deployment
crea un Deployment llamado hello-server
. El pod de la implementación ejecuta la imagen de contenedor hello-app
.
En este comando:
--image
especifica una imagen de contenedor que se va a desplegar. En este caso, el comando extrae la imagen de ejemplo de un repositorio de Artifact Registry,us-docker.pkg.dev/google-samples/containers/gke/hello-app
. El atributo:1.0
indica la versión específica de la imagen que se va a extraer. Si no especifica ninguna versión, se usará la imagen etiquetada conlatest
.
Exponer el despliegue
Después de implementar la aplicación, debes exponerla a Internet para que los usuarios puedan acceder a ella. Puedes exponer tu aplicación creando un servicio, un recurso de Kubernetes que expone tu aplicación al tráfico externo.
Para exponer tu aplicación, ejecuta el siguiente comando:kubectl expose
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
Si se incluye la marca --type LoadBalancer
, se crea un balanceador de carga de Azure para el contenedor. La marca --port
inicializa el puerto público 80 en Internet y la marca --target-port
dirige el tráfico al puerto 8080 de la aplicación.
Los balanceadores de carga se facturan según los precios de los balanceadores de carga de Azure.
Inspeccionar y ver la aplicación
Inspecciona los pods en ejecución con
kubectl get pods
:kubectl get pods
Deberías ver un
hello-server
Pod en ejecución en tu clúster.Inspecciona el servicio
hello-server
conkubectl get service
:kubectl get service hello-server
En el resultado de este comando, copia la dirección IP externa del servicio de la columna
EXTERNAL-IP
.Para ver la aplicación desde tu navegador web, usa la IP externa con el puerto expuesto:
http://EXTERNAL-IP
Acabas de desplegar una aplicación web en un contenedor en GKE en Azure.
Limpieza
Elimina el servicio y el despliegue de la aplicación:
kubectl delete service hello-server kubectl delete deployment hello-server
Elimina tu grupo de nodos ejecutando
gcloud container azure node-pools delete
:gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
Para eliminar el clúster, ejecuta el siguiente comando:
gcloud container azure clusters delete
gcloud container azure clusters delete azure-cluster-0