Instala Config Connector de forma manual

En esta página, se explica cómo instalar Config Connector de forma manual. La instalación manual es una opción flexible que te permite controlar la versión instalada y el programa de actualización.

Para obtener más información sobre las diferentes opciones de instalación, consulta Elige un tipo de instalación.

Para la mayoría de los casos de uso, recomendamos instalar Config Connector de forma manual en el modo de espacio de nombres. La alternativa es el modo de clúster. El modo de espacio de nombres es más escalable y ofrece un mejor aislamiento de permisos, lo que resulta ideal para casos de uso de múltiples arrendatarios o cuando se administran recursos de varios proyectos.

Si prefieres una sola cuenta de servicio para todo el clúster, sigue las instrucciones para instalar en modo de clúster.

Antes de comenzar

Antes de instalar de forma manual el operador de Config Connector, completa los siguientes pasos:

Instala el operador de Config Connector

Config Connector usa un operador de Kubernetes para mantener la instalación actualizada. La instalación del operador es obligatoria, ya sea que instales Config Connector en modo de espacio de nombres o en modo de clúster.

Para instalar el operador de Config Connector, completa los siguientes pasos:

  1. Descarga el archivo .tar del operador de Config Connector más reciente:

    gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
  2. Extrae el archivo tar:

    tar zxvf release-bundle.tar.gz
    
  3. Instala el operador de Config Connector en tu clúster.

    Autopilot

    kubectl apply -f operator-system/autopilot-configconnector-operator.yaml
    

    Estándar

    kubectl apply -f operator-system/configconnector-operator.yaml
    
  4. Para configurar el operador de Config Connector para que se ejecute en modo con espacio de nombres, completa los siguientes pasos:

    1. Crea un manifiesto llamado configconnector.yaml con el siguiente contenido:

      apiVersion: core.cnrm.cloud.google.com/v1beta1
      kind: ConfigConnector
      metadata:
        # the name is restricted to ensure that there is only ConfigConnector resource installed in your cluster
        name: configconnector.core.cnrm.cloud.google.com
      spec:
        mode: namespaced
        stateIntoSpec: Absent
      
    2. Aplica el manifiesto al clúster:

      kubectl apply -f configconnector.yaml
      

Instala Config Connector en modo con espacio de nombres

En las siguientes secciones, el proyecto en el que instalas Config Connector es el proyecto host. Los otros proyectos en los que Config Connector puede administrar recursos son proyectos administrados. El proyecto host y el proyecto administrado pueden ser el mismo si deseas que Config Connector solo cree recursos en el mismo proyecto que tu clúster.

Crea un espacio de nombres

Ejecuta el siguiente comando para crear un espacio de nombres nuevo:

kubectl create namespace NAMESPACE

Reemplaza NAMESPACE por un nombre para el espacio de nombres.

Crea una identidad

Crea una cuenta de servicio de Identity and Access Management (IAM) y crea una vinculación entre la cuenta de servicio de IAM y la cuenta de servicio de Config Connector de Kubernetes. Para ello, completa los siguientes pasos:

  1. Crea una cuenta de servicio de IAM. Si tienes una cuenta de servicio existente, puedes usarla en lugar de crear una nueva. Usa gcloud para crear la cuenta de servicio mediante la ejecución del siguiente comando:

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    Reemplaza lo siguiente:

    • NAMESPACE_GSA con el nombre de la cuenta de servicio de Google (GSA) vinculado a tu espacio de nombres.
    • HOST_PROJECT_ID por el ID de tu proyecto host.

    Si deseas obtener más información para crear cuentas de servicio, consulta Crea y administra cuentas de servicio.

  2. Otorga permisos elevados a la cuenta de servicio de IAM en tu proyecto administrado:

    gcloud projects add-iam-policy-binding MANAGED_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    

    Reemplaza MANAGED_PROJECT_ID por el ID de tu proyecto administrado.

  3. Crea una vinculación de política de IAM entre la cuenta de servicio de IAM y la cuenta de servicio de Config Connector de Kubernetes:

    gcloud iam service-accounts add-iam-policy-binding \
        NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com \
        --member="serviceAccount:HOST_PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager-NAMESPACE]" \
        --role="roles/iam.workloadIdentityUser"
    
  4. Otorga a la cuenta de servicio de IAM los permisos para publicar las métricas de Prometheus en Google Cloud Observability en tu proyecto host:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    

Crea un ConfigConnectorContext

Para crear recursos Google Cloud , configura Config Connector para que observe tu espacio de nombres agregando un objeto ConfigConnectorContext en ese espacio de nombres.

