Paso 4: Crear cuentas de servicio

En este paso, se explica cómo crear las cuentas de servicio de Google Cloud necesarias para que Apigee Hybrid funcione.

Descripción general

Apigee Hybrid usa cuentas de servicio de Google Cloud para permitir que los componentes híbridos se comuniquen mediante llamadas a la API autorizadas.

Comparación entre los entornos de producción y los de no producción

En esta guía, se hace referencia a instalaciones de producción (“Prod.”) y No producción (“No prod.”). Una instalación de producción se ajusta para aumentar la capacidad de uso, el almacenamiento y la escalabilidad. Una instalación que no es de producción usa menos recursos y se usa principalmente con el fin de aprender y demostrar.

Cuando creas y configuras cuentas de servicio para Apigee Hybrid, es importante tener en cuenta el tipo de instalación al que te orientas.

En el caso de las instalaciones de producción, recomendamos crear una cuenta de servicio independiente para cada componente de Apigee Hybrid. Por ejemplo, el entorno de ejecución, mart, las métricas, udca, etcétera, obtienen su propia cuenta de servicio.

En el caso de las instalaciones que no son de producción, puedes crear una sola cuenta de servicio que se aplique a todos los componentes.

Para obtener más información sobre las cuentas de servicio que usa Apigee y las funciones que se les asignan, consulta Cuentas de servicio y funciones que usan los componentes híbridos.

Workload Identity en GKE

Para las instalaciones híbridas de Apigee en GKE, Google Cloud ofrece una opción llamada identidad de carga de trabajo para autenticar los componentes del entorno de ejecución híbrido. Esta opción no usa archivos de certificado descargados para autenticar las cuentas de servicio, sino que asocia las cuentas de servicio de Google Cloud que creas en este paso con las cuentas de servicio de Kubernetes en el clúster de Kubernetes.

Workload Identity solo está disponible en las instalaciones de GKE.

Crea las cuentas de servicio

Usa los siguientes procedimientos a fin de crear las cuentas de servicio de Google Cloud para tu instalación híbrida:

  • La herramienta de create-service-account: Si instalas Apigee Hybrid en una plataforma que no sea GKE o si instalas en GKE, pero no deseas usar Workload Identity, usa la herramienta que proporciona Apigee, create-service-account, para crear las cuentas de servicio, asignar los roles a las cuentas de servicio, y crear y descargar los archivos de claves de la cuenta de servicio en un solo comando. Sigue los procedimientos que se indican en
    Crea cuentas de servicio con create-service-account.
  • Consola de Google Cloud o gcloud: Si instalas Apigee Hybrid en GKE y planeas usar Workload Identity, usa la consola de Google Cloud o gcloud para crear cuentas de servicio sin descargar los archivos del certificado. Sigue los procedimientos que se describen en
    Crea cuentas de servicio en la consola de Google Cloud o con gcloud.

Crea cuentas de servicio mediante create-service-account

Usa la herramienta de create-service-account en las siguientes circunstancias:

  • Instalas en una plataforma que no es de GKE
  • Instalas en GKE, pero no planeas usar Workload Identity.

