En este instructivo, crearás un clúster de Google Kubernetes Engine (GKE) de edición empresarial y usarás el Sincronizador de configuración para sincronizarlo con opciones de configuración del repositorio de muestras de varios repositorios.
Imagina que el equipo de cumplimiento es responsable de garantizar que todos los miembros de la organización cumplan con las reglas internas. Para aplicar estas reglas, el equipo de cumplimiento creó archivos de configuración que agregaron al repositorio de muestras. Cada clúster de tu organización debe sincronizarse con el repositorio y eres responsable de crear y sincronizar 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Make sure that you have the following role or roles on the project: GKE Hub Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Ir a IAM - Selecciona el proyecto.
- Haz clic en Grant access.
-
En el campo Principales nuevas, ingresa tu identificador de usuario. Esta suele ser la dirección de correo electrónico de una Cuenta de Google.
- En la lista Seleccionar un rol, elige un rol.
- Para otorgar funciones adicionales, haz clic en Agregar otro rol y agrega cada rol adicional.
- Haz clic en Guardar.
Crea un clúster
En esta sección, crearás un clúster que puedes usar en este instructivo. Aunque en una situación real, es probable que administres varios clústeres, para simplificar este instructivo, solo debes crear y administrar un clúster.
Para crear un clúster, completa los siguientes pasos:
En la consola de Google Cloud, ve a la página Kubernetes Engine.
Si usas GKE por primera vez, haz clic en Habilitar para habilitar la API de Kubernetes Engine.
Haz clic en add_box Crear.
En la sección Autopilot, selecciona Configurar.
En la sección Conceptos básicos del clúster, ingresa
cs-cluster
en el campo Nombre y deja todos los demás campos con sus valores predeterminados recomendados.Haz clic en Crear. Se te dirigirá a la página Clústeres de Kubernetes. El clúster tardará varios minutos en crearse. Cuando veas una marca de verificación verde en la columna Estado junto al clúster, significa que está listo.
Configura tu clúster
Ahora que creaste un clúster, puedes configurar el Sincronizador de configuración para que se sincronice con los archivos de configuración en el directorio
config-sync-quickstart
del repositorio de muestras.Para configurar el Sincronizador de configuración en la consola de Google Cloud, completa los siguientes pasos:
En la consola de Google Cloud, habilita la API de GKE Hub.
- En la consola de Google Cloud, ve a la página Configuración en la sección Funciones.
Haz clic en add Instalar el Sincronizador de configuración.
Selecciona Actualizaciones automáticas para permitir que el Sincronizador de configuración actualice las versiones automáticamente.
En Opciones de instalación, selecciona Instalar el Sincronizador de configuración en clústeres individuales.
En la tabla Clústeres disponibles, selecciona
cs-cluster
y haz clic en Instalar el Sincronizador de configuración. En la pestaña Configuración, deberías ver el estado decs-cluster
como Habilitado después de unos minutos.En el panel del Sincronizador de configuración, haz clic en Implementar paquete.
En la tabla Selecciona clústeres para la implementación de paquetes, selecciona
cs-cluster
y, luego, haz clic en Continuar.Deja seleccionada la opción Paquete alojado en Git y, luego, haz clic en Continuar.
En el campo Nombre del paquete, ingresa
sample-repository
.En el campo URL del repositorio, ingresa
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
.En el campo Ruta de acceso, ingresa
config-sync-quickstart/multirepo/root
.Deja todos los otros campos con sus valores predeterminados.
Haz clic en Implementar paquete.
Después de unos minutos, deberías ver Sincronizado en la columna Estado de sincronización de
cs-cluster
.
Ahora que el Sincronizador de configuración está sincronizado con un repositorio, concilia de forma continua el estado de los clústeres con los archivos de configuración del repositorio.
Explora la instalación del Sincronizador de configuración
En las siguientes secciones, usarás Cloud Shell para explorar el repositorio desde el que se sincroniza
cs-cluster
y confirmar que se implementen las configuraciones del repositorio.Abre Cloud Shell
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Para usar los comandos de las siguientes secciones, configura el acceso a la línea de comandos de
kubectl
:gcloud container clusters get-credentials cs-cluster \ --zone ZONE \ --project PROJECT_ID
Reemplaza lo siguiente:
ZONE
: Es la zona en la que creaste el clúster.PROJECT_ID
: El ID del proyecto
Esta es la salida:
Fetching cluster endpoint and auth data. kubeconfig entry generated for cs-cluster.
Si se te solicita autorización, haz clic en Autorizar.
Examina tu clúster y repositorio
El directorio
config-sync-quickstart
incluye ClusterRole, CustomResourceDefinition, Rolebinding, Namespace y RepoSync. También incluye parámetros de configuración para el operador de Prometheus para la supervisión. Estos archivos de configuración se aplican en cuanto se configure el Sincronizador de configuración para leer desde el repositorio.Todos los objetos administrados por el Sincronizador de configuración tienen la etiqueta
app.kubernetes.io/managed-by
configurada enconfigmanagement.gke.io
. Puedes usar esta etiqueta para ver los objetos administrados.Para mostrar una lista de los espacios de nombres administrados por el Sincronizador de configuración, ejecuta el siguiente comando:
kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io
El resultado es similar a este:
NAME STATUS AGE gamestore Active 58s monitoring Active 58s
Puedes navegar a la carpeta /config-sync-quickstart/multirepo/ del repositorio en GitHub para explorar los archivos de configuración que generaron la creación de estos espacios de nombres.
Puedes examinar otros objetos, como ClusterRole, Reposyncs, CRD y Rolesbinding, del mismo modo.
Comprueba el estado de la sincronización
Cuando usas el Sincronizador de configuración, puedes usar la herramienta de línea de comandos
nomos
. Esta herramienta te proporciona funcionalidad adicional para el Sincronizador de configuración.En esta sección, verificarás si el Sincronizador de configuración sincroniza correctamente todos los archivos de configuración con el clúster mediante el comando
nomos status
:nomos status
El resultado es similar a este:
*gke_PROJECT_ID_ZONE_cs-cluster -------------------- <root>:root-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main SYNCED @ 2023-02-03 16:58:42 +0000 UTC 1fbab5c90af9029b26451fec92e9900d8db23aee Managed resources: NAMESPACE NAME STATUS SOURCEHASH clusterrole.rbac.authorization.k8s.io/namespace-reader Current 1fbab5c clusterrole.rbac.authorization.k8s.io/prometheus-acm Current 1fbab5c clusterrole.rbac.authorization.k8s.io/prometheus-operator Current 1fbab5c clusterrole.rbac.authorization.k8s.io/webstore-admin Current 1fbab5c clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm Current 1fbab5c clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/anvils.acme.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com Current 1fbab5c customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com Current 1fbab5c namespace/gamestore Current 1fbab5c namespace/monitoring Current 1fbab5c gamestore reposync.configsync.gke.io/repo-sync Current 1fbab5c gamestore rolebinding.rbac.authorization.k8s.io/gamestore-admin Current 1fbab5c gamestore rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin Current 1fbab5c monitoring deployment.apps/prometheus-operator Current 1fbab5c monitoring prometheus.monitoring.coreos.com/acm Current 1fbab5c monitoring service/prometheus-acm Current 1fbab5c monitoring service/prometheus-operator Current 1fbab5c monitoring serviceaccount/prometheus-acm Current 1fbab5c monitoring serviceaccount/prometheus-operator Current 1fbab5c monitoring servicemonitor.monitoring.coreos.com/acm-service Current 1fbab5c -------------------- gamestore:repo-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main SYNCED @ 2023-02-03 16:58:51 +0000 UTC 1fbab5c90af9029b26451fec92e9900d8db23aee Managed resources: NAMESPACE NAME STATUS SOURCEHASH gamestore configmap/store-inventory Current 1fbab5c gamestore webstore.marketplace.com/gameplace Current 1fbab5c
En este resultado, puedes ver que
cs-cluster
se sincroniza correctamente desde dos repositorios. Además, como todos los recursos tienen un estado deCurrent
, el estado del recurso coincide con el estado que deseas.Libera espacio
Ve al menú de GKE en la consola de Google Cloud.
Junto a
cs-cluster
, haz clic en more_vert Acciones y, luego, en delete Borrar.Cuando se te solicite confirmación, haz clic en Borrar de nuevo.
¿Qué sigue?
- Obtén más información sobre cómo validar de los archivos de configuración.
-