Passo 8: instale o tempo de execução híbrido

Aplique a configuração ao cluster

Siga os passos abaixo para instalar o Apigee hybrid no seu cluster:

  1. Certifique-se de que está no diretório hybrid-base-directory/hybrid-files.
    cd $HYBRID_FILES
  2. Verifique se kubectl está definido para o contexto correto através do seguinte comando. O contexto atual deve ser definido para o cluster no qual está a implementar o Apigee Hybrid.
    kubectl config current-context

    O resultado deve incluir o nome do cluster no qual está a implementar o Apigee hybrid. Por exemplo, no GKE, o nome do contexto está normalmente no formato gke_project-id_cluster-location_cluster-name, como em:

    gke_my-project_us-central1_my-cluster

    Se o nome do cluster no contexto não corresponder, o comando seguinte obtém as credenciais gcloud do cluster e define 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. Apenas para as plataformas Anthos on bare metal, AWS on GKE, EKS e GKE on prem, verifique se a variável KUBECONFIG está definida através do seguinte comando:
    echo ${KUBECONFIG}
  4. Faça uma inicialização de execução de ensaio. A execução de um teste permite-lhe verificar a existência de erros antes de serem feitas alterações ao cluster. Execute o comando init com a flag --dry-run da seguinte forma:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
  5. Se não houver erros, execute o comando init da seguinte forma:
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml

    O comando init instala os serviços de implementação do Apigee Apigee Deployment Controller e Apigee Admission Webhook.

  6. Para verificar o estado da implementação, pode usar 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, avance para o passo seguinte.

  7. Faça uma instalação de execução de ensaio. Execute o comando apply com a flag --dry-run.
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
  8. Se não existirem erros, pode aplicar os componentes de tempo de execução específicos do Apigee ao cluster com o seguinte comando:
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
  9. Para verificar o estado da implementação, execute o seguinte comando:
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml

    Repita este passo até que todos os pods estejam prontos. Os pods podem demorar vários minutos a iniciar.

GKE com Workload Identity

Se estiver a usar a Workload Identity no GKE, siga estas instruções para associar as contas de serviço do Kubernetes criadas pelo apigeectl às contas de serviço Google que criou no Passo 4: crie contas de serviço e credenciais.

Estes procedimentos usam as seguintes variáveis de ambiente. Defina estes valores na shell de comandos ou substitua-os nos exemplos de código pelos valores reais:

  • APIGEECTL_HOME: o diretório onde instalou o apigeectl.
  • CLUSTER_LOCATION: a região ou a zona do seu cluster, por exemplo: us-west1.
  • CLUSTER_LOCATION: o nome do cluster.
  • ENV_NAME: o nome do ambiente do Apigee.
  • NAMESPACE: o seu espaço de nomes do Apigee. Por predefinição, apigee.
  • HYBRID_FILES: o diretório de ficheiros híbridos, por exemplo, hybrid-base-directory/hybrid-files.
  • ORG_NAME: o nome da sua organização do Apigee.
  • PROJECT_ID: o ID do seu 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 qualquer uma das variáveis de que precisa:

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: elimine os ficheiros de chaves da conta de serviço.

    Quando executa o Apigee hybrid no GKE, a prática padrão é criar e transferir chaves privadas (ficheiros .json) para cada uma das contas de serviço. Quando usa o Workload Identity, não precisa de transferir chaves privadas de contas de serviço e adicioná-las a clusters do GKE.

    Pode eliminar os ficheiros de chaves com o seguinte comando:

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

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

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

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

    $APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
  5. Verifique se o Workload Identity está ativado para o seu cluster do GKE. Quando criou o cluster no Passo 1: crie um cluster, o passo 6 consistia em ativar o Workload Identity. Pode confirmar se o Workload Identity está ativado 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 o Workload Identity estiver ativado para o cluster, o resultado deve ser semelhante ao seguinte:

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

    Se vir null nos resultados, execute o seguinte comando para ativar a identidade da carga de trabalho para o seu 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 o Workload Identity está ativado nos seus node pools 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:"

    O resultado deve ter um aspeto semelhante ao seguinte:

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

    Se o resultado não contiver uma linha para workloadMetadataConfig:, ative a identidade de carga de trabalho para cada conjunto de nós com os seguintes comandos. Esta operação pode demorar 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

    Onde NODE_POOL_NAME é o nome de cada conjunto de nós. Na maioria das instalações do Apigee Hybrid, os dois conjuntos de nós predefinidos têm os nomes apigee-data e apigee-runtime.

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

    O resultado deve ter um aspeto semelhante ao seguinte:

    Não prod

    Para ambientes de não produção:

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

    Prod

    Para ambientes de não 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. Valide as contas de serviço com o seguinte comando:
    kubectl get sa -n $NAMESPACE

    O resultado deve ter um aspeto semelhante ao seguinte. As contas de serviço do Kubernetes em negrito são as que tem de anotar com as suas contas de serviço 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 do Apigee, anote as contas de serviço do Kubernetes correspondentes com a conta de serviço Google para o componente.

    Os passos seguintes usam duas variáveis de ambiente. Repõe os valores destas variáveis antes de cada conjunto de comandos:

    • GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta create-service-account no passo 4: crie contas de serviço.
    • KSA_NAME: O nome de uma conta de serviço do Kubernetes. Estas são as contas que indicou 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

      Não prod

      Os passos seguintes usam duas variáveis de ambiente. Repõe os valores destas variáveis antes de cada conjunto de comandos:

      • GSA_NAME: o nome de uma conta de serviço Google. Estas são as contas de serviço que criou com a ferramenta create-service-account no passo 4: crie contas de serviço.
      • KSA_NAME: O nome de uma conta de serviço do Kubernetes. Estas são as contas que indicou acima com o comando kubectl get sa -n $NAMESPACE.

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

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:
        GSA_NAME="apigee-non-prod"
        KSA_NAME="apigee-cassandra-backup"
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

        A saída deve ter uma linha que descreva a anotação, semelhante a:

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

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-cassandra-restore"
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        por exemplo: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        por exemplo: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        por exemplo: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-datastore-default-sa"
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      Prod

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

      1. Defina as variáveis de ambiente KSA_NAME e GSA_NAME:
        GSA_NAME="apigee-cassandra"
        KSA_NAME="apigee-cassandra-backup"
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
      5. A saída deve ter uma linha que descreva a anotação, semelhante a:

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

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

      1. Redefina a variável de ambiente KSA_NAME:

        KSA_NAME="apigee-cassandra-restore"
      2. Associe a função de 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. Anotar 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

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        por exemplo: apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        por exemplo: apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        por exemplo: apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

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

      1. Redefina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-datastore-default-sa"
      2. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Connect

      Não prod

      1. Defina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        por exemplo: apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. Associe a função de 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. Anotar 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. Valide 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. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • MART

      Não prod

      1. Defina a KSA_NAMEvariável de ambiente:

        KSA_NAME="apigee-mart-service-account-name-sa"
        por exemplo: apigee-mart-hybrid-example-project-123abcd-sa.
      2. Associe a função de 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. Anotar 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. Valide 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. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Métricas da Apigee

      Não prod

      1. Defina as KSA_NAMEvariáveis de ambiente:

        KSA_NAME="apigee-metrics-sa"
      2. Associe a função de 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. Anotar 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. Valide 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. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (org-level)

      A UDCA é implementada nos âmbitos ao nível da organização e do ambiente. Por conseguinte, existem duas contas de serviço do Kubernetes separadas para o UDCA, uma para cada âmbito. Pode distinguir as contas pelo nome. A conta com âmbito de ambiente inclui o nome do ambiente no nome da conta de serviço. Por exemplo:

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

      Não prod

      1. Defina as KSA_NAMEvariáveis de ambiente:

        KSA_NAME="apigee-udca-service-account-name-sa"
        por exemplo: apigee-udca-hybrid-example-project-123abcd-sa.
      2. Associe a função de 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. Anotar 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. Valide 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. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Watcher

      Não prod

      1. Defina as KSA_NAMEvariáveis de ambiente:

        KSA_NAME="apigee-watcher-service-account-name-sa"
        por exemplo: apigee-watcher-hybrid-example-project-123abcd-sa.
      2. Associe a função de 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. Anotar 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. Valide 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. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Tempo de execução

      Não prod

      1. Defina as KSA_NAMEvariáveis de ambiente:

        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        por exemplo: apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. Associe a função de 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. Anotar 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. Valide 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. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Sincronizador

      Não prod

      1. Defina as KSA_NAMEvariáveis de ambiente:

        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        por exemplo: apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. Associe a função de 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. Anotar 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. Valide 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. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA (env-level)

      Não prod

      1. Defina as KSA_NAMEvariáveis de ambiente:

        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        por exemplo: apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. Associe a função de 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. Anotar 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. Valide 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. Associe a função de 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. Anotar 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. Valide a anotação:
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
  10. (Opcional) Pode ver o estado das suas contas de serviço do Kubernetes na página Kubernetes: Vista geral das cargas de trabalho no Google Cloud console.

    Aceda a Cargas de trabalho

  11. Para verificar novamente o estado da implementação com apigeectl check-ready:
    ${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
1 2 3 4 5 6 7 8 (NEXT) Passo 9: exponha a entrada do Apigee 10