Habilita la monetización para Apigee Hybrid

Descripción general

En este documento, se describen los procedimientos para habilitar las tarifas recurrentes, de recarga y de configuración para la función de Monetización de Apigee en organizaciones híbridas.

Requisitos previos

Procedimiento

Para habilitar las comisiones recurrentes, de recarga y de configuración para la monetización de Apigee Hybrid, debes crear y configurar la cuenta de servicio de Google apigee-mint-task-scheduler y otorgarle acceso a la canalización de datos de Pub/Sub.

  1. Si aún no descargaste la versión 1.15.1 de los gráficos de Helm, extrae los gráficos de Helm con los siguientes comandos:

    En el directorio $APIGEE_HELM_CHARTS_HOME, usa el comando pull para copiar todos los gráficos de Helm de Apigee Hybrid en tu almacenamiento local:

    export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
    export CHART_VERSION=1.15.1
    helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
    
  2. Crea la cuenta de servicio apigee-mint-task-scheduler.

    Si aún no creaste la cuenta de servicio apigee-mint-task-scheduler, créala ahora con la herramienta create-service-account. Consulta el Paso 4: Crea cuentas de servicio para obtener información sobre cómo crear cuentas de servicio como parte de una instalación híbrida nueva.

    1. Ubica la herramienta create-service-account en el directorio $APIGEE_HELM_CHARTS_HOME:
      $APIGEE_HELM_CHARTS_HOME/
          └── apigee-operator/
              └── etc/
                  └── tools/
                      └── create-service-account

      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
    2. Crea la cuenta de servicio apigee-mint-task-scheduler y almacena el archivo de certificación descargado en el directorio del gráfico apigee-org con el siguiente comando:
      $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. Habilita el acceso al plano de control para las cuentas de servicio apigee-mart y apigee-mint-task-scheduler.

    Si aún no habilitaste el acceso al plano de control para las cuentas de servicio apigee-mart y apigee-mint-task-scheduler, hazlo ahora con los siguientes pasos. Consulta Paso 7: Habilita el acceso al plano de control para obtener información sobre cómo habilitar el acceso al plano de control como parte de una instalación híbrida nueva.

    1. Si no eres el propietario del proyecto de Google Cloud asociado a tu organización híbrida de Apigee, 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 verificar las funciones que se te asignaron con este comando:
      gcloud projects get-iam-policy ${PROJECT_ID}  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:your_account_email"
      

      Si el resultado no incluye roles/apigee.admin, consulta el paso 7: Habilita el acceso al plano de control para conocer los pasos para agregar el rol o pedirle a un usuario que tenga el rol que realice este paso.

    2. Llama a la API de updateControlPlaneAccess para habilitar los permisos requeridos con el siguiente comando:

      Sin residencia de datos

      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-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
      

      Donde las siguientes son las direcciones de correo electrónico 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 los datos

      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-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
      

      Aquí:

      • CONTROL_PLANE_LOCATION es la ubicación de los datos del plano de control si la instalación híbrida usa la residencia de datos. Esta es la ubicación donde se almacena el contenido principal del cliente, como los paquetes de proxy. Para obtener una lista, consulta Regiones del plano de control de la API de Apigee disponibles
      • Las siguientes son las direcciones de correo electrónico 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
    3. Verifica el acceso al plano de control para las cuentas de servicio apigee-mart y apigee-mint-task-scheduler.

      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/controlPlaneAccess"

      Residencia de los 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/controlPlaneAccess"

      Tu resultado debe incluir las cuentas de servicio apigee-mart, apigee-mint-task-scheduler y apigee-runtime, similares a las siguientes:

      {
        "synchronizerIdentities": [
          "serviceAccount:apigee-synchronizer@$ORG_NAME.iam.gserviceaccount.com"
        ],
        "analyticsPublisherIdentities": [
          "serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com",
          "serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com",
          "serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com"
        ]
      }
  4. Agrega las estrofas específicas de la monetización a tu archivo overrides.yaml.

    Agrega las siguientes estrofas a tu archivo overrides.yaml:

    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.15.1" #must be 1.15.1 or higher.
    
    mintTaskScheduler:
      # if using stored SA cert files:
      serviceAccountPath: MINT_TASK_SCHEDULER_SA_CERT_FILE.json
      # if using stored Kubernetes secrets:
      serviceAccountRef: MINT_TASK_SCHEDULER_SA_K8S_SECRET
      # if using Workload Identity on GKE:
      gsa: "apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com"
    
    # or if using Vault:
    serviceAccountSecretProviderClass: apigee-orgsakeys-spc
    

    Si usas Secrets de Kubernetes, consulta Cómo almacenar datos en un Secret de Kubernetes.

    Si usas Vault, consulta Almacena claves de cuentas de servicio en Hashicorp Vault.

    Si usas Vault, asegúrate de haber agregado mint a la clase de proveedor de secretos específica de la organización. Consulta Cómo crear objetos SecretProviderClass.

  5. Aplica los cambios a los gráficos apigee-operator, apigee-org y apigee-env.

    Si configuraste las variables de entorno $ORG_NAME y APIGEE_NAMESPACE, puedes usarlas en los siguientes comandos:

    1. Instala el operador.

      Prueba de validación:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      

      Instala el gráfico:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    2. Instala la organización de Apigee.

      Prueba de validación:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml \
        --dry-run=server
      

      Instala el gráfico:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Instala el entorno. Repite este paso para cada entorno.

      Debes instalar un entorno a la vez. Especifica el entorno con --set env=ENV_NAME. Si configuraste la variable de entorno $ENV_NAME en tu shell, puedes usarla en los siguientes comandos:

      Prueba de validación:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml \
        --dry-run=server
      

        ENV_RELEASE_NAME es un nombre que se usa para hacer un seguimiento de la instalación y las actualizaciones del gráfico apigee-env. Este nombre debe ser único entre los demás nombres de versiones de Helm de tu instalación. Por lo general, es igual a ENV_NAME. Sin embargo, si tu entorno tiene el mismo nombre que tu grupo de entornos, debes usar nombres de versión diferentes para el entorno y el grupo de entornos, por ejemplo, dev-env-release y dev-envgroup-release. Para obtener más información sobre las versiones en Helm, consulta Tres conceptos importantes en la documentación de Helm.

      Instala el gráfico:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
  6. Solo Workload Identity en GKE: Configura Workload Identity para la cuenta de servicio apigee-mint-task-scheduler.

    Si realizas una instalación nueva, sigue este paso además de los pasos que se indican en Paso 11 (opcional): Configura Workload Identity.

    Cuando ejecutes la actualización de Helm con la marca --dry-run para el gráfico apigee-org, el resultado incluirá los comandos que necesitarás para configurar Workload Identity con los nombres correctos de la cuenta de servicio de Google y la cuenta de servicio de Kubernetes.

    1. Obtén los comandos para configurar Workload Identity para apigee-org y ejecuta el comando en NOTES: en el resultado.

      helm upgrade $ORG_NAME apigee-org/ \
        --namespace $NAMESPACE \
        -f overrides.yaml \
        --dry-run=server

      El resultado debe contener instrucciones similares a las siguientes en NOTES::

      NOTES:
      ...
      For organization GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective Kubernetes SA (KSA).
      gcloud iam service-accounts add-iam-policy-binding apigee-mint-task-scheduler@PROJECT_ID.iam.gserviceaccount.com \
            --role roles/iam.workloadIdentityUser \
            --member "serviceAccount:PROJECT_ID.svc.id.goog[APIGEE_NAMESPACE/apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID]" \
            --project PROJECT_ID
      

      El nombre de la cuenta de servicio de Kubernetes tiene el formato apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID.

    2. Ejecuta los comandos para configurar Workload Identity para apigee-mint-task-scheduler.

También consulta lo siguiente: