Configura el controlador de configuración
En esta página, se muestra cómo configurar el controlador de configuración. El controlador de configuración es un servicio alojado para aprovisionar y organizar recursos de Anthos y Google Cloud. Ofrece un extremo de API que puede aprovisionar, activar y organizar recursos de Google Cloud como parte de Anthos Config Management. Para obtener más información sobre el controlador de configuración, consulta Descripción general del controlador de configuración.
Antes de comenzar
Antes de configurar el controlador de configuración, debes completar los siguientes pasos:
Instala e inicializa Google Cloud CLI, que proporciona los comandos
gcloud
,kubectl
ynomos
que se usan en estas instrucciones. Si usas Cloud Shell, Google Cloud CLI viene preinstalada.Google Cloud CLI no instala
kubectl
de forma predeterminada. Para instalarkubectl
, ejecuta el siguiente comando:gcloud components install kubectl
Establece el proyecto de Google Cloud en el que se alojará Config Controller:
export PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID}
Reemplaza
PROJECT_ID
por el proyecto de Google Cloud en el que se alojará Config Controller.Si no tienes una red predeterminada en tu proyecto, crea una con la ejecución del siguiente comando:
gcloud compute networks create default --subnet-mode=auto
Como alternativa, puedes seleccionar una red diferente con la marca
--network
en el comandogcloud anthos config controller create
cuando configuras el controlador de configuración.
Configura el controlador de configuración
Crea un controlador de configuración con los siguientes comandos de la CLI de gcloud:
Habilita los servicios en tu proyecto para usar los comandos de la CLI de gcloud posteriores:
gcloud services enable krmapihosting.googleapis.com \ container.googleapis.com \ cloudresourcemanager.googleapis.com
Crea el controlador de configuración. Esta operación puede tomar más de 15 minutos.
gcloud anthos config controller create CONFIG_CONTROLLER_NAME \ --location=LOCATION
Reemplaza lo siguiente:
CONFIG_CONTROLLER_NAME
: Es el nombre que deseas darle a tu controlador.LOCATION
: agregaus-central1
,us-east1
,northamerica-northeast1
,europe-north1
,australia-southeast1
oasia-northeast1
. No se admiten otras regiones.
Puedes configurar parámetros opcionales como
--man-block
, que te permiten especificar un rango CIDR para permitir que las direcciones IP de esos rangos accedan al plano de control de Kubernetes a fin de obtener seguridad adicional. Para ver la lista completa de opciones, consulta la documentación degcloud anthos config controller create
.Una vez que se crea la instancia, aparece en la lista de instancias. Para ver la lista de instancias, ejecuta el siguiente comando:
gcloud anthos config controller list --location=LOCATION
Para aplicar manifiestos, autentícate con la instancia:
gcloud anthos config controller get-credentials CONFIG_CONTROLLER_NAME \ --location LOCATION
Otorga permiso al controlador de configuración para que administre los recursos de Google Cloud en el proyecto:
export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \ -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)" gcloud projects add-iam-policy-binding "${PROJECT_ID}" \ --member "serviceAccount:${SA_EMAIL}" \ --role "roles/owner" \ --project "${PROJECT_ID}"
Actualiza el controlador de configuración
Dado que el controlador de configuración es un servicio administrado, Google lo actualiza de manera automática. Para obtener detalles sobre las versiones incluidas de componentes y funciones nuevas, consulta las notas de la versión del controlador de configuración.
Administra recursos de Google Cloud con el controlador de configuración
Después de configurar el controlador de configuración, puedes aprovechar Config Connector para administrar muchos servicios y recursos de Google Cloud con las herramientas y las API de Kubernetes. Para obtener una lista completa de los recursos que puedes administrar, consulta Recursos de Config Connector.
En este ejemplo, se crea un repositorio en Cloud Source Repositories que puedes usar en la sección Configura GitOps.
Crea un archivo llamado
service.yaml
y copia el siguiente archivo YAML en él:# service.yaml apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1 kind: Service metadata: name: sourcerepo.googleapis.com namespace: config-control
Aplica el manifiesto y espera a que Cloud Source Repositories esté habilitado:
kubectl apply -f service.yaml kubectl wait -f service.yaml --for=condition=Ready
Crea un archivo llamado
repo.yaml
y copia el siguiente archivo YAML en él:# repo.yaml apiVersion: sourcerepo.cnrm.cloud.google.com/v1beta1 kind: SourceRepoRepository metadata: name: REPO_NAME namespace: config-control
Reemplaza
REPO_NAME
por el nombre que deseas asignar a los Cloud Source Repositories.Para crear el repositorio, aplica el manifiesto:
kubectl apply -f repo.yaml
Configura GitOps
Puedes hacer que la configuración del repositorio de Git se sincronice con el controlador de configuración mediante Config Sync. En el ejemplo de esta sección, se usan los repositorios de Cloud Source Repositories que creaste en la sección anterior.
Crea un archivo llamado
gitops-iam.yaml
y copia el siguiente archivo YAML en él:# gitops-iam.yaml apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMServiceAccount metadata: name: config-sync-sa namespace: config-control spec: displayName: ConfigSync --- apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: config-sync-wi namespace: config-control spec: member: serviceAccount:PROJECT_ID.svc.id.goog[config-management-system/root-reconciler] role: roles/iam.workloadIdentityUser resourceRef: apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMServiceAccount name: config-sync-sa --- apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: allow-configsync-sa-read-csr namespace: config-control spec: member: serviceAccount:config-sync-sa@PROJECT_ID.iam.gserviceaccount.com role: roles/source.reader resourceRef: apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1 kind: Project external: projects/PROJECT_ID
Reemplaza PROJECT_ID por el ID del proyecto en el que se ejecuta el controlador de configuración.
Para permitir que el Sincronizador de configuración acceda al repositorio, aplica el manifiesto:
kubectl apply -f gitops-iam.yaml
Para que la configuración del repositorio se sincronice con el controlador de configuración mediante el Sincronizador de configuración, crea un archivo llamado
config-management.yaml
y pega el siguiente texto en él:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management spec: enableMultiRepo: true enableLegacyFields: true policyController: enabled: true clusterName: krmapihost-CONFIG_CONTROLLER_NAME git: policyDir: REPO_PATH secretType: gcpserviceaccount gcpServiceAccountEmail: config-sync-sa@PROJECT_ID.iam.gserviceaccount.com syncBranch: REPO_BRANCH syncRepo: https://source.developers.google.com/p/PROJECT_ID/r/REPO_NAME sourceFormat: unstructured
Reemplaza lo siguiente:
CONFIG_CONTROLLER_NAME
: nombre de tu controlador de configuración.REPO_PATH
: ruta del directorio desde el que se realiza la sincronización (se relaciona con la raíz del repositorio Git). El valor predeterminado es/
.PROJECT_ID
: ID del proyecto que contiene la cuenta de servicio y el repositorio Git.REPO_BRANCH
: rama del repositorio desde el que se realiza la sincronización. El valor predeterminado esmaster
.REPO_NAME
: nombre del repositorio Git desde el que se extraerá la configuración y en el que se detectarán cambios.Para obtener más información sobre los campos de
config-management.yaml
, consulta Campos de ConfigManagement.
Para crear la configuración del Sincronizador de configuración, aplica el manifiesto:
kubectl apply -f config-management.yaml
Es posible que recibas un error que no puede encontrar el CRD:
Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "rootsyncs.configsync.gke.io" not found
. Para resolver el error, ejecuta el siguiente comando a fin de esperar que las CRD deRootSync
yRepoSync
estén disponibles:until kubectl get customresourcedefinitions rootsyncs.configsync.gke.io reposyncs.configsync.gke.io; \ do date; sleep 1; echo ""; done
Verifica el éxito
Puedes verificar la configuración inicial mediante los siguientes pasos:
Verifica que todos los controladores estén configurados de forma correcta en el controlador de configuración:
kubectl wait pod --all --all-namespaces --for=condition=Ready
Verifica que el repositorio de Git esté sincronizado con el controlador de configuración mediante el Sincronizador de configuración mediante el comando
nomos
o el comandogcloud alpha anthos config sync repo
:nomos status --contexts $(kubectl config current-context) # or gcloud alpha anthos config sync repo list --targets config-controller
Borra tu controlador de configuración
Si decides dejar de usar el controlador de configuración, debes limpiar todos los recursos creados. Debes quitar los recursos del controlador de configuración antes de borrar el controlador de configuración.
Si borras el controlador de configuración sin borrar primero los recursos aprovisionados, los recursos permanecen en un estado de abandono. Los recursos aún existen en Google Cloud (y generan cargos de facturación), pero no se administran desde una configuración declarativa.
Una vez que se hayan borrado todos los recursos, puedes borrar el controlador de configuración con la CLI de gcloud:
gcloud anthos config controller delete --location=LOCATION CONFIG_CONTROLLER_NAME
Consideraciones de producción
Cuando se dirige a la producción, primero debes revisar las consideraciones de alta disponibilidad para el controlador de configuración.
¿Qué sigue?
- Soluciona problemas del controlador de configuración
- Si tienes recursos existentes de Google Cloud que deseas usar con el controlador de configuración, obtén más información sobre cómo importar y exportar recursos.
- Obtén más información sobre cómo implementar opciones de configuración y políticas con el Sincronizador de configuración.
- Obtén más información sobre cómo aplicar políticas con el controlador de políticas.
- Obtén más información sobre cómo usar planos para implementar soluciones específicas, por ejemplo, Configura el controlador de configuración para administrar varios proyectos.