Otorga acceso al Sincronizador de configuración a tu imagen de OCI o repositorio de Helm

En esta página, se describe cómo autenticar el Sincronizador de configuración en tu imagen de OCI o repositorio de Helm. El Sincronizador de configuración requiere acceso de solo lectura a tu fuente de información para que pueda leer tus configuraciones, aplicarlas a tus clústeres y mantenerlas sincronizadas.

Elige un método de autenticación

El método de autenticación que uses dependerá de lo que se admita para tu tipo de fuente.

En la siguiente tabla, se resumen los métodos de autenticación que puedes usar con Sincronizador de configuración:

Método Fuentes admitidas Descripción Limitaciones
Sin autenticación Git, OCI y Helm No se requiere ninguna configuración adicional. Solo funciona si tu fuente de referencia es pública.
Par de claves SSH Git Es compatible con la mayoría de los proveedores de Git. Requiere administración de claves. No es compatible con OCI ni Helm.
token Git y Helm Es compatible con la mayoría de los proveedores de Git. Es una buena alternativa si tu organización no permite el uso de claves SSH. Admite el nombre de usuario y la contraseña para Helm. Requiere administración de tokens. Los tokens pueden vencer. No es compatible con OCI.
Cuenta de servicio de Kubernetes OCI, Helm Usa IAM para otorgar acceso a Artifact Registry directamente a una cuenta de servicio de Kubernetes. Requiere que Workload Identity Federation for GKE esté habilitada en tu clúster. No es compatible con Git.
Cuenta de servicio de Google Git Usa IAM, lo que evita almacenar credenciales en Secrets de Kubernetes. Se recomienda para Secure Source Manager y Cloud Source Repositories. Requiere que Workload Identity Federation for GKE esté habilitada en tu clúster. Requiere configuración antes y después de instalar el Sincronizador de configuración en tus clústeres. No se admite para los repositorios alojados fuera de Secure Source Manager o Cloud Source Repositories.
App de GitHub Git Integración directa con GitHub Permite permisos detallados. Solo se admite para los repositorios alojados en GitHub. Solo se admite en la versión 1.19.1 y posteriores del Sincronizador de configuración.

El Sincronizador de configuración también admite los siguientes métodos de autenticación. Sin embargo, estos métodos solo se recomiendan si no puedes usar una de las opciones que se indican en la tabla anterior:

  • cookiefile: Es posible que no se admita para todos los proveedores de Git. No es compatible con OCI ni Helm.
  • Cuenta de servicio predeterminada de Compute Engine (gcenode): No se recomienda porque este método solo funciona si la federación de identidades para cargas de trabajo para GKE está inhabilitada. Compatible con Git, OCI y Helm.
  • Cuenta de servicio de Google para Helm y OCI: Se admite, pero no se recomienda porque el método de la cuenta de servicio de Kubernetes requiere menos configuración.

Antes de comenzar

Antes de otorgar acceso de solo lectura al Sincronizador de configuración a tu fuente de información, completa las siguientes tareas:

Otorga acceso a una imagen de OCI

En esta sección, se describe cómo otorgar acceso de solo lectura al Sincronizador de configuración a imágenes de OCI con un método de autenticación compatible.

Debes almacenar imágenes de OCI en Artifact Registry para autenticarte en Sincronizador de configuración.

Usa una cuenta de servicio de Kubernetes

Para autenticarte con una cuenta de servicio de Kubernetes, tu clúster debe tener habilitada la federación de identidades para cargas de trabajo para GKE o la federación de identidades para cargas de trabajo de la flota para GKE.

Para otorgar acceso de solo lectura al Sincronizador de configuración a tu imagen de OCI con una cuenta de servicio de Kubernetes, completa los siguientes pasos:

  1. Para obtener los permisos que necesitas para crear una vinculación de política, pídele a tu administrador que te otorgue el rol de IAM de administrador de cuentas de servicio (roles/iam.serviceAccountAdmin) en la cuenta de servicio. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

  2. Otorga el rol de IAM de lector de Artifact Registry (roles/artifactregistry.reader) a la cuenta de servicio de Kubernetes que incluye el grupo de Workload Identity Federation for GKE:

    • Otorga permisos en todo el proyecto si los mismos permisos se aplican a todos los repositorios del proyecto.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Otorga permisos específicos del repositorio cuando desees que las cuentas de servicio tengan diferentes niveles de acceso para cada repositorio del proyecto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • FLEET_HOST_PROJECT_ID: Si usas Workload Identity Federation for GKE, este valor es el mismo que el ID del proyecto. Si usas Workload Identity Federation for GKE para flota, este valor es el ID del proyecto de la flota en la que está registrado tu clúster.
    • REPOSITORY: Es el ID de la imagen.
    • LOCATION: la ubicación regional o multirregional del repositorio.

