Instalar en otras distribuciones de Kubernetes


En esta página se explica cómo instalar Config Connector en una distribución de Kubernetes que no sea Google Kubernetes Engine (GKE) en Google Cloud, como GKE en AWS.

Antes de empezar

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

Instalar 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 Gestión de Identidades y Accesos (IAM) y, a continuación, instala los componentes de Config Connector en tu clúster.

Crear un ClusterRoleBinding

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

Verifica que puedes crear roles ejecutando el siguiente comando:

kubectl auth can-i create roles

Si el resultado es yes, ve a la sección Crear una identidad.

Si el resultado es no, crea un ClusterRoleBinding en tu clúster, lo que te permitirá crear roles:

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

Sustituye ACCOUNT_EMAIL por el correo que usas para iniciar sesión en tu cuenta de facturación de Cloud.

El resultado debe contener la frase cluster-admin-binding created. Si no aparece esa frase, ponte en contacto con el administrador de tu cuenta de facturación de Cloud o de tu clúster de GKE para obtener información sobre los permisos.

Crear una identidad

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

En el siguiente conjunto de instrucciones, importarás una clave de Google Cloudcredenciales de cuenta de servicio en el clúster de Kubernetes. Importar credenciales de cuenta de servicio directamente a un clúster se considera una práctica poco segura, sobre todo si ejecutas cargas de trabajo de terceros o personalizadas en el mismo clúster. Este enfoque puede aprovechar las vulnerabilidades de escalada de nodos a clústeres e imitar la cuenta de servicio Google Cloud mediante este secreto. Si usas un clúster de GKE, te recomendamos que utilices Workload Identity Federation para GKE.

Creando una cuenta de servicio

Para crear una cuenta de servicio, sigue estos pasos:

  1. Crea una cuenta de servicio de IAM. Si ya tienes una cuenta de servicio, puedes usarla en lugar de crear una nueva.

    Usa la CLI de gcloud para crear la cuenta de servicio ejecutando el siguiente comando:

     gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    Sustituye SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio.

    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:

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

    Haz los cambios siguientes:

    • PROJECT_ID por el ID de tu proyecto. Google Cloud
    • SERVICE_ACCOUNT_NAME con 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
    

    Haz los cambios siguientes:

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

Aplicar las credenciales al clúster

Para aplicar las credenciales al clúster en el que quieras ejecutar Config Connector, sigue estos pasos:

  1. Crea el espacio de nombres cnrm-system:

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

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

    Sustituye SECRET_NAME por el nombre que quieras dar al secreto.

  3. Elimina las credenciales de tu sistema:

    rm key.json
    

Instalar el operador de Config Connector

Sigue estos pasos para instalar el operador de Config Connector:

  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:

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

Configurar Config Connector

Para configurar Config Connector con el operador, crea un archivo de configuración para el ConfigConnector CustomResource y, a continuación, aplícalo con el comando kubectl apply.

Para configurar Config Connector mediante el operador, sigue estos pasos:

  1. Copia el siguiente código 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
      stateIntoSpec: Absent
    

    Sustituye SECRET_NAME por el nombre del secreto que has creado anteriormente.

  2. Aplica la configuración al clúster con kubectl apply:

    kubectl apply -f configconnector.yaml
    

Especificar dónde crear los recursos

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

Antes de crear recursos con Config Connector, debes configurar dónde quieres crearlos. Para determinar dónde crear el recurso, Config Connector usa una anotación en la configuración del recurso o en un espacio de nombres. Para obtener más información, consulta el artículo sobre cómo organizar recursos.

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

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

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

Proyecto

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

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

Haz los cambios siguientes:

  • NAMESPACE con el nombre de tu 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

Haz los cambios siguientes:

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

Organización

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

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

Haz los cambios siguientes:

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

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

Verificar la instalación

Config Connector ejecuta todos sus componentes en un espacio de nombres llamado cnrm-system. Para comprobar que los pods están listos, ejecuta el siguiente comando:

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

Si Config Connector se ha instalado correctamente, el resultado será similar al siguiente:

pod/cnrm-controller-manager-0 condition met

Actualizar Config Connector

Para actualizar Config Connector, descarga e instala la versión más reciente del operador de Config Connector:

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

Desinstalar Config Connector

Usa kubectl delete para quitar los CRDs 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

Siguientes pasos