Instala Config Connector en modo con espacio de nombres


En esta página, se explica cómo instalar Config Connector en modo con 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 de espacio de nombres admite la administración de varios proyectos, cada uno con sus propias identidades Google Cloud .

Antes de comenzar

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

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
      stateIntoSpec: Absent
    
  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 Google Cloud proyecto 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 deGoogle 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 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"
    

    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

Para crear recursos Google Cloud , debes configurar Config Connector para que mire tu espacio de nombres agregando 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"
      stateIntoSpec: Absent
    

    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 a fin de que deje de administrar tu espacio de nombres, debes quitar todos los recursos de Config Connector en tu espacio de nombres y borrar el ConfigConnectorContext en tu espacio de nombres.

Quita los recursos de Config Connector en 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, para cada definición de recursos personalizados de Config Connector, enumera todos los recursos.

    kubectl get gcp -n NAMESPACE
    

    Reemplaza NAMESPACE por el nombre de tu espacio de nombres.

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

    kubectl delete -n NAMESPACE KIND NAME
    

    Reemplaza lo siguiente:

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

Quita el ConfigConnectorContext

Para configurar Config Connector para 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.

Desinstalar Config Connector

No uses los siguientes pasos para desinstalar un clúster de Config Controller.

Usa kubectl delete para quitar las CRD 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

¿Qué sigue?