Paso 8: Habilita el acceso al plano de control

Para que el plano de tiempo de ejecución y el plano de control puedan comunicarse, debes habilitar los permisos necesarios para el acceso de Synchronizer y del editor de analíticas con la API updateControlPlaneAccess.

Obtener un token de autorización

Para hacer las llamadas a la API de Apigee que se describen más adelante en este tema, debes obtener un token de autorización que tenga el rol de administrador de la organización de Apigee.

  1. Si no eres el propietario del proyecto de Google Cloud asociado a tu organización de Apigee hybrid, asegúrate de que tu cuenta de usuario de Google Cloud tenga el rol roles/apigee.admin (administrador de la organización de Apigee). Puedes consultar los roles que tienes asignados con este comando:
    gcloud projects get-iam-policy ${PROJECT_ID}  \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:your_account_email"
    

    Por ejemplo:

    gcloud projects get-iam-policy my-project  \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:myusername@example.com"

    El resultado debe incluir roles/apigee.admin.

  2. Si no tienes roles/apigee.admin, añade el rol Administrador de organización de Apigee a tu cuenta de usuario. Usa el siguiente comando para añadir el rol a tu cuenta de usuario:
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
      --member user:your_account_email \
      --role roles/apigee.admin

    Por ejemplo:

    gcloud projects add-iam-policy-binding my-project \
      --member user:myusername@example.com \
      --role roles/apigee.admin
  3. En la línea de comandos, obtén tus credenciales de autenticación de gcloud con el siguiente comando:

    Linux o macOS

    export TOKEN=$(gcloud auth print-access-token)

    Para comprobar que se ha rellenado el token, usa echo, como se muestra en el siguiente ejemplo:

    echo $TOKEN

    Debería mostrar tu token como una cadena codificada.

    Windows

    for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a

    Para comprobar que se ha rellenado el token, usa echo, como se muestra en el siguiente ejemplo:

    echo %TOKEN%

    Debería mostrar tu token como una cadena codificada.

Habilitar el acceso del sincronizador

