Paso 4: Crear cuentas de servicio

Descripción general

En este paso, se explica cómo crear las cuentas de servicio de Google Cloud necesarias para que Apigee Hybrid funcione y se les asignen los roles de IAM adecuados.

En este procedimiento, se usan las siguientes dos variables de entorno definidas en el Paso 2: Descarga los gráficos de Helm para Apigee. Estas variables son opcionales. Si no las definiste, sustituye la ruta de acceso del directorio adecuada para cada variable en las muestras de código.

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, mint, udca, etcétera, cada componente tiene una cuenta de servicio dedicada.

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 los roles que se les asignan, consulta Cuentas de servicio y funciones que usan los componentes híbridos.

Autentica cuentas de servicio

Apigee hybrid admite los siguientes métodos de autenticación de cuentas de servicio de Google:

  • Secretos de Kubernetes
  • Archivos de claves JSON de cuentas de servicio ("archivos JSON" en las pestañas de selección de la siguiente sección)
  • Vault
  • Federación de identidades para cargas de trabajo para GKE (“WIF para GKE” en las pestañas de selección de la siguiente sección)
  • Federación de identidades para cargas de trabajo en otras plataformas ("WIF en otras plataformas" en las pestañas de selección de la siguiente sección)

En la siguiente sección, elige el procedimiento para el tipo de autenticación que planeas usar.

Crea las cuentas de servicio

Apigee Hybrid usa las siguientes cuentas de servicio:

Producción

Cuenta de servicio Roles de IAM Gráfico de Helm para Apigee
apigee-cassandra Administrador de objetos de Storage apigee-datastore
apigee-logger Escritor de registros apigee-telemetry
apigee-mart Agente de Apigee Connect apigee-org
apigee-metrics Escritor de métricas de Monitoring apigee-telemetry
apigee-mint-task-scheduler
(Obligatorio solo si usas la Monetización de Apigee Hybrid)
No se requiere una función apigee-org
apigee-runtime No se requiere una función apigee-env
apigee-synchronizer Administrador de objetos de almacenamiento
Administrador de Apigee Synchronizer
apigee-env
apigee-udca Agente de estadísticas de Apigee apigee-org
apigee-env
apigee-watcher Agente del entorno de ejecución de Apigee apigee-org

No producción

Cuenta de servicio Roles de IAM Gráfico de Helm para Apigee
apigee-non-prod Administrador de objetos de almacenamiento
Escritor de registros
Agente de Apigee Connect
Escritor de métricas de Monitoring
Administrador de Apigee Synchronizer
Apigee Agente de estadísticas
Agente del entorno de ejecución de Apigee
apigee-datastore
apigee-telemetry
apigee-org
apigee-env

La herramienta create-service-account

Apigee proporciona una herramienta, create-service-account, en el directorio apigee-operator/etc/tools:

$APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account

Esta herramienta crea las cuentas de servicio, asigna los roles de IAM a cada cuenta y descarga los archivos de certificado en formato JSON para cada cuenta.

Verifica que puedas ejecutar create-service-account. Si acabas de descargar los gráficos, es posible que el archivo create-service-account no esté en un modo ejecutable. En tu directorio APIGEE_HELM_CHARTS_HOME, ejecuta el siguiente comando:

$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --help

Si el resultado indica permission denied, debes hacer que el archivo sea ejecutable, por ejemplo, con chmod en Linux, MacOS o UNIX, o en Windows Explorer o con el comando icacls en Windows. Por ejemplo:

chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account

Crea las cuentas de servicio

Elige el procedimiento para el método de autenticación de la cuenta de servicio que planeas usar en tu instalación. Para obtener más información, consulta Métodos de autenticación de cuentas de servicio en Apigee Hybrid.

Secretos de Kubernetes

Para preparar los archivos de claves de la cuenta de servicio para almacenarlos en objetos Secret de Kubernetes, puedes usar la herramienta create-service-account para crear los archivos de claves de la cuenta de servicio con la marca --dir para crear un directorio para los archivos de claves.

Producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definido, defínelo con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID al comando create-service-account.

  2. Crea las cuentas de servicio con los siguientes comandos, en los que $APIGEE_HELM_CHARTS_HOME es la ruta en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear cada cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Para verificar que se crearon los archivos de la cuenta de servicio, revisa el contenido del directorio service-accounts. Deberías obtener un resultado similar al siguiente:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json

No producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definido, defínelo con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID al comando create-service-account.

  2. Crea las cuentas de servicio con el siguiente comando, en el que $APIGEE_HELM_CHARTS_HOME es la ruta de acceso en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear la cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Verifica que se haya creado el archivo de la cuenta de servicio. Para ello, revisa el contenido del directorio service-accounts. Deberías obtener un resultado similar al siguiente:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

Archivos JSON

Debido a que Helm no admite archivos de referencia fuera del directorio del gráfico, crearás cada archivo de certificado de cuenta de servicio en el directorio del gráfico para el componente híbrido correspondiente.

En los pasos siguientes, elige si configurarás una instalación de producción o de no producción.

Producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definida, defínela con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID a los comandos create-service-account.

  2. Crea las cuentas de servicio con los siguientes comandos, en los que $APIGEE_HELM_CHARTS_HOME es la ruta en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear cada cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-cassandra \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-logger \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-mart \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-metrics \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-runtime \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-synchronizer \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-watcher \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org

    Si habilitas la monetización para Apigee Hybrid (Apigee Hybrid v1.15.1 y versiones posteriores), haz lo siguiente:

    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-mint-task-scheduler \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
  3. Copia el archivo JSON apigee-udca en el directorio del chart apigee-env. Se necesita para las operaciones a nivel de la organización y del entorno.
    cp $APIGEE_HELM_CHARTS_HOME/apigee-org/$PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
  4. Para verificar que los archivos de la cuenta de servicio se hayan creado en los directorios correctos, verifica el contenido del directorio de cada gráfico. Deberías obtener un resultado similar al siguiente:
    ls ./apigee-datastore
    Chart.yaml  my-project-apigee-cassandra.json  templates  values.yaml
    
    ls ./apigee-telemetry
    Chart.yaml                     my-project-apigee-metrics.json  values.yaml
    my-project-apigee-logger.json  templates
    
    ls ./apigee-org
    Chart.yaml                                  my-project-apigee-udca.json
    my-project-apigee-mart.json                 my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json  values.yaml
    
    ls ./apigee-env
    Chart.yaml                      my-project-apigee-synchronizer.json  templates
    my-project-apigee-runtime.json  my-project-apigee-udca.json          values.yaml
    

No producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definida, defínela con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID a los comandos create-service-account.

  2. Crea la cuenta de servicio con el siguiente comando, en el que $APIGEE_HELM_CHARTS_HOME es la ruta de acceso en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear cada cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
  3. Verifica el nombre del archivo de la cuenta de servicio creado en el directorio apigee-datastore:
    ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    Chart.yaml  PROJECT_ID-apigee-non-prod.json  templates  values.yaml
  4. Copia el archivo de la cuenta de servicio en los otros directorios del gráfico que deberán hacer referencia a él:
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-org/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-env/

Vault

Para preparar los archivos de claves de la cuenta de servicio que se almacenarán en Vault, puedes usar la herramienta create-service-account para crear los archivos de claves de la cuenta de servicio con la marca --dir y crear un directorio para los archivos de claves.

Producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definido, defínelo con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID al comando create-service-account.

  2. Crea las cuentas de servicio con los siguientes comandos, en los que $APIGEE_HELM_CHARTS_HOME es la ruta en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear cada cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Para verificar que los archivos de la cuenta de servicio se hayan creado, verifica el contenido del directorio service-accounts. Deberías obtener un resultado similar al siguiente:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json
    

No producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definido, defínelo con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID al comando create-service-account.

  2. Crea las cuentas de servicio con el siguiente comando, en el que $APIGEE_HELM_CHARTS_HOME es la ruta de acceso en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear la cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Para verificar que se haya creado el archivo de la cuenta de servicio, revisa el contenido del directorio service-accounts. Deberías obtener un resultado similar al siguiente:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

WIF para GKE

Crea las cuentas de servicio para tu instalación con los siguientes comandos:

Producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definido, defínelo con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID al comando create-service-account.

  2. Crea las cuentas de servicio con los siguientes comandos, en los que $APIGEE_HELM_CHARTS_HOME es la ruta en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear cada cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Verifica la creación de las cuentas de servicio de Google con el siguiente comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    El resultado debería ser similar al siguiente:

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@my-project.iam.gserviceaccount.com            False
    apigee-mart                 apigee-mart@my-project.iam.gserviceaccount.com                 False
    apigee-metrics              apigee-metrics@my-project.iam.gserviceaccount.com              False
    apigee-mint-task-scheduler  apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com  False
    apigee-runtime              apigee-runtime@my-project.iam.gserviceaccount.com              False
    apigee-synchronizer         apigee-synchronizer@my-project.iam.gserviceaccount.com         False
    apigee-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

No producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definido, defínelo con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID al comando create-service-account.

  2. Crea las cuentas de servicio con el siguiente comando, en el que $APIGEE_HELM_CHARTS_HOME es la ruta de acceso en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear la cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Verifica la creación de las cuentas de servicio de Google con el siguiente comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    El resultado debería ser similar al siguiente:

    DISPLAY NAME         EMAIL                                                   DISABLED
    apigee-non-prod      apigee-non-prod@my-project.iam.gserviceaccount.com      False
    

Opcional: No necesitarás los archivos de claves de la cuenta de servicio para Workload Identity Federation for GKE. Puedes borrar el directorio service-accounts cuando termines.

WIF en otras plataformas

Crea las cuentas de servicio para tu instalación con los siguientes comandos:

Producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definido, defínelo con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID al comando create-service-account.

  2. Crea las cuentas de servicio con los siguientes comandos, en los que $APIGEE_HELM_CHARTS_HOME es la ruta en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear cada cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Verifica la creación de las cuentas de servicio de Google con el siguiente comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    El resultado debería ser similar al siguiente:

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@my-project.iam.gserviceaccount.com            False
    apigee-mart                 apigee-mart@my-project.iam.gserviceaccount.com                 False
    apigee-metrics              apigee-metrics@my-project.iam.gserviceaccount.com              False
    apigee-mint-task-scheduler  apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com  False
    apigee-runtime              apigee-runtime@my-project.iam.gserviceaccount.com              False
    apigee-synchronizer         apigee-synchronizer@my-project.iam.gserviceaccount.com         False
    apigee-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

No producción

  1. Asegúrate de que la variable de entorno PROJECT_ID esté definida.
    echo $PROJECT_ID

    El tipo create-service-account tool uses the value of thePROJECT_ID environment variable . Si no está definido, defínelo con el ID de tu proyecto de Google Cloud o agrega la marca --project-id PROJECT_ID al comando create-service-account.

  2. Crea las cuentas de servicio con el siguiente comando, en el que $APIGEE_HELM_CHARTS_HOME es la ruta de acceso en la que descargaste los gráficos de Helm para Apigee. Es posible que se te solicite crear la cuenta de servicio. Responde con y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Verifica la creación de las cuentas de servicio de Google con el siguiente comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    El resultado debería ser similar al siguiente:

    DISPLAY NAME         EMAIL                                                   DISABLED
    apigee-non-prod      apigee-non-prod@my-project.iam.gserviceaccount.com      False
    

Opcional: No necesitarás los archivos de claves de la cuenta de servicio para Workload Identity Federation for GKE. Puedes borrar el directorio service-accounts cuando termines.

Para obtener más información sobre las cuentas de servicio y la herramienta de create-service-account, consulta lo siguiente:

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: Configura la autenticación de la cuenta de servicio 6 7 8 9 10 11