Como ativar a monetização da Apigee híbrida

Visão geral

Neste documento, descrevemos os procedimentos para ativar taxas recorrentes, de recarga e de configuração para o recurso de monetização da Apigee em organizações híbridas.

Pré-requisitos

Procedimento

Para ativar as taxas recorrentes, de recarga e de configuração na monetização híbrida da Apigee, é necessário criar e configurar a conta de serviço do Google apigee-mint-task-scheduler e conceder acesso a ela ao pipeline de dados do Pub/Sub.

  1. Se você ainda não fez o download da versão 1.15.1 dos gráficos do Helm, extraia os gráficos com os seguintes comandos:

    No diretório $APIGEE_HELM_CHARTS_HOME, use o comando pull para copiar todos os gráficos do Helm da Apigee híbrida para o armazenamento 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. Crie a conta de serviço apigee-mint-task-scheduler.

    Se você ainda não tiver criado a conta de serviço apigee-mint-task-scheduler, faça isso agora com a ferramenta create-service-account. Consulte Etapa 4: criar contas de serviço para informações sobre como criar contas de serviço como parte de uma nova instalação híbrida.

    1. Localize a ferramenta create-service-account no diretório $APIGEE_HELM_CHARTS_HOME:
      $APIGEE_HELM_CHARTS_HOME/
          └── apigee-operator/
              └── etc/
                  └── tools/
                      └── create-service-account

      Verifique se é possível executar create-service-account. Se você acabou de fazer o download dos gráficos, o arquivo create-service-account pode não estar em um modo executável. No diretório APIGEE_HELM_CHARTS_HOME, execute o seguinte comando:

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

      Se a saída informar permission denied, será necessário tornar o arquivo executável, por exemplo, com chmod no Linux, MacOS ou UNIX ou no Windows Explorer ou com o comando icacls no Windows. Exemplo:

      chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account
    2. Crie a conta de serviço apigee-mint-task-scheduler e armazene o arquivo de certificado baixado no diretório de gráfico apigee-org com o seguinte 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. Ative o acesso ao plano de controle para as contas de serviço apigee-mart e apigee-mint-task-scheduler.

    Se você ainda não tiver ativado o acesso ao plano de controle para as contas de serviço apigee-mart e apigee-mint-task-scheduler, faça isso agora seguindo estas etapas. Consulte Etapa 7: ativar o acesso ao plano de controle para informações sobre como ativar o acesso ao plano de controle como parte de uma nova instalação híbrida.

    1. Se você não for o proprietário do projeto do Google Cloud associado à organização híbrida da Apigee, verifique se sua conta de usuário do Google Cloud tem o papel roles/apigee.admin (Administrador da organização da Apigee). Verifique os papéis atribuídos a você com este comando:
      gcloud projects get-iam-policy ${PROJECT_ID}  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:your_account_email"
      

      Se a saída não incluir roles/apigee.admin, consulte Etapa 7: ativar o acesso ao plano de controle para saber como adicionar a função ou pedir que um usuário com a função execute esta etapa.

    2. Chame a API updateControlPlaneAccess para ativar as permissões necessárias usando o seguinte comando:

      Sem residência de dados

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

      Em que os seguintes são os endereços de e-mail das contas de serviço:

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

      Residência dos dados

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

      Em que:

      • CONTROL_PLANE_LOCATION é o local dos dados do plano de controle caso a instalação híbrida use residência de dados. Esse é o local onde o conteúdo principal do cliente, como pacotes de proxy, é armazenado. Para uma lista, consulte Regiões disponíveis do plano de controle da API Apigee.
      • Estes são os endereços de e-mail das contas de serviço:

        • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
        • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com
    3. Verifique o acesso ao plano de controle para as contas de serviço apigee-mart e apigee-mint-task-scheduler.

      Sem residência de dados

      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"

      Residência dos dados

      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"

      A saída precisa incluir as contas de serviço apigee-mart, apigee-mint-task-scheduler e apigee-runtime, semelhantes a estas:

      {
        "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. Adicione as estrofes específicas da monetização ao arquivo overrides.yaml.

    Adicione as seguintes estrofes ao arquivo 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
    

    Se você estiver usando secrets do Kubernetes, consulte Como armazenar dados em um secret do Kubernetes.

    Se você estiver usando o Vault, consulte Como armazenar chaves de conta de serviço no Hashicorp Vault.

    Se você estiver usando o Vault, adicione mint à classe do provedor de secrets específica da organização. Consulte Criar objetos SecretProviderClass.

  5. Aplique as mudanças aos gráficos apigee-operator, apigee-org e apigee-env.

    Se você tiver definido as variáveis de ambiente $ORG_NAME e APIGEE_NAMESPACE, poderá usá-las nos seguintes comandos:

    1. Instale o operador.

      Simulação:

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

      Instale o gráfico:

      helm upgrade operator apigee-operator/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    2. Instale a organização da Apigee.

      Simulação:

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

      Instale o gráfico:

      helm upgrade $ORG_NAME apigee-org/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      
    3. Instale o ambiente. Repita essa etapa para cada ambiente.

      É preciso instalar um ambiente de cada vez. Especifique o ambiente com --set env=ENV_NAME. Se você tiver definido a variável de ambiente $ENV_NAME no shell, poderá usá-la nos seguintes comandos:

      Simulação:

      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 é um nome usado para acompanhar a instalação e os upgrades do gráfico apigee-env. Ele precisa ser diferente dos outros nomes de versão do Helm na sua instalação. Normalmente, é o mesmo que ENV_NAME. No entanto, se o ambiente tiver o mesmo nome do grupo de ambientes, use nomes de lançamento diferentes para o ambiente e o grupo de ambientes, por exemplo, dev-env-release e dev-envgroup-release. Para mais informações sobre versões no Helm, consulte Três grandes conceitos na documentação do Helm.

      Instale o gráfico:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace $APIGEE_NAMESPACE \
        --atomic \
        --set env=$ENV_NAME \
        -f overrides.yaml
      
  6. Somente Identidade da carga de trabalho no GKE:configure a Identidade da carga de trabalho para a conta de serviço apigee-mint-task-scheduler.

    Se você estiver fazendo uma nova instalação, execute esta etapa além das etapas em Etapa 11 (opcional): configurar a Identidade da carga de trabalho.

    Ao executar o upgrade do Helm com a flag --dry-run para o gráfico apigee-org, a saída vai incluir os comandos necessários para configurar a Identidade da carga de trabalho com os nomes corretos das conta de serviço do Google e do Kubernetes.

    1. Receba os comandos para configurar a Identidade da carga de trabalho para apigee-org e os execute em NOTES: na saída.

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

      A saída vai conter instruções semelhantes às seguintes em 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
      

      O nome da conta de serviço do Kubernetes tem o formato apigee-mint-task-scheduler-PROJECT_ID-UNIQUE_ID.

    2. Execute os comandos para configurar a Identidade da carga de trabalho para apigee-mint-task-scheduler.

Consulte também