Usa Workload Identity

En esta página, se explica cómo autenticar el servicio de Cloud Run for Anthos para usar las API de Google Cloud mediante la habilitación de Workload Identity.

A fin de usar las API de Google Cloud, como las API de Compute, Storage y Database, o las API de aprendizaje automático desde el clúster de GKE, debes tener permisos y autenticar tu servicio de Cloud Run for Anthos. Para ello, habilita Workload Identity y vincula una cuenta de servicio de Kubernetes con el propósito de que actúe como una cuenta de servicio de Google.

Habilita Workload Identity en tu clúster

Si deseas configurar Workload Identity con Cloud Run for Anthos, consulta las siguientes instrucciones para habilitarlo en tu clúster; de lo contrario, pasa a la siguiente sección:

Habilita Workload Identity en un clúster nuevo o Habilita Workload Identity en un clúster existente

Habilita métricas en un clúster con Workload Identity

Cuando habilitas Workload Identity, Cloud Run for Anthos no informa ciertas métricas, como el recuento de solicitudes de revisión o la latencia de las solicitudes, a Google Cloud's operations suite, pero continúa informando métricas de CPU y memoria.

A fin de habilitar todas las métricas, necesitas configurar de forma manual los permisos para escribir métricas en Cloud Monitoring. Con este propósito, otorga la función de escritor de métricas de Monitoring a la cuenta de servicio de Google (GSA) asociada con el servicio de Cloud Run for Anthos.

Otorga los permisos de la función de escritor de métricas de Monitoring a la GSA de tu servicio:

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \
--role=roles/monitoring.metricWriter

Reemplaza lo siguiente:

  • PROJECT_ID por el ID del proyecto de clúster que aloja tu KSA.
  • GSA_PROJECT por el ID del proyecto de una GSA que no está en el clúster. Puedes usar cualquier GSA de tu organización.

Para obtener más información, consulta Otorga, cambia y revoca el acceso a los recursos.

Vincula cuentas de servicio

Debes configurar una relación para una cuenta de servicio de Kubernetes (KSA) a fin de que actúe como una cuenta de servicio de Google (GSA). Cualquier carga de trabajo que se ejecute como KSA se autenticará de forma automática como la GSA cuando se acceda a las API de Google Cloud.

  1. Si no existe una cuenta de servicio de Kubernetes (KSA), crea una en el mismo espacio de nombres de Kubernetes que tu servicio de Cloud Run for Anthos. De lo contrario, continúa con el siguiente paso:

    kubectl create serviceaccount --namespace K8S_NAMESPACE KSA_NAME
  2. Crea una relación entre KSA y GSA, de modo que la carga de trabajo que se ejecuta como KSA se autentique de forma automática como GSA cuando se acceda a las API de Google Cloud:

    1. Autoriza a tu KSA para que actúe como GSA:

      gcloud iam service-accounts add-iam-policy-binding \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:PROJECT_ID.svc.id.goog[K8S_NAMESPACE/KSA_NAME]" \
      GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com
    2. Actualiza el clúster para aprovechar la vinculación:

      kubectl annotate serviceaccount \
      --namespace K8S_NAMESPACE \
       KSA_NAME \
       iam.gke.io/gcp-service-account=GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com

Implementa un servicio nuevo con una identidad nueva

Implementa tu servicio mediante la KSA que existe en el clúster y el espacio de nombres del servicio que deseas implementar. La cuenta de servicio puede pertenecer a un proyecto diferente al del clúster.

Console

  1. Ve a Cloud Run for Anthos en la consola de Google Cloud:

    Ir a Cloud Run for Anthos

  2. Haz clic en Crear servicio si quieres configurar un servicio nuevo en el que realizarás la implementación. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, haz clic en IMPLEMENTAR Y EDITAR UNA NUEVA REVISIÓN.

  3. En Configuración avanzada, haz clic en Contenedor.

    imagen

  4. Haz clic en el menú desplegable Service account (Cuenta de servicio) y selecciona la cuenta de servicio que deseas.

  5. Haz clic en Siguiente para pasar a la siguiente sección.

  6. En la sección Configura la forma en que se activa el servicio, selecciona la conectividad que deseas usar para invocar el servicio.

  7. Haz clic en Crear para implementar la imagen en Cloud Run for Anthos y espera a que termine la implementación.

Línea de comandos

  • Para servicios existentes, configura la cuenta de servicio del entorno de ejecución mediante la ejecución del comando gcloud run services update con los siguientes parámetros:

    gcloud run services update SERVICE --service-account SERVICE_ACCOUNT
    

    Reemplaza lo siguiente:

    • SERVICE por el nombre de tu servicio
    • SERVICE_ACCOUNT por la cuenta de servicio asociada con la identidad nueva
  • Para los servicios nuevos, configura la cuenta de servicio del entorno de ejecución mediante el comando gcloud run deploy con el parámetro --service-account:

    gcloud run deploy --image IMAGE_URL --service-account SERVICE_ACCOUNT
    

    Reemplaza lo siguiente:

    • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/myproject/my-image:latest
    • SERVICE_ACCOUNT por la cuenta de servicio asociada con la identidad nueva

YAML

Puedes descargar la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud beta run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de Cloud Run for Anthos.

  2. En tu archivo local, actualiza el atributo serviceAccountName::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: SERVICE_ACCOUNT

    Reemplazar

    • SERVICE por el nombre de tu servicio de Cloud Run for Anthos
    • SERVICE_ACCOUNT por la cuenta de servicio asociada con la identidad nueva
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml