En esta página se proporcionan instrucciones de inicio rápido para crear un clúster y un pool de nodos, y, a continuación, desplegar una aplicación de ejemplo con GKE en AWS.
Esta página está dirigida a administradores de TI y operadores que quieran configurar, monitorizar y gestionar la infraestructura de la nube. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud
Iniciar rápidamente un clúster con Terraform
Puedes usar Terraform para crear un clúster y un grupo de nodos. Antes de crear el clúster, las secuencias de comandos de Terraform también preparan tu VPC de AWS.
Puede consultar más información sobre Terraform en un entorno de AWS en la referencia de clúster de Terraform y en la referencia de grupo de nodos de Terraform.
Después de crear una VPC y un clúster con Terraform, ve a Desplegar una aplicación en el clúster para desplegar una aplicación de ejemplo.
Guía de inicio rápido para configurar un clúster sin Terraform
Si prefieres preparar tu VPC de AWS y crear un clúster y un grupo de nodos sin Terraform, sigue estas instrucciones.
Antes de empezar
Antes de crear un clúster, debes completar los requisitos previos. En concreto, debe proporcionar los siguientes recursos:
- Una VPC de AWS en la que se ejecutará el clúster.
- Hasta tres subredes de AWS para las tres réplicas del plano de control. Cada una debe estar en una zona de disponibilidad de AWS diferente.
- El rol de gestión de identidades y accesos de AWS que asume GKE en AWS al gestionar tu clúster. Para ello, se necesita un conjunto específico de permisos de gestión de identidades y accesos.
- Claves simétricas de CMEK de KMS para el cifrado en reposo de los datos y la configuración del clúster (etcd).
- El perfil de instancia de AWS IAM de cada réplica del plano de control. Para ello, se necesita un conjunto específico de permisos de gestión de identidades y accesos.
- Un par de claves SSH de EC2 (opcional) si necesitas acceso SSH a las instancias de EC2 que ejecutan cada réplica del plano de control.
Es tu responsabilidad crear y gestionar estos recursos, que se pueden compartir entre todos tus clústeres de GKE en AWS. GKE on AWS gestiona todos los demás recursos de AWS subyacentes con ámbito de 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 AWS después de configurar tu proyecto y tu ubicación predeterminados, los recursos se crean automáticamente en ese proyecto y 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_aws/location GOOGLE_CLOUD_LOCATION
Sustituye
GOOGLE_CLOUD_LOCATION
por tu ubicación, comous-west1
.
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
Service
, 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 on AWS. Para obtener más información sobre este comando, incluidos sus parámetros opcionales, consulta la página de referencia de gcloud container aws create.
gcloud container aws clusters create aws-cluster-0 \
--cluster-version 1.32.4-gke.200 \
--aws-region AWS_REGION \
--fleet-project FLEET_PROJECT_ID \
--vpc-id VPC_ID \
--subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
--pod-address-cidr-blocks POD_CIDR_BLOCK \
--service-address-cidr-blocks SERVICE_CIDR_BLOCK \
--role-arn API_ROLE_ARN \
--iam-instance-profile CONTROL_PLANE_PROFILE \
--database-encryption-kms-key-arn DB_KMS_KEY_ARN \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
Haz los cambios siguientes:
AWS_REGION
: la región de AWS en la que se creará el clúster.FLEET_PROJECT_ID
: el proyecto host de Fleet en el que se registrará el clúster.VPC_ID
: el ID de la VPC de AWS de este clúster que has configurado en el paso de requisito previo Crear tu VPCCONTROL_PLANE_SUBNET_1
,CONTROL_PLANE_SUBNET_2
yCONTROL_PLANE_SUBNET_3
: los IDs de subred de las tres instancias del plano de control de tu clúster que creaste en el paso de requisito previo Crear subredes privadasPOD_CIDR_BLOCK
: el intervalo de direcciones CIDR de los pods de tu clústerSERVICE_CIDR_BLOCK
: el intervalo de direcciones CIDR de los servicios de tu clústerAPI_ROLE_ARN
: el ARN del rol de IAM del servicio GKE Multi-cloud que has creado en el paso de requisito previo Crear rol de API de GKE Multi-cloudCONTROL_PLANE_PROFILE
: el nombre de perfil de la instancia de gestión de identidades y accesos asociada al clúster que has elegido en el paso de requisito previo Crear rol de plano de controlDB_KMS_KEY_ARN
: el nombre de recurso de Amazon (ARN) de una de las claves de KMS de AWS que has creado en el paso de requisito previo Crear una clave de KMS de AWSCONFIG_KMS_KEY_ARN
: el nombre de recurso de Amazon (ARN) de la otra clave de KMS de AWS que has creado en el paso de requisito previo Crear una clave de KMS de AWS
Si está presente, el parámetro --tags
aplica la etiqueta de AWS proporcionada a todos los recursos de AWS subyacentes gestionados por GKE en AWS. En este ejemplo, se etiquetan los nodos del plano de control con el nombre del clúster al que pertenecen.
Crear un grupo de nodos
Usa el siguiente comando para crear un grupo de nodos:
gcloud container aws node-pools create pool-0 \
--cluster aws-cluster-0 \
--node-version 1.32.4-gke.200 \
--min-nodes 1 \
--max-nodes 5 \
--max-pods-per-node 110 \
--root-volume-size 50 \
--subnet-id NODEPOOL_SUBNET_ID \
--iam-instance-profile NODEPOOL_PROFILE \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--ssh-ec2-key-pair EC2_KEY_PAIR \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
Haz los cambios siguientes:
NODEPOOL_SUBNET_ID
: el ID de una de las subredes privadas que has creado en el paso de requisito previo Crear subredes privadasNODEPOOL_PROFILE
: el nombre del perfil de instancia de gestión de identidades y accesos de las instancias de EC2 del grupo de nodos que has elegido en el paso de requisito previo Crear un rol de gestión de identidades y accesos de grupo de nodosCONFIG_KMS_KEY_ARN
: el nombre de recurso de Amazon (ARN) de la clave de KMS de AWS para cifrar los datos de usuario.EC2_KEY_PAIR
(opcional): el nombre del par de claves de EC2 creado para el acceso SSH (opcional) que has creado en el paso de requisito previo Crear par de claves SSH
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 aws clusters describe
para obtener detalles sobre tu clúster:
gcloud container aws 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 aws clusters get-credentials aws-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 AWS 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 AWS.
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 AWS.
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 aws node-pools delete
:gcloud container aws node-pools delete pool-0 --cluster aws-cluster-0
Para eliminar el clúster, ejecuta el siguiente comando:
gcloud container aws clusters delete
gcloud container aws clusters delete aws-cluster-0