Instala en otras distribuciones de Kubernetes

En esta página, se muestra cómo instalar Config Connector en una distribución de Kubernetes que no sea Google Kubernetes Engine (GKE) en Google Cloud. Por ejemplo, clústeres de Anthos en AWS (GKE en AWS).

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

Instala Config Connector

Para instalar Config Connector en otro entorno de Kubernetes, después de crear o identificar un clúster de Kubernetes, crea una cuenta de servicio de administración de identidades y accesos (IAM) y, luego, instala los componentes del Config Connector en el clúster.

Crea un ClusterRoleBinding

Config Connector necesita permiso para crear funciones de Kubernetes antes de poder crear recursos.

Verifica que puedes crear funciones si ejecutas el siguiente comando.

kubectl auth can-i create roles

Si el resultado es yes, continúa con la sección Crea una identidad.

Si el resultado es no, crea un ClusterRoleBinding en tu clúster, lo que te permite crear funciones:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin \
    --user ACCOUNT_EMAIL

Reemplaza ACCOUNT_EMAIL por el correo electrónico que usas para acceder a tu cuenta de facturación de Cloud.

El resultado debe contener la frase cluster-admin-binding created. Si esa frase no aparece, comunícate con tu cuenta de Cloud Billing o con el administrador de clústeres de GKE sobre los permisos.

Crea una identidad

Config Connector necesita Cloud Identity para comunicarse con otros recursos. Para configurar la identidad, debes crear una cuenta de servicio de IAM y una clave de cuenta de servicio. Después de eso, importa las credenciales de la clave como un secreto en cada clúster que ejecuta Config Connector.

Crea una cuenta de servicio

Para crear una cuenta de servicio, 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 la herramienta de gcloud para crear la cuenta de servicio mediante la ejecución del siguiente comando:

     gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    Reemplaza SERVICE_ACCOUNT_NAME por el nombre de 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/owner"
    

    Reemplaza lo siguiente:

    • PROJECT_ID por el ID del proyecto de Google Cloud
    • SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio
  3. Crea una clave de cuenta de servicio y exporta sus credenciales a un archivo llamado key.json:

    gcloud iam service-accounts keys create --iam-account \
        SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com key.json
    

    Reemplaza lo siguiente:

    • SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio
    • PROJECT_ID por el ID del proyecto de Google Cloud

Aplica las credenciales a tu clúster

Para aplicar las credenciales al clúster en el que quieres ejecutar Config Connector, completa los siguientes pasos:

  1. Crea el espacio de nombres cnrm-system:

    kubectl create namespace cnrm-system
    
  2. Importe las credenciales de la clave como un secreto.

    kubectl create secret generic SECRET_NAME \
        --from-file key.json \
        --namespace cnrm-system
    

    Reemplaza SECRET_NAME por el nombre que deseas darle a tu secreto.

  3. Quita las credenciales de tu sistema:

    rm key.json
    

Instala el operador de Connector Operator

Completa los siguientes pasos para instalar el operador de Config Connector:

  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
    

Configuración de Config Connector

Si deseas instalar Config Connector mediante el operador, debes crear un archivo de configuración para el CustomResource ConfigConnector y, luego, aplicarlo mediante el comando kubectl apply.

Para configurar Config Connector mediante el operador, sigue estos 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
      # instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: cluster
     credentialSecretName: SECRET_NAME
    

    Reemplaza SECRET_NAME por el nombre del secreto que creaste antes.

  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

Para actualizar Config Connector, descarga e instala la versión más reciente 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

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?