Implementa una app en un clúster de GKE
En esta guía de inicio rápido, implementarás una aplicación en contenedores de servidor web de muestra en un clúster de Google Kubernetes Engine (GKE). Aprenderás a crear un clúster y a implementar la aplicación en el clúster para que los usuarios puedan acceder a él.
Esta página está dirigida a operadores y desarrolladores que aprovisionan y configuran recursos de la nube, y que implementan apps y servicios. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud, consulta Roles de usuario y tareas comunes de GKE.
Antes de leer esta página, asegúrate de estar familiarizado con Kubernetes.
Antes de comenzar
Sigue los pasos que se indican a continuación para habilitar la API de Kubernetes Engine:- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Google Kubernetes Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry and Google Kubernetes Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. PROJECT_ID
: Your project ID.USER_IDENTIFIER
: The identifier for your user account. For example,myemail@example.com
.ROLE
: The IAM role that you grant to your user account.
Roles requeridos
Grant roles to your user account. Run the following command once for each of the following
IAM roles:
roles/container.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
Inicia Cloud Shell
En este instructivo, usarás Cloud Shell, que es un entorno de shell para administrar recursos alojados enGoogle Cloud.
Cloud Shell ya viene instalado en Google Cloud CLI y la herramienta de línea de comandos de kubectl. Gcloud CLI proporciona la interfaz de línea de comandos principal para Google Cloud, y kubectl
proporciona la interfaz de línea de comandos principal para ejecutar comandos en clústeres de Kubernetes.
Iniciar Cloud Shell:
Ve a la consola de Google Cloud .
Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell:
Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola.
Usa esta shell para ejecutar los comandos de gcloud
y kubectl
.
Antes de ejecutar comandos, configura tu proyecto predeterminado en Google Cloud CLI con el siguiente comando:
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID
por el ID del proyecto.
Cree un clúster de GKE
Un clúster consta de al menos una máquina de plano de control del clúster y varias máquinas trabajadoras llamadas nodos. Los nodos son instancias de máquinas virtuales (VM) de Compute Engine que ejecutan los procesos de Kubernetes necesarios para que sean parte del clúster. Las aplicaciones se implementan en los clústeres y, luego, se ejecutan en los nodos.
En esta sección, se muestra cómo crear un clúster en el modo Autopilot, que es el modo de clúster recomendado para la mayoría de los casos de uso de producción. Como alternativa, puedes usar un clúster en el modo Standard de GKE para seguir estos pasos.
Crea un clúster de Autopilot con el nombrehello-cluster
:
gcloud container clusters create-auto hello-cluster \
--location=us-central1
La creación del clúster podría demorar varios minutos.
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 clusters get-credentials hello-cluster \
--location us-central1
Este comando configura kubectl
para usar el clúster que creaste.
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
.
GKE utiliza los objetos de Kubernetes para crear y administrar los recursos de tus clústeres. Kubernetes proporciona el objeto Deployment para implementar aplicaciones sin estado como servidores web. Los objetos Service definen las reglas y el balanceo 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:
--image
especifica la imagen de contenedor para implementar. En este caso, el comando obtiene la imagen de ejemplo desde un repositorio de Artifact Registry,us-docker.pkg.dev/google-samples/containers/gke/hello-app
.: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 con lalatest
etiqueta predeterminada.
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 Compute Engine 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 carga de Compute Engine.
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 servicio
hello-server
mediantekubectl get service
:kubectl get service hello-server
Copia la dirección IP externa del Servicio de la columna
EXTERNAL-IP
que aparece en el resultado del comando.Para ver la aplicación desde tu navegador web, usa la dirección IP externa con el puerto expuesto:
http://EXTERNAL_IP
Acabas de implementar una aplicación web en contenedores en GKE.
Para hacer un seguimiento de tus recursos de GKE y organizarlos de una manera centrada en la aplicación, puedes agregar tus recursos como servicios y cargas de trabajo a las aplicaciones de App Hub.
Para obtener más información sobre los recursos que admite App Hub, consulta Recursos admitidos.
Para obtener información sobre cómo configurar App Hub en tu proyecto, consulta Configura App Hub.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en esta página, borra el proyecto de Google Cloud que tiene los recursos.
Borra el Servicio de la aplicación mediante la ejecución de
kubectl delete
:kubectl delete service hello-server
Este comando borra el balanceador de cargas de Compute Engine que creaste al momento de exponer la implementación.
Si deseas borrar tu clúster, ejecuta
gcloud container clusters delete
:gcloud container clusters delete hello-cluster \ --location us-central1
Revisión del código hello-app
(opcional)
hello-app
es una aplicación de servidor web que consta de dos archivos: main.go
y un Dockerfile
.
hello-app
se empaqueta como imagen de contenedor de Docker. Las imágenes de contenedor se almacenan en cualquier registro de imágenes de Docker, como Artifact Registry. Alojamos hello-app
en un repositorio de Artifact Registry en us-docker.pkg.dev/google-samples/containers/gke/hello-app
.
main.go
main.go
es una implementación de servidor web escrita en el lenguaje de programación Go.
El servidor responde a cualquier solicitud HTTP con el mensaje “Hello, world!”.
Dockerfile
Dockerfile
describe la imagen que quieres que Docker compile, incluidos todos sus recursos y dependencias, y especifica qué puerto de red debe exponer la app. Para obtener más información sobre cómo funciona este archivo, consulta la referencia de Dockerfile en la documentación de Docker.
¿Qué sigue?
- Obtén más información para crear clústeres.
- Obtén más información sobre Kubernetes.
- Obtén información sobre cómo empaquetar, alojar y, luego, implementar una aplicación sencilla de servidor web.
- Implementa una aplicación de Kubernetes con Cloud Code para VS Code o Cloud Code para IntelliJ.
- Obtén más información sobre el Cambio de plataforma de aplicaciones de Linux a contenedores.
Pruébalo tú mismo
Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de GKE en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
Probar GKE gratis