Para habilitar el acceso del sincronizador, sigue estos pasos:

  1. Obtén la dirección de correo de la cuenta de servicio a la que vas a conceder acceso de sincronizador. En los entornos de producción, debe ser apigee-synchronizer. En los entornos que no sean de producción, debe ser apigee-non-prod. Usa el siguiente comando:

    Producción

    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-synchronizer"

    Fuera de producción

    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-non-prod"
  2. Llama a la API updateControlPlaneAccess para habilitar los permisos necesarios para el sincronizador con el siguiente comando:

    Sin residencia de datos

    curl -X PATCH -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess?update_mask=synchronizer_identities" \
      -d "{\"synchronizer_identities\": [\"serviceAccount:apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com\"]}"
    

    Donde:

    • ${ORG_NAME}: nombre de tu organización híbrida.
    • apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com: la dirección de correo de la cuenta de servicio.

    Residencia de datos

    curl -X PATCH -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess?update_mask=synchronizer_identities" \
      -d "{\"synchronizer_identities\": [\"serviceAccount:apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com\"]}"
    

    Donde:

    • CONTROL_PLANE_LOCATION: la ubicación de los datos del plano de control si tu instalación híbrida usa la residencia de datos. Es la ubicación en la que se almacena el contenido principal del cliente, como los paquetes proxy. Para ver una lista, consulta Regiones disponibles del plano de control de la API de Apigee.
    • ${ORG_NAME}: el nombre de tu organización híbrida.
    • apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com: la dirección de correo de la cuenta de servicio.
  3. Para verificar que se ha configurado la cuenta de servicio, usa el siguiente comando para llamar a la API y obtener una lista de cuentas de servicio:

    Sin residencia de datos

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess"
        

    Residencia de datos

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess"
        

    La salida debería ser similar a la siguiente:

    {
      "synchronizerIdentities": [
        "serviceAccount:apigee-synchronizer@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ]
    }

Habilitar el acceso de editor de Analytics

Varios componentes del tiempo de ejecución de Apigee hybrid publican registros de analíticas y de depuración para proporcionar información sobre informes y depuración. Para habilitar la publicación de estos datos, debe conceder permisos adicionales a las cuentas de servicio que ejecutan estos componentes de Apigee para que puedan publicar datos directamente en el plano de control.

Para habilitar el acceso de editores a las analíticas, siga estos pasos:

  1. Obtén la dirección de correo de las cuentas de servicio a las que vas a conceder acceso de editor de Analytics. En los entornos de producción, deben ser apigee-runtime, apigee-mart y apigee-mint-task-scheduler (si habilitas Monetización para Apigee Hybrid). En los entornos que no sean de producción, debe ser apigee-non-prod.

    Producción

    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-runtime OR apigee-mart OR apigee-mint-task-scheduler"

    Fuera de producción

    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-non-prod"
  2. Define los permisos de las cuentas de servicio de los componentes de tiempo de ejecución, MART y programador de tareas de mint (si vas a habilitar Monetización para Apigee hybrid en la versión v1.15.1 o posterior) para publicar datos en el plano de control con el siguiente comando:

    Sin residencia de datos

    Llama a la API updateControlPlaneAccess para habilitar los permisos de las cuentas de servicio de tiempo de ejecución y MART:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
    

    Si vas a habilitar la monetización en Apigee hybrid, define los permisos de la cuenta de servicio del programador de tareas de Mint:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\"]}"
    

    Donde los siguientes son las direcciones de correo de las cuentas de servicio:

    • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
    • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
    • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com

    Residencia de datos

    Llama a la API updateControlPlaneAccess para habilitar los permisos de las cuentas de servicio de tiempo de ejecución y MART:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
    

    Si vas a habilitar la monetización en Apigee hybrid, define los permisos de la cuenta de servicio del programador de tareas de Mint:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\"]}"
    

    Donde:

    • CONTROL_PLANE_LOCATION es la ubicación de los datos del plano de control si tu instalación híbrida usa la residencia de datos. Es la ubicación en la que se almacena el contenido principal del cliente, como los paquetes proxy. Para ver una lista, consulta Regiones disponibles del plano de control de la API de Apigee.
    • Estas son las direcciones de correo de las cuentas de servicio:

      • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com

    La respuesta debería ser similar a la siguiente:

    {
      "name": "organizations/YOUR_ORG_NAME/operations/8316aa78-c137-4733-92ec-cc0d2d92fd29",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "UPDATE",
        "targetResourceName": "organizations/YOUR_ORG_NAME/controlPlaneAccess",
        "state": "IN_PROGRESS"
      }
    }
    
  3. Verifica el estado de la operación mediante el identificador del campo name de la respuesta de actualización:

    Sin residencia de datos

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
      -H "Content-Type:application/json"  \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/$OPERATION_ID"

    Residencia de datos

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
      -H "Content-Type:application/json"  \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/$OPERATION_ID"

    La respuesta debería tener el siguiente aspecto:

    {
      "name": "organizations/YOUR_ORG_NAME/operations/$OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "UPDATE",
        "targetResourceName": "organizations/YOUR_ORG_NAME/controlPlaneAccess",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.ControlPlaneAccess",
        "name": "organizations/YOUR_ORG_NAME/controlPlaneAccess"
      }
    }
    
  4. Verifica la configuración de ControlPlaneAccess de la organización:

    Sin residencia de datos

    curl "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"

    Residencia de datos

    curl "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"

    La respuesta debería tener el siguiente aspecto:

    {
      "synchronizerIdentities": [
        "serviceAccount:apigee-synchronizer@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ],
      "analyticsPublisherIdentities": [
        "serviceAccount:apigee-mart@YOUR_ORG_NAME.iam.gserviceaccount.com",
        "serviceAccount:apigee-mint-task-scheduler@YOUR_ORG_NAME.iam.gserviceaccount.com",
        "serviceAccount:apigee-runtime@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ]
    }
    

Ahora, los planos de gestión y de entorno de ejecución de Apigee Hybrid pueden comunicarse. A continuación, instala cert-manager para que Apigee hybrid pueda interpretar y gestionar certificados.

Paso siguiente

1 2 3 4 5 6 7 8 (NEXT) Paso 9: Instala cert-manager 10 11