Cuando instales Sincronizador de configuración, usa la cuenta de servicio de Kubernetes (k8sserviceaccount) como el tipo de autenticación.

Usa una cuenta de servicio predeterminada de Compute Engine

Como alternativa a una cuenta de servicio de Google, si no tienes habilitada la federación de Workload Identity para GKE, puedes usar una cuenta de servicio de Compute Engine para la autenticación.

Para usar una cuenta de servicio predeterminada de Compute Engine y otorgar acceso de solo lectura del Sincronizador de configuración a tu repositorio, otorga permiso de lectura a la cuenta de servicio de Compute Engine para Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

Reemplaza lo siguiente:

  • PROJECT_ID: El ID de tu proyecto
  • PROJECT_NUMBER: Es el número de tu proyecto.

Cuando instales Sincronizador de configuración, usa la cuenta de servicio de Compute Engine (gcenode) como el tipo de autenticación.

Otorga acceso a un repositorio de Helm

En esta sección, se describe cómo otorgar acceso de solo lectura al Sincronizador de configuración a los gráficos de Helm almacenados en un repositorio.

Cómo usar un token

Para usar un token y otorgar acceso de solo lectura al Sincronizador de configuración a tu repositorio de Helm, crea un Secret que use el nombre de usuario y la contraseña de tu repositorio de Helm:

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

Reemplaza lo siguiente:

  • SECRET_NAME: Es el nombre del Secret.
  • USERNAME: Es tu nombre de usuario del repositorio de Helm.
  • PASSWORD: Es la contraseña de tu repositorio de Helm.

Cuando instales el Sincronizador de configuración, usa el token (token) como el tipo de autenticación. También debes especificar el nombre del Secret en el campo spec.helm.secretRef.name.

Usa una cuenta de servicio de Kubernetes

Para autenticarte con una cuenta de servicio de Kubernetes, debes cumplir con los siguientes requisitos:

Para usar una cuenta de servicio de Kubernetes y otorgar acceso de solo lectura al Sincronizador de configuración a tu repositorio de Helm, completa los siguientes pasos:

  1. Para obtener los permisos que necesitas para crear una vinculación de política, pídele a tu administrador que te otorgue el rol de IAM de administrador de cuentas de servicio (roles/iam.serviceAccountAdmin) en la cuenta de servicio. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

  2. Para usar una cuenta de servicio de Kubernetes y otorgar acceso de solo lectura a Sincronizador de configuración a tu repositorio de Helm, otorga el rol de IAM de lector de Artifact Registry (roles/artifactregistry.reader) a la cuenta de servicio de Kubernetes que incluye el grupo de Workload Identity Federation for GKE:

    • Otorga permisos en todo el proyecto si los mismos permisos se aplican a todos los repositorios del proyecto.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
      
    • Otorga permisos específicos del repositorio cuando desees que las cuentas de servicio tengan diferentes niveles de acceso para cada repositorio del proyecto.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto
    • FLEET_HOST_PROJECT_ID: Si usas Workload Identity Federation for GKE, este valor es el mismo que el ID del proyecto. Si usas Workload Identity Federation for GKE para flota, este valor es el ID del proyecto de la flota en la que está registrado tu clúster.
    • REPOSITORY: Es el ID de la imagen.
    • LOCATION: la ubicación regional o multirregional del repositorio.

Cuando instales Sincronizador de configuración, usa la cuenta de servicio de Kubernetes (k8sserviceaccount) como el tipo de autenticación.

Usa una cuenta de servicio predeterminada de Compute Engine

Como alternativa a una cuenta de servicio de Google, si no tienes habilitada la federación de Workload Identity para GKE, puedes usar una cuenta de servicio de Compute Engine para la autenticación.

Para usar una cuenta de servicio predeterminada de Compute Engine y otorgar acceso de solo lectura del Sincronizador de configuración a tu repositorio, otorga permiso de lectura a la cuenta de servicio de Compute Engine para Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/artifactregistry.reader

Reemplaza lo siguiente:

  • PROJECT_ID: El ID de tu proyecto
  • PROJECT_NUMBER: Es el número de tu proyecto.

Cuando instales Sincronizador de configuración, usa la cuenta de servicio de Compute Engine (gcenode) como el tipo de autenticación.

¿Qué sigue?