Activer la monétisation pour Apigee hybrid

Présentation

Ce document décrit les procédures permettant d'activer les frais récurrents, de recharge et de configuration pour la fonctionnalité de monétisation d'Apigee dans les organisations hybrides.

Prérequis

Procédure

Pour activer les frais récurrents, de recharge et de configuration pour la monétisation Apigee hybrid, vous devez créer et configurer le compte de service Google apigee-mint-task-scheduler, puis lui accorder l'accès au pipeline de données Pub/Sub.

  1. Si vous n'avez pas encore téléchargé la version 1.14.3 des charts Helm, extrayez-les à l'aide des commandes suivantes :

    Dans le répertoire $APIGEE_HELM_CHARTS_HOME, exécutez la commande pull pour copier tous les graphiques Helm Apigee hybrid sur votre espace de stockage 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. Créez le compte de service apigee-mint-task-scheduler.

    Si vous n'avez pas encore créé le compte de service apigee-mint-task-scheduler, faites-le maintenant avec l'outil create-service-account. Consultez l'étape 4 : Créer des comptes de service pour savoir comment créer des comptes de service lors d'une nouvelle installation hybride.

    1. Recherchez l'outil create-service-account dans le répertoire $APIGEE_HELM_CHARTS_HOME :
      $APIGEE_HELM_CHARTS_HOME/
          └── apigee-operator/
              └── etc/
                  └── tools/
                      └── create-service-account

      Vérifiez que vous pouvez exécuter create-service-account. Si vous venez de télécharger les graphiques, il est possible que le fichier create-service-account ne soit pas en mode exécutable. Exécutez la commande suivante dans votre répertoire APIGEE_HELM_CHARTS_HOME :

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

      Si le résultat indique permission denied, vous devez rendre le fichier exécutable, par exemple avec chmod sous Linux, MacOS ou UNIX, ou dans l'explorateur Windows, ou à l'aide de la commande icacls dans Windows. Exemple :

      chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
    2. Créez le compte de service apigee-mint-task-scheduler et stockez le fichier de certificat téléchargé dans le répertoire du graphique apigee-org à l'aide de la commande suivante :
      $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. Activez l'accès au plan de contrôle pour les comptes de service apigee-mart et apigee-mint-task-scheduler.

    Si vous n'avez pas encore activé l'accès au plan de contrôle pour les comptes de service apigee-mart et apigee-mint-task-scheduler, faites-le maintenant en suivant les étapes ci-dessous. Pour savoir comment activer l'accès au plan de contrôle lors d'une nouvelle installation hybride, consultez Étape 7 : Activer l'accès au plan de contrôle.

    1. Si vous n'êtes pas propriétaire du projet Google Cloud associé à votre organisation Apigee hybrid, assurez-vous que votre compte utilisateur Google Cloud dispose du rôle roles/apigee.admin (Administrateur de l'organisation Apigee). Vous pouvez vérifier les rôles qui vous sont attribués à l'aide de cette commande :
      gcloud projects get-iam-policy ${PROJECT_ID}  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:your_account_email"
      

      Si votre résultat n'inclut pas roles/apigee.admin, consultez l'étape 7 : Activer l'accès au plan de contrôle pour savoir comment ajouter le rôle ou demander à un utilisateur qui le possède d'effectuer cette étape.

    2. Appelez l'API updateControlPlaneAccess afin d'activer les autorisations requises à l'aide de la commande suivante :

      Sans résidence des données

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

      où les adresses e-mail des comptes de service sont les suivantes :

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

      Résidence des données

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

      Où :

      • CONTROL_PLANE_LOCATION correspond à l'emplacement des données de votre plan de contrôle si votre installation hybride utilise la résidence des données. Il s'agit de l'emplacement où sont stockés le contenu principal du client, comme les bundles proxy. Pour obtenir la liste, consultez Régions du plan de contrôle de l'API Apigee disponibles.
      • Voici les adresses e-mail des comptes de service :

        • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com
    3. Vérifiez l'accès au plan de contrôle pour les comptes de service apigee-mart et apigee-mint-task-scheduler.

      Sans résidence des données

      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"

      Résidence des données

      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"

      Votre résultat doit inclure les comptes de service apigee-mart, apigee-mint-task-scheduler et apigee-runtime, comme suit :

      {
        "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. Ajoutez les stanzas spécifiques à la monétisation à votre fichier overrides.yaml.

    Ajoutez les stanzas suivants à votre fichier 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 vous utilisez des secrets Kubernetes, consultez Stocker des données dans un secret Kubernetes.

    Si vous utilisez Vault, consultez Stocker des clés de compte de service dans Hashicorp Vault.

    Si vous utilisez Vault, assurez-vous d'avoir ajouté mint à la classe de fournisseur de secrets spécifique à l'organisation. Consultez Créer des objets SecretProviderClass.

  5. Appliquez les modifications aux graphiques apigee-operator, apigee-org et apigee-env.

    Si vous avez défini les variables d'environnement $ORG_NAME et APIGEE_NAMESPACE, vous pouvez les utiliser dans les commandes suivantes :

    1. Installez l'opérateur.

      Effectuez un dry run :

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

      Installez le chart :

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    2. Installez l'organisation Apigee.

      Effectuez un dry run :

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

      Installez le chart :

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Installez l'environnement. Répétez cette étape pour chaque environnement.

      Vous devez installer un environnement à la fois. Spécifiez l'environnement avec --set env=ENV_NAME. Si vous avez défini la variable d'environnement $ENV_NAME dans votre interface système, vous pouvez l'utiliser dans les commandes suivantes :

      Effectuez un dry run :

      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 est un nom utilisé pour suivre l'installation et les mises à niveau du graphique apigee-env. Ce nom doit être unique par rapport aux autres noms de version Helm de votre installation. Il s'agit généralement de la même valeur que ENV_NAME. Toutefois, si votre environnement porte le même nom que votre groupe d'environnements, vous devez utiliser des noms de version différents pour l'environnement et le groupe d'environnements (par exemple, dev-env-release et dev-envgroup-release). Pour en savoir plus sur les versions dans Helm, consultez Trois concepts importants dans la documentation Helm.

      Installez le chart :

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
  6. GKE avec Workload Identity uniquement : configurez Workload Identity pour le compte de service apigee-mint-task-scheduler.

    Si vous effectuez une nouvelle installation, suivez cette étape en plus de celles de l'étape 11 (facultatif) : Configurer Workload Identity.

    Lorsque vous exécutez la mise à niveau Helm avec l'indicateur --dry-run pour le graphique apigee-org, le résultat inclut les commandes dont vous aurez besoin pour configurer Workload Identity avec les noms de compte de service Google et de compte de service Kubernetes appropriés.

    1. Obtenez les commandes pour configurer Workload Identity pour apigee-org et exécutez la commande sous NOTES: dans le résultat.

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

      Le résultat doit contenir des instructions semblables à celles ci-dessous sous 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
      

      Le nom du compte de service Kubernetes est au format apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID.

    2. Exécutez les commandes pour configurer Workload Identity pour apigee-mint-task-scheduler.

Voir aussi