Guía de inicio rápido

En esta guía de inicio rápido, se muestra cómo implementar una aplicación en contenedores con Google Kubernetes Engine.

Puedes seguir los pasos que se enumeran en esta página o probar esta guía de inicio rápido como un entrenamiento del lab de Google Cloud.

Probar con un lab

Antes de comenzar

Sigue los pasos que se indican a continuación para habilitar la API de Kubernetes Engine:
  1. Visita la página de Kubernetes Engine en Google Cloud Platform Console.
  2. Crea o selecciona un proyecto.
  3. Espera a que la API y los servicios relacionados se habiliten. Esto puede tardar varios minutos.
  4. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

Cómo elegir un shell

Para completar esta guía de inicio rápido, puedes utilizar Google Cloud Shell o tu shell local.

Google Cloud Shell es un entorno de administración de recursos alojado en Google Cloud Platform (GCP). Cloud Shell viene preinstalado con las herramientas de línea de comandos de gcloud y kubectl. gcloud proporciona la interfaz de línea de comandos principal de GCP, y kubectl brinda la interfaz de línea de comandos para ejecutar los comandos en los clústeres de Kubernetes.

Si prefieres utilizar tu shell local, debes instalar las herramientas de línea de comandos de gcloud y kubectl en tu entorno.

Cloud Shell

Para iniciar Cloud Shell, realiza los siguientes pasos:

  1. Ve a Google Cloud Platform Console.

    Google Cloud Platform Console

  2. En la esquina superior derecha de la consola, haz clic en el botón Activar Google Cloud Shell:

Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior de la consola. Utilizarás este shell para ejecutar los comandos gcloud y kubectl.

Shell local

Para instalar gcloud y kubectl, realiza los siguientes pasos:

  1. Instala el SDK de Google Cloud, en el que está incluida la herramienta de línea de comandos de gcloud.
  2. Luego de instalar el SDK de Cloud, ejecuta el siguiente comando para instalar la herramienta de línea de comandos kubectl:

    gcloud components install kubectl

Cómo establecer la configuración predeterminada para gcloud

Antes de comenzar, debes utilizar gcloud para establecer la configuración predeterminada de dos elementos: el proyecto predeterminado y la zona de procesamiento.

Tu proyecto cuenta con un ID del proyecto, que es su identificador único. Cuando creas un proyecto por primera vez, puedes utilizar el ID del proyecto generado de forma automática o crear el tuyo propio.

Una zona de procesamiento es una ubicación regional aproximada en la que residen tus clústeres y sus recursos. Por ejemplo, us-west1-a es una zona en la región us-west.

Establecer esta configuración predeterminada hace que sea más sencillo ejecutar los comandos de gcloud, ya que gcloud requiere que especifiques el proyecto y la zona de procesamiento en la que quieres trabajar. Para especificar esta configuración o anular la configuración predeterminada, también puedes utilizar marcadores de operación como --project, --zone, y --cluster, en los comandos de gcloud.

Cuando creas tus recursos de GKE luego de configurar tu proyecto y zona de procesamiento predeterminados, estos se crean automáticamente en ese proyecto y esa zona.

Cómo configurar un proyecto predeterminado

Para configurar un proyecto predeterminado, ejecuta los siguientes comandos desde Cloud Shell:

gcloud config set project [PROJECT_ID]

Reemplaza [PROJECT_ID] por tu ID del proyecto.

Cómo configurar una zona de procesamiento predeterminada

Para configurar una zona de procesamiento predeterminada, ejecuta el siguiente comando:

gcloud config set compute/zone [COMPUTE_ZONE]

en el que [COMPUTE_ZONE] es la zona geográfica de procesamiento deseada, como us-west1-a.

Cómo crear un clúster de GKE

Un clúster consta de, al menos, una máquina de clúster principal, 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.

Para crear un clúster, ejecuta el siguiente comando:

gcloud container clusters create [CLUSTER_NAME]

en el que [CLUSTER_NAME] es el nombre que eliges para el clúster.

Obtén las credenciales de autenticación para el clúster

Después de crear tu clúster, debes obtener las credenciales de autenticación para interactuar con él.

