Opciones de instalación avanzadas

En este tema, se ofrecen dos opciones de instalación adicionales para instalar Config Connector en tu clúster de Google Kubernetes Engine (GKE):

  • Instalación manual: La instalación con el método manual te brinda actualizaciones más rápidas que usar el complemento. Este método también te brinda más opciones de configuración. Por ejemplo, puedes aumentar el límite de CPU del operador de Config Connector.
  • Modo con espacio de nombres: Este método es una extensión de la instalación de Config Connector. El modo de espacio de nombres admite la administración de múltiples proyectos, cada uno con las propias identidades de Google Cloud.

Para obtener más información sobre estos tipos de instalación, consulte Elección de un tipo de instalación.

Instala de forma manual el operador de Config Connector

En las siguientes secciones, se muestra cómo instalar de forma manual el operador de Config Connector.

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. Para instalar este operador, completa los siguientes pasos:

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

    gsutil 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.

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

Crea una identidad

Config Connector crea y administra recursos de Google Cloud mediante la autenticación con una cuenta de servicio de administración de identidades y accesos (IAM) y mediante Workload Identity 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.

    Para crear la cuenta de servicio, usa el siguiente comando:
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    Reemplaza SERVICE_ACCOUNT_NAME por un nombre para la cuenta de servicio.
  2. Si deseas obtener más información para crear cuentas de servicio, consulta Crea y administra cuentas de servicio.

  3. 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/owner"
    Reemplaza lo siguiente:
    • PROJECT_ID por el ID del proyecto
    • SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio
  4. 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"
    Reemplaza lo siguiente:
    • SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio
    • PROJECT_ID por el ID del proyecto

Configuración de Config Connector

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

Para configurar el operador, completa los siguientes pasos:

  1. Copia el siguiente 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"
    
    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 del proyecto de 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 tu ID de carpeta de 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 ID de la organización de Google Cloud.

Cuando anotas el espacio de nombres, Config Connector crea recursos en el proyecto, la carpeta o la organización correspondiente. Si deseas obtener más información para 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

Actualiza Config Connector

Descarga e instala la última versión del operador de Config Connector.

gsutil 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

Desinstalar Config Connector

Usa kubectl delete para quitar las CRD de Config Connector junto con los componentes del controlador:

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
    --wait=true

Para desinstalar el operador de Config Connector, ejecuta el siguiente comando:

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

Instala Config Connector con modo de espacio de nombres

En las siguientes secciones, se muestra cómo habilitar el modo de espacio de nombres.

Antes de comenzar

Antes de configurar Config Connector para que se ejecute en modo de espacio de nombres, asegúrate de haber habilitado el complemento de Config Connector de GKE o del operador Config Connector de forma manual.

Configura Config Connector para que se ejecute en modo con espacio de nombres

Para habilitar el modo de espacio de nombres, completa los siguientes pasos:

  1. Copia el siguiente YAML en un archivo llamado configconnector.yaml:

    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
    
  2. Aplica la configuración a tu clúster con kubectl apply:

    kubectl apply -f configconnector.yaml
    

Configura Config Connector para administrar recursos en tus espacios de nombres

En las siguientes secciones, el proyecto de Google Cloud en el que instalas Config Connector se conoce como el proyecto host, o HOST_PROJECT_ID. Los otros proyectos en los que administras recursos se conocen como los proyectos administrados o MANAGED_PROJECT_ID. Estos podrían ser el mismo proyecto si solo pretendes usar el Config Connector para crear recursos de Google Cloud en el mismo proyecto que tu clúster.

Crea un espacio de nombres

Puedes omitir este paso si ya tienes un espacio de nombres para usar en la organización de los recursos de Google Cloud.

Usa kubectl para crear un nuevo espacio de nombres mediante la ejecución del siguiente comando:

kubectl create namespace NAMESPACE

Reemplaza NAMESPACE por un nombre para el espacio de nombres.

Crea una identidad

Crea una cuenta de servicio de administración de identidades y accesos (IAM) y crea una vinculación entre la cuenta de servicio de IAM y la cuenta de servicio de Kubernetes de Config Connector:

  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 lo siguiente:

    • MANAGED_PROJECT_ID por el ID de tu proyecto administrado.
    • NAMESPACE_GSA por el nombre de la cuenta de servicio de Google vinculada a tu espacio de nombres.
    • HOST_PROJECT_ID por el ID de tu proyecto host.
  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. Para vincular las cuentas de servicio, ejecuta el siguiente comando de gcloud:

    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" \
        --project HOST_PROJECT_ID
    

    Reemplaza lo siguiente:

    • HOST_PROJECT_ID por el ID de tu proyecto host.
    • NAMESPACE_GSA por el nombre de la cuenta de servicio de Google vinculada a tu espacio de nombres.
    • NAMESPACE por tu espacio de nombres.
  4. Otórgale a la cuenta de servicio de IAM los permisos para publicar las métricas de Prometheus en Google Cloud's operations suite 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"
    

    Reemplaza lo siguiente:

    • HOST_PROJECT_ID por el ID de tu proyecto host.
    • NAMESPACE_GSA por el nombre de la cuenta de servicio de Google vinculada a tu espacio de nombres.

