Desplegar recursos en una flota
En este tutorial se explica cómo usar un paquete de flota para desplegar manifiestos de recursos de Kubernetes en una flota de clústeres. Las herramientas de GitOps, como los paquetes de flotas de Config Sync, pueden ayudarte a ampliar la gestión de configuraciones en un gran número de clústeres.
En este tutorial, completarás las siguientes tareas:
- Conectar un repositorio de Git a Cloud Build
- Crear y registrar clústeres en una flota
- Instalar Config Sync como predeterminado de la flota
- Desplegar recursos de tu repositorio en tu flota de clústeres
Antes de empezar
- 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.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select 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.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the GKE, Config Delivery (fleet packages), Cloud Build, Developer Connect 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.gcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init
-
Create or select 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.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the GKE, Config Delivery (fleet packages), Cloud Build, Developer Connect 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.gcloud services enable container.googleapis.com
configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com - Crea una cuenta de GitHub o ten acceso a una.
En tu navegador web, abre GitHub.
Si fuera necesario, inicia sesión en 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 Añadir add y, a continuación, haz clic en Nuevo repositorio.
Escribe
fleet-package-tutorial
como nombre del repositorio.Deja seleccionada la opción Público como visibilidad del repositorio.
Selecciona Crear repositorio.
Abre la página Cloud Build en la Google Cloud consola y, a continuación, selecciona Repositorios.
Asegúrate de que estás en la página Repositorios de segunda generación. 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).
En el campo Name (Nombre), escribe
fleet-package-quickstart-connection
como nombre de la conexión.Haz clic en Conectar.
Si es la primera vez que conectas Cloud Build a tu cuenta de GitHub, sigue estos 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. Haz 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 has creado la bifurcación de Cymbal Bank anteriormente. En un entorno de producción, puede seleccionar otras cuentas o repositorios a los que haya delegado 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 Cloud Build de la Google Cloud consola, haz clic en Vincular repositorio para conectar un repositorio de Git a Cloud Build.
En el menú Conexión, selecciona
fleet-package-quickstart-connection
.En el menú Repositorios, selecciona tu
fleet-package-tutorial
repositorio.Selecciona Vincular.
Crea un clúster de GKE:
gcloud container clusters create-auto cluster1 \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
Haz los cambios siguientes:
PROJECT_ID
por el ID del proyecto.REGION
con la región en la que quieras 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
En la Google Cloud consola, ve a la página Gestor de funciones.
En el panel Config Sync (Sincronización de configuración), haga clic en Configure (Configurar).
Haz clic en Personalizar la configuración de la flota. En el cuadro de diálogo que aparece, selecciona la versión de Config Sync que quieras instalar.
Haz clic en Configurar.
En el cuadro de diálogo de confirmación Configurar ajustes de la flota, haz clic en Confirmar. Si no has habilitado Config Sync anteriormente, al hacer clic en Confirmar también se habilitará la API
anthosconfigmanagement.googleapis.com
.En la tabla Clusters in the fleet (Clusters de la flota), selecciona ambos clusters y haz clic en Sync to fleet settings (Sincronizar con la configuración de la flota). De esta forma, se instala Config Sync en ambos clústeres con los ajustes que hayas configurado.
Los clústeres pueden tardar unos minutos en sincronizarse. Puedes continuar con los pasos siguientes cuando Config Sync aparezca como Instalado.
Crea la cuenta de servicio:
gcloud iam service-accounts create "quickstart-service-account"
Concede a la cuenta de servicio permiso para obtener recursos de tu repositorio de Git añadiendo un enlace de política de gestión de identidades y accesos para el rol Editor 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 pide, selecciona
None
como condición de la política.Concede a la cuenta de servicio el permiso para escribir registros añadiendo una vinculación de política de gestión de identidades y accesos para el rol 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 pide, selecciona
None
como condición de la política.En una ventana del navegador web de tu repositorio de GitHub, haz clic en Add file (Añadir archivo) y, a continuación, en Create new file (Crear archivo).
Ponle el nombre
deployment.yaml
al archivo y pega el siguiente contenido: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 rama
main
y, a continuación, haz clic en Confirmar cambios.En la página principal de tu repositorio, selecciona Lanzamientos en la barra lateral.
En la parte superior de la página, selecciona Crear borrador.
Seleccione el menú Elegir una etiqueta y escriba
v1.0.0
como etiqueta. Haga clic en Crear etiqueta.Haz clic en Publicar versión.
Este paquete de flota está orientado a todos los clústeres de tu flota, ya que no contiene ningún campo de selector. Esto también significa que cualquier clúster que se añada a la flota en el futuro tendrá la implementación de nginx añadida 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
Sustituye
REPOSITORY_NAME
por el nombre del repositorio de Cloud Build. Normalmente, tiene el formatoUSERNAME-REPOSITORY_NAME
.Crea el paquete de flota para iniciar la implementación:
gcloud container fleet packages create fp-nginx \ --source=fleet-package.yaml \ --project=PROJECT_ID
Verifica que se haya creado el paquete de flota:
gcloud container fleet packages list
Puede hacer clic en el enlace proporcionado para ver los registros de streaming del trabajo de Cloud Build.
El paquete de flota empieza a desplegar los recursos de Kubernetes en tu flota.
En la página de Google Kubernetes Engine de la Google Cloud consola, ve a la página Cargas de trabajo para ver una vista agregada de las cargas de trabajo que se están desplegando 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 veas errores de disponibilidad mientras Autopilot ajusta tus solicitudes de recursos para la nueva implementación.
Observa que, como
maxConcurrent:
se ha definido como1
en la definición del paquete de flota, la API del paquete de flota espera a quenginx-deployment
se haya desplegado por completo en un clúster antes de iniciar el despliegue en el segundo clúster. Si has cambiado la estrategia de lanzamiento amaxConcurrent: 2
o a un valor superior, los recursos se desplegarán en ambos clústeres simultáneamente.Al cabo de unos minutos, verás dos cargas de trabajo nuevas para
nginx-deployment
en ambos clústeres. Es posible que tengas que actualizar la página.En la ventana del navegador web de tu repositorio de GitHub, debajo del nombre del repositorio, haz clic en Settings (Configuración).
En la página de configuración general (que está seleccionada de forma predeterminada), ve a la sección Zona de peligro y haz clic en Eliminar este repositorio.
Haz clic en Quiero eliminar este repositorio.
Lee las advertencias y haz clic en He leído y entiendo estos efectos.
Para verificar que vas a eliminar el repositorio correcto, escribe el nombre del repositorio en el campo de texto.
Haz clic en Eliminar este repositorio.
- Más información sobre los paquetes de flota
- Consulta cómo desplegar paquetes de flota.
- Prueba el tutorial de la aplicación Aplicaciones escalables, una serie de tutoriales que te enseña a desplegar, ejecutar y gestionar entornos de aplicaciones modernas en GKE. Incluye el tutorial Centralizar la gestión de cambios, en el que se explica cómo ampliar los cambios de configuración con paquetes de flotas.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Conectarse a Git
Tu repositorio de Git contiene los recursos que quieres desplegar en una flota. Para desplegar esos recursos con un paquete de flota, debes conectar tu repositorio de Git a Cloud Build.
Crea tu repositorio de Git
En este tutorial se usa GitHub como proveedor de Git. Para crear un repositorio de GitHub, sigue estos pasos:
Conectar el repositorio a Cloud Build
El servicio de paquetes de flotas de Config Sync usa Cloud Build para sincronizar y obtener los recursos de Kubernetes de tu repositorio de Git.
Para conectar tu repositorio de GitHub a Cloud Build, sigue estos pasos:
Configurar tu flota
En esta sección, configurarás tu flota creando clústeres, registrándolos en una flota e instalando Config Sync como paquete de flota.
Crear clústeres
Para mostrar cómo puedes usar paquetes de flotas para desplegar recursos en varios clústeres, en este tutorial se explica cómo crear dos clústeres.
Para crear los dos clústeres y registrarlos en la flota de tu proyecto, sigue estos pasos:
Instalar Config Sync como predeterminado de la flota
Para usar el servicio de paquetes de la flota, Config Sync debe estar instalado en ambos clústeres. Para instalar Config Sync en varios clústeres a la vez y en cualquier clúster que se registre en la flota en el futuro, sigue estos pasos:
Configurar una cuenta de servicio para Cloud Build
Para crear la cuenta de servicio y conceder los permisos necesarios a Cloud Build, sigue estos pasos:
Desplegar recursos en toda tu flota
En este tutorial, añadirás un manifiesto de Kubernetes con un despliegue de nginx a tu repositorio de Git, publicarás una versión y, a continuación, crearás un paquete de flota para desplegar la aplicación de nginx.
Confirmar un manifiesto de Kubernetes en tu repositorio
Para añadir tus recursos a GitHub y publicar una versión, sigue estos pasos:
Desplegar un recurso en clústeres con un paquete de flota
Para implementar el nuevo recurso, crea un paquete de flota:
Puedes seguir explorando diferentes estrategias de implementación con paquetes de flota. Por ejemplo, puedes añadir un nuevo clúster a tu flota para observar que tu carga de trabajo se implementa automáticamente en ese nuevo clúster. Para obtener más información sobre las estrategias y las variaciones de implementación, consulta Implementar paquetes de la flota.
Limpieza
Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, elimina el Google Cloud proyecto con los recursos.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Para eliminar un repositorio, sigue estos pasos: