Etapa 8: instalar o ambiente de execução híbrido

Aplicar a configuração ao cluster

Siga estas etapas para instalar a Apigee híbrida no cluster:

  1. Verifique se você está no diretório hybrid-base-directory/hybrid-files.
    cd $HYBRID_FILES
  2. Verifique se kubectl está definido para o contexto correto usando o seguinte comando. O contexto atual será definido como o cluster ao qual você está implantando a Apigee híbrida.
    kubectl config current-context

    O resultado precisa incluir o nome do cluster em que você está implantando a Apigee híbrida. Por exemplo, no GKE, o nome do contexto geralmente está no formato gke_project-id_cluster-location_cluster-name, como em:

    gke_my-project_us-central1_my-cluster

    Se o nome do cluster não for correspondente, o comando a seguir receberá as credenciais da gcloud do cluster e definirá o contexto kubectl:

    Clusters regionais

    gcloud container clusters get-credentials $CLUSTER_NAME \
    --region $CLUSTER_LOCATION \
    --project $PROJECT_ID

    Clusters zonais

    gcloud container clusters get-credentials $CLUSTER_NAME \
    --zone $CLUSTER_LOCATION \
    --project $PROJECT_ID
  3. Para plataformas somente Anthos em bare metal, AWS no GKE, EKS e GKE On-Prem, verifique se KUBECONFIG é definida usando o comando a seguir.
    echo ${KUBECONFIG}
  4. Faça uma inicialização de simulação. Uma simulação permite verificar se há erros antes de qualquer alteração no cluster. Execute o comando init com a sinalização --dry-run da seguinte maneira:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
  5. Se não houver erros, execute o comando init da seguinte maneira:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml

    O comando init instala os serviços de implantação da Apigee,, o Apigee Deployment Controller e o Apigee Admission Webhook.

  6. Para verificar o status da implantação, use os seguintes comandos:
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
    kubectl get pods -n apigee-system
    kubectl get pods -n apigee

    Quando os pods estiverem prontos, vá para a próxima etapa.

  7. Faça uma instalação de simulação. Execute o comando apply com a sinalização --dry-run.
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
  8. Se não houver erros, aplique os componentes de ambiente de execução específicos da Apigee ao cluster com o seguinte comando:
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
  9. Para verificar o status da implantação, execute o seguinte comando:
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml

    Repita essa etapa até que os pods estejam prontos. Os pods podem levar vários minutos para serem iniciados.

GKE com a Identidade da carga de trabalho

Se você estiver usando a Identidade da carga de trabalho no GKE, siga estas instruções para associar as contas de serviço do Kubernetes criadas por apigeectl às contas de serviço do Google criadas na Etapa 4: criar contas de serviço e credenciais.

Esses procedimentos usam as seguintes variáveis de ambiente. Elas podem ser definidas no shell de comando ou substituídas nas amostras de código por valores reais:

  • APIGEECTL_HOME: o diretório em que você instalou apigeectl.
  • CLUSTER_LOCATION: a região ou zona do cluster. Por exemplo: us-west1.
  • CLUSTER_LOCATION: o nome do cluster.
  • ENV_NAME: nome do ambiente da Apigee.
  • NAMESPACE: o namespace da Apigee. O padrão é apigee.
  • HYBRID_FILES: o diretório de arquivos híbridos. Por exemplo, hybrid-base-directory/hybrid-files.
  • ORG_NAME: o nome da organização da Apigee.
  • PROJECT_ID: o ID do projeto do Google Cloud.

Verifique as variáveis de ambiente:

echo $APIGEECTL_HOME
echo $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $ORG_NAME
echo $PROJECT_ID

Inicialize uma das variáveis necessárias:

