Habilitar la monetización en Apigee hybrid

Información general

En este documento se describen los procedimientos para habilitar las cuotas periódicas, de recarga y de configuración de la función de monetización de Apigee en organizaciones híbridas.

Requisitos previos

Procedimiento

Para habilitar las cuotas periódicas, de recarga y de configuración en la monetización de Apigee hybrid, debes crear y configurar la cuenta de servicio de Google apigee-mint-task-scheduler y concederle acceso a la canalización de datos de Pub/Sub.

  1. Si aún no has descargado la versión 1.14.3 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.14.3
    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 has creado la cuenta de servicio apigee-mint-task-scheduler, hazlo 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. Busca 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 puedes ejecutar create-service-account. Si acabas de descargar los gráficos, es posible que el archivo create-service-account no esté en modo ejecutable. En el directorio APIGEE_HELM_CHARTS_HOME, ejecuta el siguiente comando:

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

      Si la salida indica que permission denied, debes hacer que el archivo sea ejecutable. Por ejemplo, con chmod en Linux, macOS o UNIX, o en el Explorador de Windows, 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 certificado 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 has habilitado el acceso al plano de control para las cuentas de servicio apigee-mart y apigee-mint-task-scheduler, hazlo ahora siguiendo estos pasos. Consulta el 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 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"
      

      Si el resultado no incluye roles/apigee.admin, consulta el paso 7: Habilita el acceso al plano de control para saber cómo añadir el rol o pedirle a un usuario que lo tenga que realice este paso.

    2. Llama a la API updateControlPlaneAccess para habilitar los permisos necesarios 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 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

      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\"]}"
      

      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
    3. Verifica el acceso al plano de control de 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 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"

      El resultado debe incluir las cuentas de servicio apigee-mart, apigee-mint-task-scheduler y apigee-runtime, como se muestra a continuación:

      {
        "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. Añade las estrofas específicas de monetización a tu archivo overrides.yaml.

    Añade las siguientes estrofas a tu archivo overrides.yaml:

    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.14.3" #must be 1.14.3 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 secretos de Kubernetes, consulta Almacenar datos en un secreto de Kubernetes.

    Si usas Vault, consulta Almacenar claves de cuentas de servicio en HashiCorp Vault.

    Si usas Vault, asegúrate de haber añadido mint a la clase de proveedor de secretos específica de la organización. Consulta Crear objetos SecretProviderClass.

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

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

    1. Instala el operador.

      Prueba de funcionamiento:

      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 funcionamiento:

      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 en cada entorno.

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

      Prueba de funcionamiento:

      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 y diferente de los demás nombres de lanzamientos de Helm de tu instalación. Normalmente, es la misma que ENV_NAME. Sin embargo, si tu entorno tiene el mismo nombre que tu grupo de entornos, debes usar nombres de lanzamiento 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 de 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 vas a realizar una instalación desde cero, sigue este paso además de los que se indican en el 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 de 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

      La salida 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-sa]" \
            --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 en apigee-mint-task-scheduler.

Consulta también