Guía de inicio rápido

En esta página, se describe cómo crear un clúster y un grupo de nodos, y cómo implementar una aplicación de muestra con clústeres de Anthos alojados en Azure.

Compatibilidad con Terraform

Si estás familiarizado con 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 función de Azure que otorgarán a los clústeres de Anthos en Azure acceso a tu entorno de Azure mediante una principal del servicio
  • Un recurso de AzureClient que los clústeres de Anthos usan en Azure 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. Todos los demás recursos subyacentes de Azure para tu clúster se administran mediante clústeres de Anthos en Azure.

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 clústeres de Anthos en recursos de Azure después de configurar tu proyecto y ubicación predeterminados, estos se crean de forma automática en ese proyecto y esa ubicación.

Para establecer valores predeterminados, sigue estos pasos:

  1. Configura el proyecto predeterminado:

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID con el ID del proyecto.

  2. 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, como us-west1.

Selecciona los ID de recursos de Azure para tu clúster

Selecciona un ID de grupo de recursos

Ejecuta el siguiente comando para determinar el CLUSTER_RESOURCE_GROUP_ID de los recursos del clúster:

az group show --query id --output tsv \
    --resource-group=CLUSTER_RESOURCE_GROUP_NAME

Reemplaza lo siguiente:

  • CLUSTER_RESOURCE_GROUP_NAME por un nombre de grupo de recursos existente para aprovisionar los recursos del clúster

Guarda este valor. Lo necesitarás más tarde.

Selecciona un ID de red virtual

Ejecuta el siguiente comando para determinar el VNET_ID de tu clúster:

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 un nombre de grupo de recursos existente que contiene tu red virtual
  • VNET_NAME por el nombre de la red virtual

Guarda este valor. Lo necesitarás más tarde.

Selecciona un ID de subred

Ejecuta el siguiente comando para determinar el SUBNET_ID de tu clúster:

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
  • VNET_NAME por el nombre de la red virtual
  • SUBNET_NAME por el nombre de tu subred, por ejemplo, default

Guarda este valor. Lo necesitarás más tarde.

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/20

  • Rango 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 los clústeres de Anthos alojados en Azure.

gcloud container azure clusters create azure-cluster-0 \
    --cluster-version 1.21.6-gke.1500 \
    --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.
  • CLUSTER_RESOURCE_GROUP_ID por el ID del grupo de recursos de Azure para los recursos del clúster
  • VNET_ID por el ID de la red virtual de Azure del clúster
  • SUBNET_ID por el ID de la subred de Azure del clúster
  • POD_CIDR_BLOCK: Es el rango de direcciones de Pods del clúster.
  • SERVICE_CIDR_BLOCK: Es el rango de direcciones de Service del clúster.
  • SSH_PUBLIC_KEY por el texto de tu clave pública SSH Si guardaste tu clave pública en una variable de entorno, usa ${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.21.6-gke.1500 \
    --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 lo siguiente:

  • SSH_PUBLIC_KEY por el texto de tu clave pública SSH
  • SUBNET_ID por el ID de la subred de Azure

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

Con este comando, tendrá que hacer lo siguiente:

  • --image especifica la imagen de contenedor para implementar. En este caso, el comando obtiene la imagen de ejemplo desde un repositorio de us-docker.pkg.dev/google-samples/containers/gke/hello-appArtifact 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 con latest.

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

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

  2. Inspecciona el Service hello-server mediante kubectl 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.

  3. 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 en contenedores en los clústeres de Anthos alojados en Azure.

Limpia

  1. Borra el Service y el Deployment de la aplicación:

    kubectl delete service hello-server
    kubectl delete deployment hello-server
    
  2. 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
    
  3. Si deseas borrar tu clúster, ejecuta gcloud container azure clusters delete:

    gcloud container azure clusters delete azure-cluster-0
    

¿Qué sigue?