Para autenticarte y poder interactuar con el clúster, ejecuta el siguiente comando:

gcloud container clusters get-credentials [CLUSTER_NAME]

Este comando configura kubectl para que utilice el clúster que creaste.

Cómo implementar una aplicación en el clúster

Una vez creado el clúster, puedes implementar una aplicación en contenedores en él. Para esta guía de inicio rápido, puedes implementar nuestra aplicación web de muestra, hello-app.

GKE utiliza los objetos de Kubernetes para crear y administrar los recursos de tus clústeres. Kubernetes brinda el objeto Implementación para implementar aplicaciones sin estado como servidores web. Los objetos Servicio definen las reglas y el balanceo de cargas para acceder a tu aplicación desde Internet.

Cómo crear la Implementación

Para ejecutar hello-app en tu clúster, ejecuta el siguiente comando:

kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080

Este comando de Kubernetes, kubectl run, crea una Implementación nueva llamada hello-server. El pod de la Implementación ejecuta la imagen de hello-app en su contenedor.

En este comando:

  • --image especifica la imagen de contenedor que se desea implementar. En este caso, el comando obtiene la imagen de muestra desde el depósito de Google Container Registry., gcr.io/google-samples/hello-app. :1.0 indica la versión específica de la imagen que se desea obtener. Si no se especifica una versión, se utilizará la más reciente.
  • --port especifica el puerto que se expone a través del contenedor.

Cómo exponer la Implementación

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

El marcador --type LoadBalancer crea un balanceador de cargas de Compute Engine para tu contenedor. El marcador --port inicializa el puerto público 80 en Internet, y --target-port envía 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.

Cómo inspeccionar y visualizar la aplicación

  1. Ejecuta kubectl get para inspeccionar el servicio hello-server:

    kubectl get service hello-server

    Copia la dirección IP externa del servicio, que aparece en la columna EXTERNAL-IP del resultado del comando.

  2. Para ver la aplicación desde tu navegador web, utiliza la dirección IP externa con el puerto expuesto:

    http://[EXTERNAL_IP]/

¡Acabas de implementar una aplicación web en contenedores en GKE!

Limpieza

Para evitar que se apliquen cargos a tu cuenta de GCP por los recursos que se utilizan en esta guía de inicio rápido, realiza los siguientes pasos:

  1. Ejecuta kubectl delete para borrar el servicio de la aplicación:

    kubectl delete service hello-server

    Esto borrará el balanceador de cargas de Compute Engine que creaste en el momento de exponer la implementación.

  2. Ejecuta gcloud container clusters delete para borrar tu clúster:

    gcloud container clusters delete [CLUSTER_NAME]

Opcional: revisión del código de hello-app

hello-app es una aplicación de servidor web simple 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 Google Container Registry. hello-app se aloja en un depósito de Container Registry llamado gcr.io/google-samples/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!".

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
)

func main() {
	// use PORT environment variable, or default to 8080
	port := "8080"
	if fromEnv := os.Getenv("PORT"); fromEnv != "" {
		port = fromEnv
	}

	// register hello function to handle all requests
	server := http.NewServeMux()
	server.HandleFunc("/", hello)

	// start the web server on port and accept requests
	log.Printf("Server listening on port %s", port)
	err := http.ListenAndServe(":"+port, server)
	log.Fatal(err)
}

// hello responds to the request with a plain-text "Hello, world" message.
func hello(w http.ResponseWriter, r *http.Request) {
	log.Printf("Serving request: %s", r.URL.Path)
	host, _ := os.Hostname()
	fmt.Fprintf(w, "Hello, world!\n")
	fmt.Fprintf(w, "Version: 1.0.0\n")
	fmt.Fprintf(w, "Hostname: %s\n", host)
}

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 el funcionamiento de este archivo, consulta la referencia de Dockerfile en la documentación de Docker.

FROM golang:1.8-alpine
ADD . /go/src/hello-app
RUN go install hello-app

FROM alpine:latest
COPY --from=0 /go/bin/hello-app .
ENV PORT 8080
CMD ["./hello-app"]

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Kubernetes Engine