Para crear un ConfigConnectorContext, completa los siguientes pasos.

  1. Crea un manifiesto llamado configconnectorcontext.yaml con el siguiente contenido:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnectorContext
    metadata:
      # you need one ConfigConnectorContext per namespace
      name: configconnectorcontext.core.cnrm.cloud.google.com
      namespace: NAMESPACE
    spec:
      googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com"
      stateIntoSpec: Absent
    
  2. Aplica el manifiesto al clúster:

    kubectl apply -f configconnectorcontext.yaml
    
  3. Verifica que el operador de Config Connector haya creado una cuenta de servicio de Kubernetes para tu espacio de nombres ejecutando el siguiente comando:

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    
  4. Verifica que el Pod del controlador de Config Connector se esté ejecutando para tu espacio de nombres:

    kubectl wait -n cnrm-system \
        --for=condition=Ready pod \
        -l cnrm.cloud.google.com/component=cnrm-controller-manager \
        -l cnrm.cloud.google.com/scoped-namespace=NAMESPACE
    

    Si el controlador de Config Connector está en ejecución, el resultado es similar al siguiente:

    cnrm-controller-manager-abcdefghijk-0 condition met.
    

Deja de administrar recursos en un espacio de nombres

Si deseas que Config Connector deje de administrar recursos en un espacio de nombres, quita todos los recursos de Config Connector y el objeto ConfigConnectorContext en ese espacio de nombres.

  1. Para encontrar todos los recursos de Config Connector en tu espacio de nombres, enumera todos los recursos para cada Definición de recurso personalizado de Config Connector.

    kubectl get gcp -n NAMESPACE
    

    El resultado de este comando enumera todas las definiciones de recursos personalizados (CRD) que representan un recurso administrado por Config Connector en ese espacio de nombres, incluidos el nombre y el tipo de Kubernetes de ese recurso.

  2. Para quitar todos los recursos de Config Connector, ejecuta el siguiente comando para cada recurso en el resultado del paso anterior:

    kubectl delete -n NAMESPACE KIND NAME
    

    Reemplaza lo siguiente:

    • KIND: Es el tipo de Kubernetes del recurso.
    • NAME: el nombre del recurso.
  3. Borra el objeto ConfigConnectorContext en tu espacio de nombres.

    kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com
    

Desinstala Config Connector

Para desinstalar Config Connector, completa los siguientes pasos:

  1. Para quitar los componentes del controlador y las CRD de Config Connector, ejecuta el siguiente comando:

    kubectl delete ConfigConnectorContext --all -A –wait=false
    
    kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
        --wait=true
    
  2. Para desinstalar el operador de Config Connector, ejecuta el siguiente comando:

    kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true
    

Instala en modo de clúster

Es posible que prefieras instalar y administrar Config Connector en modo de clúster si deseas administrar recursos dentro de un solo proyecto y no necesitas la separación de permisos que proporciona el modo con espacio de nombres.

Crea una identidad

Config Connector crea y administra recursos Google Cloud autenticándose con una cuenta de servicio de Identity and Access Management (IAM) y usando la federación de identidades para cargas de trabajo de GKE para vincular cuentas de servicio de IAM con cuentas de servicio de Kubernetes.

Para crear la identidad, sigue estos pasos:

  1. Crea una cuenta de servicio de IAM. Si deseas usar una cuenta de servicio existente, puedes usarla y omitir este paso:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    Reemplaza SERVICE_ACCOUNT_NAME por un nombre para tu cuenta de servicio.

    Si deseas obtener más información para crear cuentas de servicio, consulta Crea y administra cuentas de servicio.

  2. Otorga permisos elevados a la cuenta de servicio de IAM en tu proyecto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/editor"
    

    Reemplaza PROJECT_ID con el ID del proyecto.

  3. Crea una vinculación de política de IAM entre la cuenta de servicio de IAM y la cuenta de servicio de Kubernetes predefinida que ejecuta Config Connector:

    gcloud iam service-accounts add-iam-policy-binding \
    SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
      --role="roles/iam.workloadIdentityUser"
    

Configura Config Connector

A fin de completar la instalación, crea un archivo de configuración para el CustomResource de ConfigConnector y, luego, aplícalo mediante el comando kubectl apply. El operador de Config Connector instala los CRD de recursos deGoogle Cloud y los componentes de Config Connector en tu clúster.

Para configurar el operador como modo de clúster, completa los siguientes pasos:

  1. Copia el siguiente archivo YAML en un archivo llamado configconnector.yaml:
    # configconnector.yaml
    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only one
      # ConfigConnector resource installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
      mode: cluster
      googleServiceAccount: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
      # Setting `stateIntoSpec` to `Absent` is recommended. It means setting `cnrm.cloud.google.com/state-into-spec`
      # annotation to `absent` for all Config Connector resources created in the cluster in the future.
      # It prevents Config Connector from populating unspecified fields into the spec.
      stateIntoSpec: Absent
    Reemplaza lo siguiente:
    • SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio
    • PROJECT_ID por el ID del proyecto
  2. Aplica la configuración a tu clúster con kubectl apply:
      kubectl apply -f configconnector.yaml

Especifica en que ubicación crear tus recursos

