Implementa recursos en una flota
En este instructivo, se explica cómo usar un paquete de flota para implementar manifiestos de recursos de Kubernetes en una flota de clústeres. El uso de herramientas de GitOps, como los paquetes de flota del Sincronizador de configuración, puede ayudarte a escalar la administración de configuraciones en grandes cantidades de clústeres.
En este tutorial, completarás las siguientes tareas:
- Conecta un repositorio de Git a Cloud Build
- Crea y registra clústeres en una flota
- Instala el Sincronizador de configuración como configuración predeterminada de la flota
- Implementa recursos de tu repositorio en tu flota de clústeres
Antes de comenzar
- 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.
- Install the Google Cloud CLI.
-
To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.
For more information, see Browser-based sign-in with the gcloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
gcloud services enable anthos.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - Install the Google Cloud CLI.
-
To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.
For more information, see Browser-based sign-in with the gcloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE Enterprise, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:
gcloud services enable anthos.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - Crea una cuenta de GitHub o accede a ella.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cómo conectarse a Git
Tu repositorio de Git contiene los recursos que deseas implementar en una flota. Para implementar esos recursos con un paquete de flota, debes conectar tu repositorio de Git a Cloud Build.
Crea tu repositorio de Git
En este instructivo, se usa GitHub como proveedor de Git. Para crear un repositorio de GitHub nuevo, completa los siguientes pasos:
En tu navegador web, abre GitHub.
Si es necesario, accede a tu cuenta de GitHub. Si tienes acceso a otras organizaciones o equipos en GitHub, asegúrate de crear el repositorio con tu cuenta personal.
En la barra de herramientas, selecciona Agregar add y, luego, haz clic en Nuevo repositorio.
Escribe
fleet-package-tutorial
como el nombre del repositorio.Mantén Público seleccionado como la visibilidad del repositorio.
Selecciona Crear repositorio.
Conecta el repositorio a Cloud Build
El servicio de paquetes de flota del Sincronizador de configuración usa Cloud Build para sincronizar y recuperar los recursos de Kubernetes de tu repositorio de Git.
Para conectar tu repositorio de GitHub a Cloud Build, completa los siguientes pasos:
Abre la página de Cloud Build en la consola de Google Cloud y, luego, selecciona Repositorios.
Asegúrate de estar en la página Repositorios de 2ª gen. Si es necesario, selecciona Ver repositorios (2ª gen.).
Haz clic en Crear conexión de host.
En el menú Región, selecciona us-central1 (Iowa) como tu región.
En el campo Nombre, escribe
fleet-package-quickstart-connection
como el nombre de tu conexión.Haz clic en Conectar.
Si es la primera vez que conectas Cloud Build a tu cuenta de GitHub, completa los siguientes pasos:
- Acepta la solicitud de tu token de OAuth de GitHub. El token se almacena en Secret Manager para usarlo con la conexión de GitHub de Cloud Build. Haga clic en Continuar.
- Instala Cloud Build en tu repositorio de GitHub. Selecciona Instalar en una cuenta nueva.
- En la nueva ventana de GitHub que se abre, selecciona la cuenta de GitHub en la que creaste la bifurcación de Cymbal Bank antes. En un entorno de producción, puedes seleccionar otras cuentas o repositorios a los que delegaste el acceso.
- Sigue las indicaciones de autenticación para confirmar tu identidad en GitHub.
- En la ventana de GitHub para el acceso al repositorio de Cloud Build, elige Solo repositorios seleccionados.
- En el menú desplegable que muestra los repositorios, selecciona tu repositorio
fleet-package-tutorial
. - Haz clic en Guardar.
En la página de Cloud Build de la consola de Google Cloud , haz clic en Vincular repositorio para conectar un nuevo repositorio de Git a Cloud Build.
En el menú Conexión, selecciona
fleet-package-quickstart-connection
.En el menú Repositorios, selecciona el repositorio
fleet-package-tutorial
.Selecciona Vincular.
Configura tu flota
En esta sección, configurarás tu flota creando clústeres, registrándolos en una flota e instalando el Sincronizador de configuración como un paquete de flota.
Crea clústeres
Para demostrar cómo puedes usar paquetes de flotas para implementar recursos en varios clústeres, en este instructivo, se muestra cómo crear dos clústeres.
Para crear los dos clústeres y registrarlos en la flota de tu proyecto, haz lo siguiente:
Crea un clúster de GKE:
gcloud container clusters create-auto cluster1 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Reemplaza lo siguiente:
PROJECT_ID
por el ID del proyectoREGION
por la región en la que deseas crear el clúster, comous-central1
.
Crea un segundo clúster de GKE:
gcloud container clusters create-auto cluster2 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Instala el Sincronizador de configuración como configuración predeterminada de la flota
Para usar el servicio de paquetes de flota, el Sincronizador de configuración debe estar instalado en ambos clústeres. Para instalar el Sincronizador de configuración en varios clústeres a la vez, y en cualquier clúster futuro registrado en la flota, completa los siguientes pasos:
En la consola de Google Cloud , ve a la página Feature Manager.
En el panel Sincronizador de configuración, haz clic en Configurar.
Haz clic en Personalizar la configuración de la flota. En el cuadro de diálogo que aparece, selecciona Actualizaciones automáticas. Este parámetro de configuración garantiza que tus clústeres tengan una versión del Sincronizador de configuración que admita paquetes de flota.
Haz clic en Guardar cambios.
Haz clic en Configurar.
En el cuadro de diálogo de confirmación Configurar la configuración de la flota, haz clic en Confirmar. Si no habilitaste el Sincronizador de configuración anteriormente, haz clic en Confirmar para habilitar la API de
anthosconfigmanagement.googleapis.com
.En la tabla Clústeres de la flota, selecciona ambos clústeres y, luego, haz clic en Sincronizar con la configuración de la flota. De esta manera, se instalará el Sincronizador de configuración en ambos clústeres con la configuración que estableciste.
Los clústeres pueden tardar unos minutos en sincronizarse. Puedes continuar con los siguientes pasos cuando el Sincronizador de configuración aparezca como Instalado.
Configura una cuenta de servicio para Cloud Build
Para crear la cuenta de servicio y otorgar los permisos necesarios a Cloud Build, completa los siguientes pasos:
Cree la cuenta de servicio:
gcloud iam service-accounts create "quickstart-service-account"
Para otorgarle permiso a la cuenta de servicio para recuperar recursos de tu repositorio de Git, agrega una vinculación de política de IAM para el rol de publicador de paquetes de recursos:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'
Si se te solicita, selecciona
None
como la condición de la política.Para otorgarle permiso a la cuenta de servicio para escribir registros, agrega una vinculación de política de IAM para el rol de escritor de registros:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'
Si se te solicita, selecciona
None
como la condición de la política.
Implementa recursos en toda tu flota
En este instructivo, agregarás un manifiesto de Kubernetes con una implementación de nginx a tu repositorio de Git, publicarás una versión y, luego, crearás un paquete de flota para implementar la aplicación de nginx.
Confirma un manifiesto de Kubernetes en tu repositorio
Para agregar tus recursos a GitHub y publicar una versión, completa los siguientes pasos:
En una ventana del navegador web de tu repositorio de GitHub, haz clic en Agregar archivo y, luego, en Crear nuevo archivo.
Asigna el nombre
deployment.yaml
al archivo y pega el siguiente contenido en él:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.2 name: nginx ports: - containerPort: 80
Haz clic en Confirmar cambios...
En el cuadro de diálogo de confirmación, mantén seleccionada la opción Confirmar directamente en la sucursal
main
y, luego, haz clic en Confirmar cambios.En la página principal de tu repositorio, selecciona Versiones en la barra lateral.
En la parte superior de la página, elige Crear un borrador de una nueva versión.
Selecciona el menú Elegir una etiqueta y escribe
v1.0.0
como etiqueta. Haz clic en Crear etiqueta nueva.Haz clic en Publicar versión.
Implementa un recurso en clústeres con un paquete de flota
Para implementar el recurso nuevo, crea un paquete de flota nuevo:
Este paquete de flota se orienta a todos los clústeres de tu flota, ya que no contiene un campo de selector. Esto también significa que cualquier clúster futuro que se agregue a la flota tendrá la implementación de nginx agregada automáticamente.
En Cloud Shell, crea un archivo llamado
fleet-package.yaml
con el siguiente contenido:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/fleet-package-quickstart-connection/repositories/REPOSITORY_NAME tag: v1.0.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com path: target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1
Reemplaza
REPOSITORY_NAME
por el nombre del repositorio de Cloud Build. Por lo general, tiene el formatoUSERNAME-REPOSITORY_NAME
.Crea el paquete de flota para iniciar el lanzamiento:
gcloud alpha container fleet packages create fp-nginx.yaml \ --source=fleet-package.yaml \ --project=PROJECT_ID
Verifica que se haya creado el paquete de flota:
gcloud alpha container fleet packages list
Puedes hacer clic en el vínculo proporcionado para ver los registros de transmisión del trabajo de Cloud Build.
El paquete de flota comienza a implementar los recursos de Kubernetes en tu flota.
En la página de Google Kubernetes Engine de la consola de Google Cloud , ve a la página Cargas de trabajo para ver una vista agregada de las cargas de trabajo que se implementan en todos tus clústeres de GKE:
Abre la página Cargas de trabajo
Las cargas de trabajo pueden tardar unos minutos en estar disponibles. También es posible que notes errores de disponibilidad mientras Autopilot ajusta tus solicitudes de recursos para la nueva implementación.
Observa que, como
maxConcurrent:
se establece en1
en la definición del paquete de flota, la API del paquete de flota espera hasta quenginx-deployment
se implemente por completo en un clúster antes de iniciar la implementación en el segundo clúster. Si cambiaste la estrategia de lanzamiento amaxConcurrent: 2
o una versión posterior, los recursos se implementarían en ambos clústeres de forma simultánea.Después de unos minutos, verás dos cargas de trabajo nuevas para
nginx-deployment
en ambos clústeres. Es posible que debas actualizar la página.
Puedes seguir explorando diferentes estrategias de implementación con paquetes de flotas. Por ejemplo, puedes agregar un clúster nuevo a tu flota para observar que tu carga de trabajo se implementa automáticamente en ese clúster nuevo. Para obtener más información sobre las estrategias y las variaciones de implementación, consulta Implementa paquetes de flota.
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 con los recursos.
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en este instructivo, borra el proyecto que creaste.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Para borrar tu repositorio, sigue estos pasos:
En una ventana del navegador web de la bifurcación de Cymbal Bank en GitHub, en el nombre de tu repositorio, haz clic en Configuración.
En la página Configuración general (que está seleccionada de forma predeterminada), ve a la sección Zona de peligro y haz clic en Borrar este repositorio.
Haz clic en Quiero borrar este repositorio.
Lee las advertencias y haz clic en Leí y comprendo estos efectos.
Para verificar que estás borrando el repositorio correcto, en el campo de texto, escribe el nombre de tu repositorio.
Haz clic en Borrar este repositorio.
¿Qué sigue?
- Obtén más información sobre los paquetes de flota.
- Obtén más información para implementar paquetes de flota.
- Prueba el instructivo Apps escalables, una serie de instructivos que te enseñan a implementar, ejecutar y administrar entornos de aplicaciones modernos en GKE Enterprise. Incluye el instructivo Centraliza la administración de cambios, que explora la escalamiento de los cambios de configuración con paquetes de flota.