Ativar a rentabilização para o Apigee Hybrid

Vista geral

Este documento descreve os procedimentos para ativar taxas recorrentes, de recarga e de configuração para a funcionalidade de rentabilização do Apigee em organizações híbridas.

Pré-requisitos

Procedimento

A ativação de taxas recorrentes, de recarga e de configuração para a rentabilização híbrida do Apigee requer a criação e a configuração da apigee-mint-task-schedulerconta de serviço Google e a concessão de acesso à pipeline de dados do Pub/Sub.

  1. Se ainda não transferiu a versão 1.15.1 dos gráficos Helm, extraia os gráficos Helm com os seguintes comandos:

    No diretório $APIGEE_HELM_CHARTS_HOME, use o comando pull para copiar todos os gráficos Helm do Apigee hybrid para o seu 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 ainda não tiver criado a conta de serviço apigee-mint-task-scheduler, crie-a agora com a ferramenta create-service-account. Consulte o Passo 4: crie contas de serviço para obter 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

      Valide se consegue executar create-service-account. Se acabou de transferir os gráficos, o ficheiro create-service-account pode não estar num 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 indicar permission denied, tem de tornar o ficheiro executável, por exemplo, com chmod no Linux, MacOS ou UNIX, ou no Explorador do Windows, ou com o comando icacls no Windows. Por 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 ficheiro de certificado transferido no diretório do 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 controlo para as contas de serviço apigee-mart e apigee-mint-task-scheduler.

    Se ainda não ativou o acesso ao plano de controlo para as contas de serviço apigee-mart e apigee-mint-task-scheduler, faça-o agora com os seguintes passos. Consulte o Passo 7: ative o acesso ao plano de controlo para ver informações sobre a ativação do acesso ao plano de controlo como parte de uma nova instalação híbrida.

    1. Se não for o proprietário do projeto do Google Cloud associado à sua organização híbrida do Apigee, certifique-se de que a sua conta de utilizador do Google Cloud tem a função roles/apigee.admin (administrador da organização do Apigee). Pode verificar as funções que lhe foram atribuídas com este comando:
      gcloud projects get-iam-policy ${PROJECT_ID}  \
        --flatten="bindings[].members" \
        --format='table(bindings.role)' \
        --filter="bindings.members:your_account_email"
      

      Se o resultado não incluir roles/apigee.admin, consulte o Passo 7: ative o acesso ao plano de controlo para ver os passos para adicionar a função ou pedir a um utilizador que tenha a função para executar este passo.

    2. Chame a API updateControlPlaneAccess para ativar as autorizações necessárias através do 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 email 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\"]}"
      

      Onde:

      • CONTROL_PLANE_LOCATION é a localização dos dados do plano de controlo se a sua instalação híbrida usar a residência de dados. Esta é a localização onde o conteúdo principal do cliente, como pacotes de proxy, é armazenado. Para ver uma lista, consulte o artigo Regiões do plano de controlo da API Apigee disponíveis.
      • Seguem-se os endereços de email 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. Valide o acesso ao plano de controlo 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"

      O resultado deve incluir as contas de serviço apigee-mart, apigee-mint-task-scheduler e apigee-runtime semelhantes ao seguinte:

      {
        "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 cláusulas específicas de rentabilização ao seu ficheiro overrides.yaml.

    Adicione as seguintes estrofes ao ficheiro 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 estiver a usar segredos do Kubernetes, consulte o artigo Armazenar dados num segredo do Kubernetes.

    Se estiver a usar o Vault, consulte o artigo Armazenar chaves de contas de serviço no Hashicorp Vault.

    Se estiver a usar o Vault, certifique-se de que adicionou mint à classe de fornecedor de segredos específica da organização. Consulte o artigo Crie objetos SecretProviderClass.

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

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

    1. Instale o operador.

      Execução de ensaio:

      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 do Apigee.

      Execução de ensaio:

      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 este passo para cada ambiente.

      Tem de instalar um ambiente de cada vez. Especifique o ambiente com --set env=ENV_NAME. Se tiver definido a variável de ambiente $ENV_NAME na sua shell, pode usá-la nos seguintes comandos:

      Execução de ensaio:

      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 monitorizar a instalação e as atualizações do gráfico apigee-env. Este nome tem de ser exclusivo dos outros nomes de lançamentos do Helm na sua instalação. Normalmente, este valor é igual a ENV_NAME. No entanto, se o seu ambiente tiver o mesmo nome que o seu grupo de ambientes, tem de usar nomes de lançamentos diferentes para o ambiente e o grupo de ambientes, por exemplo, dev-env-release e dev-envgroup-release. Para mais informações sobre lançamentos no Helm, consulte o artigo 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. Apenas Workload Identity no GKE: configure o Workload Identity para a conta de serviço apigee-mint-task-scheduler.

    Se estiver a fazer uma instalação nova, execute este passo além dos passos no Passo 11 (opcional): configure a identidade da carga de trabalho.

    Quando executa a atualização do Helm com a flag --dry-run para o gráfico apigee-org, o resultado inclui os comandos necessários para configurar a identidade de carga de trabalho com os nomes corretos da conta de serviço Google e da conta de serviço Kubernetes.

    1. Obtenha os comandos para configurar a identidade da carga de trabalho para apigee-org e execute o comando em NOTES: na saída.

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

      O resultado deve 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 o Workload Identity para apigee-mint-task-scheduler.

Veja também