export APIGEECTL_HOME=hybrid-base-directory/apigeectl
export CLUSTER_LOCATION=my-cluster-location
export ENV_NAME=my-environment-name
export HYBRID_FILES=hybrid-base-directory/hybrid-files
export NAMESPACE=apigee
export ORG_NAME=$PROJECT_ID
export PROJECT_ID=my-project-id
  1. Opcional: exclua os arquivos de chave da conta de serviço.

    Ao executar a Apigee híbrida no GKE, a prática padrão é criar e fazer o download de chaves privadas (arquivos .json) para cada uma das contas de serviço. Ao usar a Identidade da carga de trabalho, não é necessário fazer o download de chaves privadas de contas de serviço e adicioná-las a Clusters do GKE.

    Exclua os arquivos de chave com o seguinte comando:

    rm $HYBRID_FILES/service-accounts/*.json
  2. Verifique a configuração da gcloud atual para o ID do projeto do Google Cloud com o seguinte comando:
    gcloud config get project
  3. Se necessário, defina a configuração atual da gcloud:

    gcloud config set project $PROJECT_ID
  4. Crie a conta de serviço do Kubernetes apigee-cassandra-restore.

    Quando você aplicou sua configuração executando apigeectl apply, o comando criou a maioria das contas de serviço do Kubernetes necessárias para a Identidade da carga de trabalho.

    Para criar a conta de serviço do Kubernetes apigee-cassandra-restore, execute apigeectl apply com a flag --restore:

    $APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
  5. Verifique se a Identidade da carga de trabalho está ativada no cluster do GKE. Quando você criou o cluster na Etapa 1: criar um cluster, a etapa 6 foi ativar a Identidade da carga de trabalho. Confirme se a Identidade da carga de trabalho está ativada executando o seguinte comando:

    Clusters regionais

    gcloud container clusters describe $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    Clusters zonais

    gcloud container clusters describe $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten 'workloadIdentityConfig'

    Se a Identidade da carga de trabalho estiver ativada no cluster, a saída será semelhante a esta:

      ---
      workloadPool: PROJECT_ID.svc.id.goog

    Se você vir null nos resultados, execute o seguinte comando para ativar a Identidade da carga de trabalho no cluster:

    Clusters regionais

    gcloud container clusters update $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --project $PROJECT_ID \
      --region $CLUSTER_LOCATION

    Clusters zonais

    gcloud container clusters update  $CLUSTER_NAME \
      --workload-pool=$PROJECT_ID.svc.id.goog \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID
  6. Verifique se a Identidade da carga de trabalho está ativada nos pools de nós com os seguintes comandos:

    Clusters regionais

    gcloud container node-pools describe apigee-data \
      --cluster $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"
    gcloud container node-pools describe apigee-runtime \
      --cluster $CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"

    Clusters zonais

    gcloud container node-pools describe apigee-data \
      --cluster $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"
    gcloud container node-pools describe apigee-runtime \
      --cluster $CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --flatten "config:"

    A saída será semelhante a esta:

    ---
    diskSizeGb: 100
    diskType: pd-standard
    ...
    workloadMetadataConfig:
      mode: GKE_METADATA
        

    Se a saída não contiver uma linha para workloadMetadataConfig:, ative a Identidade da carga de trabalho para cada pool de nós com os comandos a seguir. Esta operação pode levar até 30 minutos.

    Clusters regionais

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --region $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Clusters zonais

    gcloud container node-pools update NODE_POOL_NAME \
      --cluster=$CLUSTER_NAME \
      --zone $CLUSTER_LOCATION \
      --project $PROJECT_ID \
      --workload-metadata=GKE_METADATA

    Em que NODE_POOL_NAME é o nome de cada pool de nós. Na maioria das instalações da Apigee híbrida, os dois pools de nós padrão são denominados apigee-data e apigee-runtime.

  7. Verifique os nomes das contas de serviço do Google do seu projeto com o seguinte comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    A saída será semelhante a esta:

    Sem produção

    Para ambientes que não sejam de produção:

    DISPLAY NAME         EMAIL                                                      DISABLED
    apigee-non-prod      apigee-non-prod@my_project_id.iam.gserviceaccount.com      False
    

    Prod.

    Para ambientes que não sejam de produção:

    DISPLAY NAME         EMAIL                                                      DISABLED
    apigee-cassandra     apigee-cassandra@my_project_id.iam.gserviceaccount.com     False
    apigee-logger        apigee-logger@my_project_id.iam.gserviceaccount.com        False
    apigee-mart          apigee-mart@my_project_id.iam.gserviceaccount.com          False
    apigee-metrics       apigee-metrics@my_project_id.iam.gserviceaccount.com       False
    apigee-runtime       apigee-runtime@my_project_id.iam.gserviceaccount.com       False
    apigee-synchronizer  apigee-synchronizer@my_project_id.iam.gserviceaccount.com  False
    apigee-udca          apigee-udca@my_project_id.iam.gserviceaccount.com          False
    apigee-watcher       apigee-watcher@my_project_id.iam.gserviceaccount.com       False
    
  8. Verifique as contas de serviço com o seguinte comando:
    kubectl get sa -n $NAMESPACE

    A saída será semelhante a esta: As contas de serviço do Kubernetes em negrito são as que você precisará anotar com as contas de serviço do Google:

    NAME                                                         SECRETS   AGE
    apigee-cassandra-backup                                      1         11m
    apigee-cassandra-restore                                     1         11m
    apigee-cassandra-schema-setup-my-project-id-123abcd-sa       1         11m
    apigee-cassandra-schema-val-my-project-id-123abcd            1         11m
    apigee-cassandra-user-setup-my-project-id-123abcd-sa         1         11m
    apigee-connect-agent-my-project-id-123abcd-sa                1         11m
    apigee-datastore-default-sa                                  1         11m
    apigee-ingressgateway                                        1         11m
    apigee-ingressgateway-my-project-id-123abcd                  1         11m
    apigee-ingressgateway-manager                                1         11m
    apigee-init                                                  1         11m
    apigee-mart-my-project-id-123abcd-sa                         1         11m
    apigee-metrics-sa                                            1         11m
    apigee-mint-task-scheduler-my-project-id-123abcd-sa          1         11m
    apigee-redis-default-sa                                      1         11m
    apigee-redis-envoy-default-sa                                1         11m
    apigee-runtime-my-project-id-env-name-234bcde-sa             1         11m
    apigee-synchronizer-my-project-id-env-name-234bcde-sa        1         11m
    apigee-udca-my-project-id-123abcd-sa                         1         11m
    apigee-udca-my-project-id-env-name-234bcde-sa                1         11m
    apigee-watcher-my-project-id-123abcd-sa                      1         11m
    default                                                      1         11m
        
  9. Para cada componente da Apigee, anote as contas de serviço correspondentes do Kubernetes com a conta de serviço do Google para o componente.

    As etapas a seguir usam duas variáveis de ambiente. Você redefinirá os valores dessas variáveis antes de cada conjunto de comandos:

    • GSA_NAME: o nome de uma conta de serviço do Google. Essas são as contas de serviço que você criou com a ferramenta create-service-account na Etapa 4: criar contas de serviço.
    • KSA_NAME: o nome de uma conta de serviço do Kubernetes. Essas são as contas que você listou acima com o comando kubectl get sa -n $NAMESPACE. Por exemplo: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
    • Cassandra

      O componente Cassandra tem seis contas de serviço do Kubernetes associadas:

      • apigee-cassandra-backup
      • apigee-cassandra-restore
      • apigee-cassandra-schema-setup
      • apigee-cassandra-schema-val (val = validação)
      • apigee-cassandra-user-setup
      • apigee-datastore-default

      Sem produção

      As etapas a seguir usam duas variáveis de ambiente. Você redefinirá os valores dessas variáveis antes de cada conjunto de comandos:

      • GSA_NAME: o nome de uma conta de serviço do Google. Essas são as contas de serviço que você criou com a ferramenta create-service-account na Etapa 4: criar contas de serviço.
      • KSA_NAME: o nome de uma conta de serviço do Kubernetes. Essas são as contas que você listou acima com o comando kubectl get sa -n $NAMESPACE.

      Conta de serviço do Kubernetes apigee-cassandra-backup

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:
        GSA_NAME="apigee-non-prod"
        KSA_NAME="apigee-cassandra-backup"
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

        A saída precisa ter uma linha descrevendo a anotação, semelhante a:

        Annotations:         iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com

      Conta de serviço do Kubernetes apigee-cassandra-restore

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-restore"
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Conta de serviço do Kubernetes apigee-cassandra-schema-setup

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        Por exemplo: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Conta de serviço do Kubernetes apigee-cassandra-schema-val

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        Por exemplo: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Conta de serviço do Kubernetes apigee-cassandra-user-setup

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        Por exemplo: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Conta de serviço do Kubernetes apigee-datastore-default-sa

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-datastore-default-sa"
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      Conta de serviço do Kubernetes apigee-cassandra-backup

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:
        GSA_NAME="apigee-cassandra"
        KSA_NAME="apigee-cassandra-backup"
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
      5. A saída precisa ter uma linha descrevendo a anotação, semelhante a:

        Annotations:         iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
      6. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Conta de serviço do Kubernetes apigee-cassandra-restore

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-restore"
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com

      Conta de serviço do Kubernetes apigee-cassandra-schema-setup

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        Por exemplo: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:

        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Conta de serviço do Kubernetes apigee-cassandra-schema-val

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        Por exemplo: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Conta de serviço do Kubernetes apigee-cassandra-user-setup

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        Por exemplo: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Conta de serviço do Kubernetes apigee-datastore-default-sa

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-datastore-default-sa"
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Connect

      Sem produção

      1. Defina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        Por exemplo: apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:
        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        Por exemplo: apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • MART

      Sem produção

      1. Defina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-mart-service-account-name-sa"
        Por exemplo: apigee-mart-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:

        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-mart-service-account-name-sa"
        Por exemplo: apigee-mart-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Métricas da Apigee

      Sem produção

      1. Defina as variáveis de ambiente KSA_NAME:

        KSA_NAME="apigee-metrics-sa"
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:

        GSA_NAME="apigee-metrics"
        KSA_NAME="apigee-metrics-sa"
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
        $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
        --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
        --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (nível organizacional)

      O UDCA é implementado nos escopos no nível da organização e do ambiente. Portanto, há duas contas de serviço do Kubernetes separadas para UDCA, uma para cada escopo. É possível diferenciá-las pelo nome da conta. A conta de escopo do ambiente inclui o nome do ambiente no nome da conta de serviço. Exemplo:

      • Nível da organização: apigee-udca-my-project-id-123abcd-sa, em que my-project-id é o ID do projeto do nome.
      • Nível do ambiente: apigee-udca-my-project-id-my-env-234bcde-sa, em que my-env é o nome do ambiente.

      Sem produção

      1. Defina as variáveis de ambiente KSA_NAME:

        KSA_NAME="apigee-udca-service-account-name-sa"
        Por exemplo: apigee-udca-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
          gcloud iam service-accounts add-iam-policy-binding \
            --role roles/iam.workloadIdentityUser \
            --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
            $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
            --project $PROJECT_ID
      3. Anote a conta de serviço:
          kubectl annotate serviceaccount \
            --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-service-account-name-sa"
        Por exemplo: apigee-udca-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Watcher

      Sem produção

      1. Defina as variáveis de ambiente KSA_NAME:

        KSA_NAME="apigee-watcher-service-account-name-sa"
        Por exemplo: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:

        GSA_NAME="apigee-watcher"
        KSA_NAME="apigee-watcher-service-account-name-sa"
        Por exemplo: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Ambiente de execução

      Sem produção

      1. Defina as variáveis de ambiente KSA_NAME:

        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        Por exemplo: apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:

        GSA_NAME="apigee-runtime"
        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        Por exemplo: apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Synchronizer

      Sem produção

      1. Defina as variáveis de ambiente KSA_NAME:

        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        Por exemplo: apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:

        GSA_NAME="apigee-synchronizer"
        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        Por exemplo: apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (nível do ambiente)

      Sem produção

      1. Defina as variáveis de ambiente KSA_NAME:

        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        Por exemplo: apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod.

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        Por exemplo: apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. Vincule o papel do IAM:
        gcloud iam service-accounts add-iam-policy-binding \
          --role roles/iam.workloadIdentityUser \
          --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \
          $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
          --project $PROJECT_ID
      3. Anote a conta de serviço:
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. Verifique a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
  10. (Opcional) Veja o status das suas contas de serviço do Kubernetes na página Kubernetes: visão geral das cargas de trabalho no console do Google Cloud.

    Acesse "Cargas de trabalho"

  11. Para verificar o status da implantação novamente com apigeectl check-ready:
    ${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
1 2 3 4 5 6 7 8 (PRÓXIMO) Etapa 9: expor a entrada da Apigee 10