Crea un ConfigConnectorContext

Si quieres crear recursos de Google Cloud, debes configurar Config Connector para ver tu espacio de nombres mediante la adición de un objeto ConfigConnectorContext en el espacio de nombres que deseas usar.

Para crear un ConfigConnectorContext, completa los siguientes pasos.

  1. Copia el siguiente YAML en un archivo llamado configconnectorcontext.yaml:

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnectorContext
    metadata:
      # you can only have one ConfigConnectorContext per namespace
      name: configconnectorcontext.core.cnrm.cloud.google.com
      namespace: NAMESPACE
    spec:
      googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com"
    

    Reemplaza lo siguiente:

    • NAMESPACE por el nombre de tu espacio de nombres.
    • NAMESPACE_GSA por el nombre de la cuenta de servicio de Google vinculada a tu espacio de nombres.
    • HOST_PROJECT_ID por el ID de tu proyecto host.
  2. Aplica el archivo a tu clúster con kubectl.

    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 con kubectl mediante la ejecución del siguiente comando:

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    

    Reemplaza NAMESPACE por el nombre de tu espacio de nombres.

  4. Verifica que el Pod del controlador de Config Connector se ejecute para tu espacio de nombres con kubectl mediante la ejecución del siguiente comando:

    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
    

    Reemplaza NAMESPACE por el nombre de tu espacio de nombres.

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

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

Configura Config Connector para que ya no administre recursos en tu espacio de nombres

Para configurar Config Connector de manera que deje de administrar tu espacio de nombres, quita todos los recursos de Config Connector en tu espacio de nombres y borra ConfigConnectorContext en tu espacio de nombres.

Quita los recursos de Config Connector de tu espacio de nombres

Para finalizar la eliminación de ConfigConnectorContext, quita todos los recursos de Config Connector de tu espacio de nombres.

  1. Para descubrir todos los recursos de Config Connector en tu espacio de nombres, crea una lista de todos los recursos para cada definición personalizada de recurso del Config Connector.

    kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true \
    -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -n 1 \
    kubectl get -o jsonpath='{range .items[*]}{" Kind: "}{@.kind}{"Name: "}{@.metadata.name}{"\n"}{end}' \
    --ignore-not-found -n NAMESPACE
    

    Reemplaza NAMESPACE por el nombre de tu espacio de nombres.

  2. Para quitar todos los recursos de Config Connector, por cada recurso en el resultado del paso anterior, ejecuta un comando de eliminación.

    kubectl delete -n NAMESPACE KIND NAME
    

    Reemplaza lo siguiente:

    • NAMESPACE: el nombre de tu espacio de nombres
    • KIND: el tipo de recurso que se descubrió en el paso anterior
    • NAME: el nombre del recurso que se descubrió en el paso anterior

Quita el ConfigConnectorContext

Para configurar Config Connector de manera que deje de administrar los recursos de Config Connector en tu espacio de nombres, borra ConfigConnectorContext en tu espacio de nombres.

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

Reemplaza NAMESPACE por el nombre de tu espacio de nombres.

La eliminación de ConfigConnectorContext no finalizará hasta que se quiten todos los recursos de Config Connector de tu espacio de nombres.

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.

Cambiar del complemento a una instalación manual

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

La instalación manual permite actualizaciones más rápidas a costa de las actualizaciones manuales.

Para cambiar de forma segura a todos los recursos, sigue estos 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. Sigue las instrucciones para instalar el operador manual de la versión deseada.

Soluciona problemas

En la siguiente sección, se proporcionan sugerencias para solucionar problemas de instalación de Config Connector.

Solución de problemas de permisos para conciliaciones de recursos

Si Config Connector no puede conciliar los recursos de forma correcta y los registros contienen el mensaje de error The caller does not have permission, forbidden., es posible que Workload Identity no esté habilitada en tu clúster de GKE o grupo de nodos.

Para realizar una investigación, completa los siguientes pasos:

  1. Guarda la configuración del pod siguiente como wi-test.yaml:
    apiVersion: v1
    kind: Pod
    metadata:
      name: workload-identity-test
      namespace: cnrm-system
    spec:
      containers:
      - image: google/cloud-sdk:slim
        name: workload-identity-test
        command: ["sleep","infinity"]
      serviceAccountName: cnrm-controller-manager
    
  2. Crea el pod en tu clúster de GKE:
    kubectl apply -f wi-test.yaml
    
  3. Abre una sesión interactiva en el Pod:
    kubectl exec -it workload-identity-test \
      --namespace cnrm-system \
      -- /bin/bash
    
  4. Indica tu identidad:
    gcloud auth list
    
  5. Verifica que la identidad detallada coincida con la cuenta de servicio de Google vinculada con tus recursos.

    Si, en cambio, ves la cuenta de servicio predeterminada de Compute Engine, significa que Workload Identity no está habilitada en tu clúster de GKE o grupo de nodos.

  6. Sal de la sesión interactiva y, luego, borra el pod de tu clúster de GKE:
    kubectl delete pod workload-identity-test \
    --namespace cnrm-system
    

¿Qué sigue?