Implementa una aplicación en GKE en Azure
En esta página, se describe cómo crear un clúster y un grupo de nodos y, luego, implementar una aplicación de ejemplo con GKE en Azure.
Compatibilidad con Terraform
Si ya conoces Terraform, puedes usar las secuencias de comandos de Terraform disponibles en GitHub para automatizar los requisitos previos y crear un clúster.
Antes de comenzar
Antes de crear un clúster, debes completar los requisitos. En particular, debes 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 otorgarán a GKE en Azure acceso a tu entorno de Azure a través de una principal del servicio.
- Un recurso de AzureClient que GKE en Azure usa para autenticarse en los servicios de Azure y administrar los recursos en tu cuenta de Azure
- Un par de claves SSH para acceder a máquinas virtuales de Azure en el clúster
Es tu responsabilidad crear y administrar estos recursos, que se pueden compartir entre todos los clústeres. GKE en Azure administra el resto de los recursos subyacentes de Azure para tu clúster.
Establece la configuración predeterminada para la CLI de gcloud
Usa la CLI de gcloud a fin de establecer la configuración predeterminada para el proyecto y la región de Google Cloud predeterminados.
Tu proyecto tiene un ID del proyecto como identificador único. Cuando creas un proyecto, puedes usar el ID del proyecto generado de forma automática o crear uno propio.
La región de Google Cloud es una ubicación desde la que se administrarán los clústeres. Por ejemplo, us-west1
. Consulta Regiones de administración para obtener más detalles.
Cuando estableces esta configuración predeterminada, no es necesario que la incluyas cuando ejecutes la Google Cloud CLI. También puedes especificar parámetros de configuración o anular la configuración predeterminada si pasas las marcas --project
y --location
a Google Cloud CLI.
Cuando creas recursos de GKE en Azure después de configurar tu proyecto y ubicación predeterminados, estos se crean automáticamente en ese proyecto y esa ubicación.
Para establecer valores predeterminados, sigue estos pasos:
Configura el proyecto predeterminado:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_ID
con el ID del proyecto.Establece la ubicación de administración predeterminada:
gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
Reemplaza
GOOGLE_CLOUD_LOCATION
por la ubicación, comous-west1
.
Selecciona los ID de recursos de Azure para tu clúster
Selecciona un ID de grupo de recursos
Guarda el grupo de recursos de tu clúster en una variable de entorno que ejecute el siguiente comando:
CLUSTER_RESOURCE_GROUP_ID=$(az group show --query id --output tsv \
--resource-group=CLUSTER_RESOURCE_GROUP_NAME)
Reemplaza CLUSTER_RESOURCE_GROUP_NAME
por el nombre del grupo de recursos en el que se aprovisionarán los recursos del clúster, que se configuró en el paso de requisitos previos Crea un grupo de recursos de Azure.
Selecciona un ID de red virtual
Guarda el ID de VNet de tu clúster en una variable de entorno mediante la ejecución del siguiente comando:
VNET_ID=$(az network vnet show --query id --output tsv \
--resource-group=VNET_RESOURCE_GROUP_NAME \
--name=VNET_NAME)
Reemplaza lo siguiente:
VNET_RESOURCE_GROUP_NAME
por el nombre del grupo de recursos que contiene tu red virtual, como se configuró en el paso de requisitos previos Crea una red virtual de Azure.VNET_NAME
por el nombre de la red virtual, como se configuró en el paso de requisitos previos Crea una red virtual de Azure.
Selecciona un ID de subred
Guarda el ID de la subred de tu clúster en una variable de entorno mediante la ejecución del 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)
Reemplaza lo siguiente:
VNET_RESOURCE_GROUP_NAME
por un nombre de grupo de recursos existente que contiene tu red virtual Puede ser el nombre del grupo de recursos que configuraste en Crea una red virtual de Azure.VNET_NAME
por el nombre de la red virtual Puede ser el nombre de la red virtual que configuraste en Crea una red virtual de Azure.SUBNET_NAME
por el nombre de tu subred, por ejemplo,default
Selecciona rangos CIDR para el clúster
Kubernetes requiere que se proporcionen dos rangos de CIDR para el clúster. Estos rangos CIDR se deben elegir para que no se superpongan con los rangos CIDR que usan tus subredes de VPC. Deberían ser lo suficientemente grandes para el tamaño máximo esperado de tu clúster.
Rango de CIDR de dirección IP: Cuando se crea un
Pod
nuevo, se le asigna una dirección IP de este rango. Rango de ejemplo: 192.168.208.0/20Rango de CIDR de dirección del Service: Cuando se crea un Service nuevo, se le asigna una dirección IP de este rango. Rango de ejemplo: 192.168.224.0/20
Crea 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.29.3-gke.600 \
--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"
Reemplaza lo siguiente:
AZURE_REGION
: Es una región de Azure compatible asociada a tu región de Google Cloud.FLEET_PROJECT_ID
por el ID del proyecto host fleet en el que se registrará el clúster.CLIENT_NAME
: es el nombre de AzureClient.POD_CIDR_BLOCK
: Es el rango de direcciones de Pods del clúster.SERVICE_CIDR_BLOCK
: Es el rango de direcciones de servicio del clúster.SSH_PUBLIC_KEY
por el texto de tu clave pública SSH como se creó en el paso de requisitos previos Crea un par de llaves SSH. Si guardaste tu clave pública en una variable de entorno en ese paso, puedes usar${SSH_PUBLIC_KEY}
.
Para obtener más información y los parámetros opcionales, consulta la página de referencia de gcloud container azure clusters create.
Crea 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.29.3-gke.600 \
--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"
Reemplaza SSH_PUBLIC_KEY
por el texto de tu clave pública SSH, como se creó en el paso de requisitos previos Crea un par de claves SSH. Si guardaste tu clave pública en una variable de entorno, puedes usar ${SSH_PUBLIC_KEY}
.
Visualiza el estado del 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 la consola de Google Cloud. Para ver el estado del clúster, elige si usas la CLI de Google Cloud o la consola de Google Cloud y sigue estos pasos:
gcloud
Usa el comando gcloud container azure clusters describe
para obtener detalles sobre el clúster:
gcloud container azure clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Reemplaza lo siguiente:
CLUSTER_NAME
: Es el nombre del clústerGOOGLE_CLOUD_LOCATION
es el nombre de la ubicación de Google Cloud que administra el clúster
Consola de Google Cloud
En la consola de Google Cloud, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.
Los clústeres se enumeran por su nombre y ubicación.
Haz clic en el nombre del clúster. Aparecerá un panel con información sobre el clúster, incluidos su estado y las funciones habilitadas.
Obtén las credenciales de autenticación para el clúster
Después de crear el clúster, debes obtener 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 creaste a través de la puerta de enlace de Connect. Necesitas al menos un grupo de nodos para usar la puerta de enlace de Connect, ya que depende del agente de Connect, que se ejecuta como un Deployment en el clúster.
Implementa una aplicación en el clúster
Ahora que ya creó el clúster, puede implementar una aplicación en contenedores en él. Para esta guía de inicio rápido, puedes implementar nuestra aplicación web de ejemplo, hello-app
.
Usa los objetos de Kubernetes para crear y administrar los recursos de tus clústeres. Usa el objeto Deployment para implementar aplicaciones sin estado como servidores web. Los objetos Service definen las reglas y los balanceadores de cargas para acceder a tu aplicación desde Internet.
Crea el objeto Deployment
Para ejecutar hello-app
en el clúster, debes implementar la aplicación mediante la ejecución del siguiente comando:
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Con este comando de Kubernetes,
kubectl create deployment
,
se crea un Deployment llamado hello-server
. El Pod
del Deployment
ejecuta la imagen del contenedor hello-app
.
En este comando, la siguiente instrucción:
--image
especifica la imagen de contenedor para implementar. En este caso, el comando obtiene la imagen de ejemplo desde un repositorio deus-docker.pkg.dev/google-samples/containers/gke/hello-app
Artifact Registry. El:1.0
indica la versión específica de la imagen que se desea obtener. Si no especificas una versión, se usa la imagen etiquetada conlatest
.
Expone el objeto Deployment
Luego de implementar la aplicación, debes exponerla en Internet para que los usuarios puedan acceder a ella. Para exponer tu aplicación, puedes crear un Service, un recurso de Kubernetes que expone tu aplicación al tráfico externo.
Para exponer tu aplicación, debes ejecutar el
comando siguiente
kubectl expose
:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
Cuando pasas la marca --type LoadBalancer
, se crea un balanceador de cargas de Azure para el contenedor. La marca --port
inicializa el puerto público 80 a Internet y la marca --target-port
direcciona el tráfico al puerto 8080 de la aplicación.
Los balanceadores de cargas se facturan según los precios de los balanceadores de Azure.
Inspecciona y visualiza la aplicación
Para inspeccionar los pods en ejecución, usa
kubectl get pods
:kubectl get pods
Deberías ver un pod
hello-server
en ejecución en el clúster.Inspecciona el Service
hello-server
mediantekubectl get service
:kubectl get service hello-server
Copia la dirección IP externa del Service de la columna
EXTERNAL-IP
que aparece en el resultado del comando.Para ver la aplicación desde tu navegador web, usa la IP externa con el puerto expuesto:
http://EXTERNAL-IP
Acabas de implementar una aplicación web alojada en contenedores de GKE en Azure.
Limpia
Borra el Service y el Deployment de la aplicación:
kubectl delete service hello-server kubectl delete deployment hello-server
Ejecuta
gcloud container azure node-pools delete
para borrar tu grupo de nodos:gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
Si deseas borrar tu clúster, ejecuta
gcloud container azure clusters delete
:gcloud container azure clusters delete azure-cluster-0