Config Connector puede organizar los recursos por proyecto, carpeta u organización, de la misma manera que organizarías los recursos con Google Cloud.

Antes de crear recursos con Config Connector, debes configurar dónde crear los recursos. Para determinar dónde crear el recurso, Config Connector usa una anotación en la configuración del recurso o en el espacio de nombres. Para obtener más información, consulta Organiza recursos.

Si no tienes un espacio de nombres para este fin, crea uno con kubectl.
kubectl create namespace NAMESPACE

Reemplaza NAMESPACE por el nombre de tu espacio de nombres. Por ejemplo config-connector.

Selecciona una pestaña para elegir dónde deseas que Config Connector cree recursos.

Proyecto

Para crear recursos en un proyecto determinado, ejecuta el siguiente comando:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID

Reemplaza lo siguiente:

  • NAMESPACE por tu nombre de espacio de nombres.
  • PROJECT_ID por el ID de tu proyecto Google Cloud .

Carpeta

Para crear recursos en una carpeta determinada, ejecuta el siguiente comando:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID

Reemplaza lo siguiente:

  • NAMESPACE por tu nombre de espacio de nombres.
  • FOLDER_ID por el ID de tu carpeta Google Cloud .

Organización

Para crear recursos en una organización determinada, ejecuta el siguiente comando:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID

Reemplaza lo siguiente:

  • NAMESPACE por tu nombre de espacio de nombres.
  • ORGANIZATION_ID por el Google Cloud ID de tu organización.

Cuando anotas el espacio de nombres, Config Connector crea recursos en el proyecto, la carpeta o la organización correspondiente. Para obtener más información sobre cómo Config Connector usa los espacios de nombres de Kubernetes, consulta Espacios de nombres de Kubernetes y proyectos de Google Cloud .

Verifica tu instalación

Config Connector ejecuta todos sus componentes en un espacio de nombres llamado cnrm-system. Puedes verificar que los Pods estén listos si ejecutas el siguiente comando:

kubectl wait -n cnrm-system \
      --for=condition=Ready pod --all

Si Config Connector está instalado correctamente, el resultado es similar al siguiente:

pod/cnrm-controller-manager-0 condition met

Desinstala Config Connector

Para desinstalar Config Connector, completa los siguientes pasos:

  1. Para quitar los componentes del controlador y las CRD de Config Connector, ejecuta el siguiente comando:

    kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
        --wait=true
    
  2. Para desinstalar el operador de Config Connector, ejecuta el siguiente comando:

    kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true
    

Actualiza Config Connector

Para descargar e instalar la versión más reciente del operador de Config Connector, ejecuta el siguiente comando:

gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml

Cómo cambiar a una versión anterior de Config Connector

No se admite la reversión completa de Config Connector. Para cambiar a una versión inferior del operador y los CRD de Config Connector, debes desinstalarlo, volver a instalarlo y, luego, volver a aplicar tus recursos.

En la versión 1.123.1 y posteriores de Config Connector, puedes revertir la versión del operador para las instalaciones que usan el modo de espacio de nombres. En cada espacio de nombres que tenga un operador que desees revertir, establece el campo spec.version en el objeto ConfigConnectorContext en la versión anterior de Config Connector.

Puedes revertir el controlador de Config Connector hasta 3 versiones secundarias. Siempre debes revertir a la versión de parche más reciente para una versión secundaria determinada.

Actualiza desde instalaciones sin operadores

La versión 1.33.0 de Config Connector y versiones posteriores, solo admiten la instalación con el complemento de GKE o el operador.

Para actualizar al operador (y retener todos los recursos de Config Connector), debes quitar todos los componentes del sistema de Config Connector, excepto los CRD y, luego, instalar el operador.

  1. Ejecuta los siguientes comandos para quitar los componentes del sistema de Config Connector que no son CRD:

    kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true
    kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    
  2. Instala Config Connector con el complemento de GKE o el operador.

Cómo cambiar del complemento a una instalación manual

Cuando se instala como complemento, la versión de Config Connector está directamente vinculada a la versión de GKE instalada.

La instalación manual permite actualizaciones más rápidas, pero requiere actualizaciones manuales.

Para cambiar de método de instalación y conservar tus recursos de forma segura, completa los siguientes pasos:

  1. Inhabilita el complemento sin borrar ningún objeto ConfigConnector o ConfigConnectorContext:

    gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED
    

    Reemplaza CLUSTER_NAME por el nombre del clúster en el que instalaste Config Connector.

  2. Instala el operador manual de la versión elegida.

    Para evitar posibles errores de validación de CRD (por ejemplo, KNV2009: Invalid value: "v1beta1": must appear in spec.versions), la versión elegida del operador manual debe ser igual o posterior a la versión que usabas para el complemento. La degradación de la versión del operador manual puede causar errores (por ejemplo, KNV2009) porque es posible que el complemento de GKE ya haya actualizado ciertos CRD a una versión posterior de Config Connector.

¿Qué sigue?