Implementar una aplicación en GKE en Azure
Esta página describe cómo crear un clúster y un grupo de nodos, y luego implementar una aplicación de muestra mediante GKE en Azure.
Compatibilidad con Terraform
Si está familiarizado con Terraform, puede 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, debe cumplir con los prerrequisitos . En particular, debe proporcionar los siguientes recursos:
- Una red virtual de Azure donde 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 su entorno de Azure mediante una entidad de servicio.
- Un recurso de AzureClient que GKE en Azure usa para autenticarse en los servicios de Azure y administrar recursos en su cuenta de Azure.
- Un par de claves SSH para acceder a las máquinas virtuales de Azure en el clúster.
Es su responsabilidad crear y administrar estos recursos, que pueden compartirse entre todos sus clústeres. Todos los demás recursos subyacentes de Azure para su clúster son administrados por GKE en Azure.
Establecer la configuración predeterminada para la CLI de gcloud
Utilice la CLI de gcloud para configurar los ajustes predeterminados para su proyecto predeterminado y Google Cloud región.
Tu proyecto tiene un ID de proyecto como identificador único. Al crear un proyecto, puedes usar el ID generado automáticamente o crear uno propio.
Su Google Cloud La región es la ubicación desde la que se administrarán sus clústeres. Por ejemplo, us-west1
. Consulte Regiones de administración para obtener más información.
Al configurar estos ajustes predeterminados, no es necesario incluirlos al ejecutar la CLI de Google Cloud. También puedes especificar o anular los ajustes predeterminados pasando los indicadores --project
y --location
a la CLI de Google Cloud.
Cuando crea recursos de GKE en Azure después de configurar su proyecto y ubicación predeterminados, los recursos se crean automáticamente en ese proyecto y ubicación.
Para establecer valores predeterminados, siga estos pasos:
Establecer el proyecto predeterminado:
gcloud config set project PROJECT_ID
Reemplace
PROJECT_ID
con el ID de su proyecto.Establecer la ubicación de administración predeterminada:
gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
Reemplace
GOOGLE_CLOUD_LOCATION
con su ubicación, comous-west1
.
Seleccione los identificadores de recursos de Azure para su clúster
Seleccione un ID de grupo de recursos
Guarde el grupo de recursos de su 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)
Reemplace CLUSTER_RESOURCE_GROUP_NAME
con el nombre del grupo de recursos para aprovisionar los recursos de su clúster, que configuró en el paso de requisitos previos Crear un grupo de recursos de Azure .
Seleccione un ID de red virtual
Guarde el ID de VNet de su 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)
Reemplace lo siguiente:
-
VNET_RESOURCE_GROUP_NAME
con el nombre del grupo de recursos que contiene su red virtual, tal como se configuró en el paso de requisitos previos Crear una red virtual de Azure . -
VNET_NAME
con el nombre de su red virtual, tal como se configuró en el paso de requisitos previos Crear una red virtual de Azure .
Seleccione un ID de subred
Guarde el ID de subred de su 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)
Reemplazar:
-
VNET_RESOURCE_GROUP_NAME
con un nombre de grupo de recursos existente que contenga su red virtual. Este puede ser el nombre del grupo de recursos que configuró en "Crear una red virtual de Azure" . -
VNET_NAME
con el nombre de su red virtual. Puede ser el nombre de la red virtual que configuró en "Crear una red virtual de Azure" . -
SUBNET_NAME
con el nombre de su subred, por ejemplo,default
.
Seleccione rangos CIDR para su clúster
Kubernetes requiere que se proporcionen dos rangos de CIDR para el clúster. Estos rangos deben seleccionarse de forma que no se superpongan con los rangos de CIDR utilizados por las subredes de VPC. Deben ser lo suficientemente grandes como para el tamaño máximo esperado del clúster.
Rango CIDR de direcciones de pod : Al crear un nuevo
Pod
, se le asigna una dirección IP de este rango. Ejemplo: 192.168.208.0/20Rango CIDR de direcciones de servicio : Al crear un nuevo servicio, se le asigna una dirección IP de este rango. Ejemplo: 192.168.224.0/20
Crear un clúster
Utilice el siguiente comando para crear un clúster en GKE en Azure.
gcloud container azure clusters create azure-cluster-0 \
--cluster-version 1.31.4-gke.500 \
--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"
Reemplazar:
-
AZURE_REGION
: una región de Azure compatible asociada a su Google Cloud región -
FLEET_PROJECT_ID
con el ID del proyecto del host de la flota donde se registrará el clúster. -
CLIENT_NAME
: su nombre de cliente de Azure . -
POD_CIDR_BLOCK
: rango de direcciones de pod de su clúster -
SERVICE_CIDR_BLOCK
: rango de direcciones de servicio de su clúster -
SSH_PUBLIC_KEY
con el texto de su clave pública SSH, tal como se creó en el paso previo " Crear un par de claves SSH" . Si guardó su clave pública en una variable de entorno en ese paso, puede usar${SSH_PUBLIC_KEY}
.
Para obtener más información y parámetros opcionales, consulte la página de referencia de creación de clústeres de Azure de gcloud container .
Crear un grupo de nodos
Cree un grupo de nodos con la CLI de Google Cloud:
gcloud container azure node-pools create pool-0 \
--cluster azure-cluster-0 \
--node-version 1.31.4-gke.500 \
--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"
Reemplace SSH_PUBLIC_KEY
con el texto de su clave pública SSH, tal como se creó en el paso previo " Crear un par de claves SSH" . Si guardó su clave pública en una variable de entorno, puede usar ${SSH_PUBLIC_KEY}
.
Ver el estado de su clúster
Después de crear un clúster y un grupo de nodos, puede ver el estado de un clúster con la CLI de Google Cloud o la Google Cloud consola. Para ver el estado del clúster, elija si está utilizando la CLI de Google Cloud o Google Cloud consola y siga estos pasos:
nube g
Utilice el comando gcloud container azure clusters describe
para obtener detalles sobre su clúster:
gcloud container azure clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Reemplace lo siguiente:
-
CLUSTER_NAME
: el nombre de su clúster -
GOOGLE_CLOUD_LOCATION
: el nombre de la Google Cloudubicación que administra el clúster
Google Cloud consola
En el Google Cloud consola, vaya a la página de descripción general de clústeres de Google Kubernetes Engine .
Sus clústeres se enumeran por nombre y ubicación.
Haga clic en el nombre del clúster. Aparecerá un panel con información sobre el clúster, incluyendo su estado y las funciones habilitadas.
Obtener credenciales de autenticación para el clúster
Después de crear su clúster, necesita obtener credenciales de autenticación para interactuar con el clúster:
gcloud container azure clusters get-credentials azure-cluster-0
Este comando configura kubectl
para acceder al clúster creado mediante Connect Gateway . Necesita al menos un grupo de nodos para usar Connect Gateway, ya que depende del agente de Connect, que se ejecuta como una implementación en el clúster.
Implementar una aplicación en el clúster
Ahora que ha creado un clúster, puede implementar una aplicación contenedorizada en él. Para esta guía de inicio rápido, puede implementar nuestra aplicación web de ejemplo, hello-app
.
Utiliza objetos de Kubernetes para crear y administrar los recursos de tu clúster. Utiliza el objeto de implementación para implementar aplicaciones sin estado, como servidores web. Los objetos de servicio definen reglas y balanceadores de carga para acceder a tu aplicación desde internet.
Crear la implementación
Para ejecutar hello-app
en su clúster, debe implementar 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 una implementación llamada hello-server
. El pod de la implementación ejecuta la imagen del contenedor hello-app
.
En este comando:
-
--image
especifica una imagen de contenedor para implementar. En este caso, el comando extrae la imagen de ejemplo de un repositorio del Registro de Artefactos,us-docker.pkg.dev/google-samples/containers/gke/hello-app
.:1.0
indica la versión específica de la imagen que se extraerá. Si no se especifica una versión, se utiliza la imagen etiquetada conlatest
.
Exponer el despliegue
Tras implementar la aplicación, debe exponerla a internet para que los usuarios puedan acceder a ella. Puede hacerlo creando un Servicio, un recurso de Kubernetes que la expone al tráfico externo.
Para exponer su aplicación, ejecute el siguiente comando kubectl expose
:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
Al pasar la marca --type LoadBalancer
se crea un balanceador de carga de Azure para el contenedor. La marca --port
inicializa el puerto público 80 a Internet y la marca --target-port
enruta el tráfico al puerto 8080 de la aplicación.
Los equilibradores de carga se facturan según los precios de equilibradores de carga de Azure.
Inspeccionar y ver la aplicación
Inspeccione los pods en ejecución usando
kubectl get pods
:kubectl get pods
Deberías ver un pod
hello-server
ejecutándose en tu clúster.Inspeccione el servicio
hello-server
usandokubectl get service
:kubectl get service hello-server
Desde la salida de este comando, copie la dirección IP externa del Servicio de la columna
EXTERNAL-IP
.Vea la aplicación desde su navegador web utilizando la IP externa con el puerto expuesto:
http://EXTERNAL-IP
Acaba de implementar una aplicación web en contenedores en GKE en Azure.
Limpiar
Eliminar el servicio y la implementación de la aplicación:
kubectl delete service hello-server kubectl delete deployment hello-server
Elimine su grupo de nodos ejecutando
gcloud container azure node-pools delete
:gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
Elimine su clúster ejecutando
gcloud container azure clusters delete
:gcloud container azure clusters delete azure-cluster-0