Instalar Config Connector en modo de espacio de nombres


En esta página se explica cómo instalar Config Connector en modo de espacio de nombres.

La instalación en modo de espacio de nombres es una extensión de la instalación de Config Connector. El modo con espacio de nombres permite gestionar varios proyectos, cada uno con sus propias Google Cloud identidades.

Antes de empezar

Antes de configurar Config Connector para que se ejecute en modo de espacio de nombres, asegúrate de haber instalado Config Connector.

Configurar Config Connector para que se ejecute en el modo de espacio de nombres

Para habilitar el modo de espacio de nombres, sigue estos pasos:

  1. Copia el siguiente manifiesto 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
      stateIntoSpec: Absent
    
  2. Aplica la configuración al clúster con kubectl apply:

    kubectl apply -f configconnector.yaml
    

Configurar Config Connector para gestionar recursos en tus espacios de nombres

En las siguientes secciones, el proyecto en el que instales Config Connector se denomina proyecto host o HOST_PROJECT_ID. Google Cloud Los otros proyectos en los que gestionas recursos se denominan proyectos gestionados o MANAGED_PROJECT_ID. Pueden ser el mismo proyecto si solo tienes intención de usar Config Connector para crear recursos en el mismo proyecto que tu clúster. Google Cloud

Crear un espacio de nombres

Puedes saltarte este paso si ya tienes un espacio de nombres que usar para organizar los recursos deGoogle Cloud .

Usa kubectl para crear un espacio de nombres ejecutando el siguiente comando:

kubectl create namespace NAMESPACE

Sustituye NAMESPACE por el nombre del espacio de nombres.

Crear una identidad

Crea una cuenta de servicio de Gestión de Identidades y Accesos (IAM) y crea un enlace 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 ya tienes una cuenta de servicio, puedes usarla en lugar de crear una nueva. Usa gcloud para crear la cuenta de servicio ejecutando el siguiente comando:

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    Haz los cambios siguientes:

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

    Para obtener más información sobre cómo crear cuentas de servicio, consulta el artículo Crear y gestionar cuentas de servicio.

  2. Concede permisos elevados a la cuenta de servicio de gestión de identidades y accesos en tu proyecto gestionado.

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

    Sustituye MANAGED_PROJECT_ID por el ID de tu proyecto gestionado.

  3. Crea un enlace de política de gestión de identidades y accesos entre la cuenta de servicio de gestión de identidades y accesos y la cuenta de servicio de Kubernetes de Config Connector. Para vincular las cuentas de servicio, ejecuta el siguiente comando: 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"
    

    Sustituye NAMESPACE por tu espacio de nombres.

  4. Concede a la cuenta de servicio de gestión de identidades y accesos permisos para publicar 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"
    

Crear un ConfigConnectorContext

Para crear recursos, debes configurar Config Connector para que monitorice tu espacio de nombres. Para ello, añade un objeto ConfigConnectorContext al espacio de nombres que quieras usar. Google Cloud

Para crear un ConfigConnectorContext, sigue estos pasos:

  1. Copia el siguiente manifiesto 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"
      stateIntoSpec: Absent
    

    Haz los cambios siguientes:

    • NAMESPACE con el nombre de tu espacio de nombres.
    • NAMESPACE_GSA con 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 ejecutando el siguiente comando:

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

    Sustituye NAMESPACE por el nombre de tu espacio de nombres.

  4. Comprueba que el pod del controlador de Config Connector se esté ejecutando en tu espacio de nombres con kubectl. Para ello, ejecuta el 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
    

    Sustituye NAMESPACE por el nombre de tu espacio de nombres.

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

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

Configurar Config Connector para que deje de gestionar recursos en tu espacio de nombres

Para configurar Config Connector de forma que deje de gestionar tu espacio de nombres, elimina todos los recursos de Config Connector de tu espacio de nombres y suprime el ConfigConnectorContext de tu espacio de nombres.

Elimina los recursos de Config Connector de tu espacio de nombres

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

  1. Para descubrir todos los recursos de Config Connector de tu espacio de nombres, enumera todos los recursos de cada Custom Resource Definition de Config Connector.

    kubectl get gcp -n NAMESPACE
    

    Sustituye NAMESPACE por el nombre de tu espacio de nombres.

  2. Para eliminar todos los recursos de Config Connector, ejecuta un comando de eliminación para cada recurso de la salida del paso anterior.

    kubectl delete -n NAMESPACE KIND NAME
    

    Haz los cambios siguientes:

    • NAMESPACE: el nombre de tu espacio de nombres
    • KIND: el tipo de recurso descubierto en el paso anterior
    • NAME: el nombre del recurso descubierto en el paso anterior

Eliminar el ConfigConnectorContext

Para configurar Config Connector de forma que deje de gestionar los recursos de Config Connector de tu espacio de nombres, elimina ConfigConnectorContext de tu espacio de nombres.

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

Sustituye NAMESPACE por el nombre de tu espacio de nombres.

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

Desinstalar Config Connector

No sigas estos pasos para desinstalar un clúster de Config Controller.

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

kubectl delete ConfigConnectorContext --all -A –wait=false

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

Siguientes pasos