De lo contrario, ve a Crea cuentas de servicio en la consola de Google Cloud o con gcloud.

  1. Asegúrate de que las variables de entorno HYBRID_FILES y PROJECT_ID estén configuradas.

    PROJECT_ID debe configurarse como tu ID del proyecto de Google Cloud, porque la herramienta de create-service-account lee la variable de entorno PROJECT_ID para crear las cuentas de servicio en el proyecto correcto.

    echo $HYBRID_FILES
    echo $PROJECT_ID
  2. Crea la cuenta de servicio con el siguiente comando:

    No producción

    Con este comando, se crea una sola cuenta de servicio llamada apigee-non-prod para usarla en una instalación que no es de producción y se descarga el archivo de claves para la cuenta de servicio en el directorio $HYBRID_FILES/service-accounts.

    $HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts

    Producción

    Con este comando, se crean todas las cuentas de servicio individuales para una instalación de producción y se descargan los archivos de claves para las cuentas de servicio en el directorio $HYBRID_FILES/service-accounts.

    $HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts

    Cuando veas el siguiente mensaje, ingresa y:

    [INFO]: gcloud configured project ID is project_id.
     Enter: y to proceed with creating service account in project: project_id
     Enter: n to abort.
    

    Si es la primera vez que creas una cuenta de servicio en particular, la herramienta la creará sin más mensajes.

    Sin embargo, si ves el siguiente mensaje e instrucción, ingresa y para generar claves nuevas:

    [INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists.
    ...
     [INFO]: The service account might have keys associated with it. It is recommended to use existing keys.
     Press: y to generate new keys.(this does not deactivate existing keys)
     Press: n to skip generating new keys.
    
  3. Verifica que la clave de la cuenta de servicio se haya creado con el siguiente comando. Eres responsable de almacenar estas claves privadas de forma segura. Los nombres de los archivos de la clave tienen el prefijo del nombre de tu proyecto de Google Cloud.
    ls $HYBRID_FILES/service-accounts

    El resultado debería ser similar a lo siguiente:

    project_id-apigee-non-prod.json

Crea cuentas de servicio en la consola de Google Cloud o con gcloud

Si planeas usar Workload Identity en GKE para autenticar los componentes del entorno de ejecución híbrido, no necesitas crear y descargar archivos de certificado para las cuentas de servicio. Por lo tanto, no uses la herramienta de create-service-account. En su lugar, crea las cuentas de servicio en la consola de Google Cloud o con la API de IAM en gcloud.

De lo contrario, ve a Crea cuentas de servicio mediante create-service-account.

Consola

Sigue las instrucciones que se encuentran en Crea cuentas de servicio para crear las siguientes cuentas de servicio y asignarles los siguientes roles:

No producción

Para instalaciones que no son de producción:

Nombre de la cuenta de servicio Roles de IAM
apigee-non-prod
  • Agente de Apigee Analytics
  • Agente de Apigee Connect
  • Agente del entorno de ejecución de Apigee
  • Administrador de Apigee Synchronizer
  • Escritor de registros
  • Escritor de métricas de Monitoring
  • Administrador de objetos de Storage

Producción

Para instalaciones de producción:

Instalaciones de producción
Nombre de la cuenta de servicio Roles de IAM
apigee-cassandra Administrador de objetos de Storage
apigee-logger Escritor de registros
apigee-mart Agente de Apigee Connect
apigee-metrics Escritor de métricas de Monitoring
apigee-runtime No se requiere una función
apigee-synchronizer Administrador de Apigee Synchronizer
apigee-udca Agente de Apigee Analytics
apigee-watcher Agente del entorno de ejecución de Apigee

gcloud

Usa los siguientes comandos para crear las cuentas de servicio y asignar los roles de IAM.

No producción

Para instalaciones que no son de producción:

  1. Crea la cuenta de servicio apigee-non-prod:
    gcloud iam service-accounts create apigee-non-prod \
      --display-name="apigee-non-prod" \
      --project=$PROJECT_ID
  2. Otorga roles de IAM a la cuenta de servicio:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"
  3. Verifica las vinculaciones de roles:
    gcloud projects get-iam-policy ${PROJECT_ID} \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"

Producción

Para instalaciones de producción:

Usa los siguientes comandos para crear cada cuenta de servicio y asignarle la función de IAM correspondiente.

  1. Cuenta de servicio apigee-cassandra:
    gcloud iam service-accounts create apigee-cassandra \
      --display-name="apigee-cassandra" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
  2. Cuenta de servicio apigee-logger:
    gcloud iam service-accounts create apigee-logger \
      --display-name="apigee-logger" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  3. Cuenta de servicio apigee-mart:
    gcloud iam service-accounts create apigee-mart \
      --display-name="apigee-mart" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
  4. Cuenta de servicio apigee-metrics:
    gcloud iam service-accounts create apigee-metrics \
      --display-name="apigee-metrics" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  5. Cuenta de servicio apigee-runtime:
    gcloud iam service-accounts create apigee-runtime \
      --display-name="apigee-runtime" \
      --project=$PROJECT_ID
  6. Cuenta de servicio apigee-synchronizer:
    gcloud iam service-accounts create apigee-synchronizer \
      --display-name="apigee-synchronizer" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
  7. Cuenta de servicio apigee-udca:
    gcloud iam service-accounts create apigee-udca \
      --display-name="apigee-udca" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
  8. Cuenta de servicio apigee-watcher:
    gcloud iam service-accounts create apigee-watcher \
      --display-name="apigee-watcher" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"

Para obtener más información sobre cómo crear cuentas de servicio con gcloud, consulta Crea cuentas de servicio.

Ya creaste cuentas de servicio y asignaste las funciones que necesitan los componentes híbridos de Apigee. A continuación, crea los certificados TLS que requiere la puerta de enlace de entrada híbrida.

Próximo paso

1 2 3 4 (SIGUIENTE) Paso 5: Crea certificados TLS 6 7 8 9 10