Passo 4: crie contas de serviço

Este passo explica como criar as contas de serviço da Google Cloud necessárias para o funcionamento do Apigee hybrid.

Vista geral

O Apigee hybrid usa contas de serviço do Google Cloud para permitir que os componentes híbridos comuniquem fazendo chamadas de API autorizadas.

Ambientes de produção vs. de não produção

Este guia refere-se às instalações de produção ("Prod") e não produção ("Non-prod"). Uma instalação de produção é otimizada para uma maior capacidade de utilização, armazenamento e escalabilidade. Uma instalação de não produção usa menos recursos e destina-se principalmente a fins de aprendizagem e demonstração.

Quando cria e configura contas de serviço para o Apigee Hybrid, é importante ter em atenção o tipo de instalação que está a segmentar.

Para instalações de produção, recomendamos que crie uma conta de serviço separada para cada componente híbrido do Apigee. Por exemplo, o tempo de execução, o mart, as métricas, o udca, etc., têm cada um a sua própria conta de serviço.

Para instalações de não produção, pode criar uma única conta de serviço que se aplique a todos os componentes.

Para saber mais sobre as contas de serviço usadas pelo Apigee e as funções que lhes são atribuídas, consulte o artigo Contas de serviço e funções usadas pelos componentes híbridos.

Workload Identity no GKE

Para instalações híbridas do Apigee no GKE, o Google Cloud oferece uma opção denominada Workload Identity para autenticar componentes de runtime híbridos. Esta opção não usa ficheiros de certificados transferidos para autenticar as contas de serviço. Em vez disso, associa as contas de serviço do Google Cloud que criar neste passo às contas de serviço do Kubernetes no cluster do Kubernetes.

A identidade da carga de trabalho só está disponível em instalações do GKE.

Crie as contas de serviço

Use os procedimentos seguintes para criar as contas de serviço do Google Cloud para a sua instalação híbrida:

  • A ferramenta create-service-account: se estiver a instalar o Apigee Hybrid numa plataforma diferente do GKE ou se estiver a instalar no GKE, mas não quiser usar a identidade da carga de trabalho, use a ferramenta fornecida pela Apigee, create-service-account, para criar as contas de serviço, atribuir as funções às contas de serviço e criar e transferir os ficheiros de chave para a conta de serviço num único comando. Siga os procedimentos em
    Crie contas de serviço com create-service-account.
  • Google Cloud console ou gcloud: se estiver a instalar o Apigee Hybrid no GKE e planear usar o Workload Identity, use o Google Cloud console ou o gcloud para criar as contas de serviço sem transferir os ficheiros de certificado. Siga os procedimentos em
    Crie contas de serviço na Google Cloud console ou com gcloud.

Crie contas de serviço com o create-service-account

Use a ferramenta create-service-account nas seguintes circunstâncias:

  • Está a fazer a instalação numa plataforma que não seja o GKE
  • Está a instalar no GKE, mas não planeia usar a identidade de carga de trabalho.

Caso contrário, avance para Criar contas de serviço no Google Cloud console ou com gcloud.

  1. Certifique-se de que as variáveis de ambiente HYBRID_FILES e PROJECT_ID estão definidas.

    O PROJECT_ID tem de estar definido como o ID do seu projeto do Google Cloud, porque a ferramenta create-service-account lê a variável de ambiente PROJECT_ID para criar as contas de serviço no projeto correto.

    echo $HYBRID_FILES
    echo $PROJECT_ID
  2. Crie a conta de serviço com o seguinte comando:

    Não prod

    Este comando cria uma única conta de serviço denominada apigee-non-prod para utilização numa instalação não de produção e transfere o ficheiro de chave para a conta de serviço no diretório $HYBRID_FILES/service-accounts.

    $HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts

    Produção

    Este comando cria todas as contas de serviço individuais para uma instalação de produção e transfere os ficheiros de chaves para as contas de serviço no diretório $HYBRID_FILES/service-accounts.

    $HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts

    Se vir a seguinte mensagem, introduza y:

    [INFO]: gcloud configured project ID is project_id.
     Enter: y to proceed with creating service account in project: project_id
     Enter: n to abort.

    Se estiver a criar uma conta de serviço específica pela primeira vez, a ferramenta cria-a sem mais pedidos.

    No entanto, se vir a seguinte mensagem e comando, introduza y para gerar novas chaves:

    [INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists.
    ...
     [INFO]: The service account might have keys associated with it. It is recommended to use existing keys.
     Press: y to generate new keys.(this does not deactivate existing keys)
     Press: n to skip generating new keys.
  3. Verifique se a chave da conta de serviço foi criada através do seguinte comando. É responsável por armazenar estas chaves privadas em segurança. Os nomes dos ficheiros das chaves têm como prefixo o nome do seu projeto do Google Cloud.
    ls $HYBRID_FILES/service-accounts

    O resultado deve ter um aspeto semelhante ao seguinte:

    project_id-apigee-non-prod.json

Crie contas de serviço na Google Cloud console ou com gcloud

Se planeia usar a identidade de carga de trabalho no GKE para autenticar componentes de tempo de execução híbridos, não precisa de criar nem transferir ficheiros de certificados para as contas de serviço. Por isso, não use a ferramenta create-service-account. Em alternativa, crie as contas de serviço na Google Cloud console ou com a API IAM em gcloud.

Caso contrário, avance para Crie contas de serviço com o create-service-account.

Consola

Siga as instruções em Crie contas de serviço para criar as seguintes contas de serviço e atribuir-lhes as seguintes funções:

Não prod

Para instalações de não produção:

Nome da conta de serviço Funções de IAM
apigee-non-prod
  • Agente do Apigee Analytics
  • Agente do Apigee Connect
  • Agente de runtime do Apigee
  • Apigee Synchronizer Manager
  • Escritor de registos
  • Escritor de métricas de monitorização
  • Administrador de objetos de armazenamento

Produção

Para instalações de produção:

Instalações de produção
Nome da conta de serviço Funções de IAM
apigee-cassandra Administrador de objetos de armazenamento
apigee-logger Escritor de registos
apigee-mart Agente do Apigee Connect
apigee-metrics Escritor de métricas de monitorização
apigee-runtime Nenhuma função necessária
apigee-synchronizer Apigee Synchronizer Manager
apigee-udca Agente do Apigee Analytics
apigee-watcher Agente de runtime do Apigee

gcloud

Use os seguintes comandos para criar as contas de serviço e atribuir as funções da IAM.

Não prod

Para instalações de não produção:

  1. Crie a conta de serviço apigee-non-prod:
    gcloud iam service-accounts create apigee-non-prod \
      --display-name="apigee-non-prod" \
      --project=$PROJECT_ID
  2. Atribua as funções do IAM à conta de serviço:
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"
  3. Verifique as associações de funções:
    gcloud projects get-iam-policy ${PROJECT_ID} \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"

Produção

Para instalações de produção:

Use os seguintes comandos para criar cada conta de serviço e atribuir a função do IAM correspondente.

  1. Conta de serviço apigee-cassandra:
    gcloud iam service-accounts create apigee-cassandra \
      --display-name="apigee-cassandra" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
  2. Conta de serviço apigee-logger:
    gcloud iam service-accounts create apigee-logger \
      --display-name="apigee-logger" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  3. Conta de serviço apigee-mart:
    gcloud iam service-accounts create apigee-mart \
      --display-name="apigee-mart" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
  4. Conta de serviço apigee-metrics:
    gcloud iam service-accounts create apigee-metrics \
      --display-name="apigee-metrics" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  5. Conta de serviço apigee-runtime:
    gcloud iam service-accounts create apigee-runtime \
      --display-name="apigee-runtime" \
      --project=$PROJECT_ID
  6. Conta de serviço apigee-synchronizer:
    gcloud iam service-accounts create apigee-synchronizer \
      --display-name="apigee-synchronizer" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
  7. Conta de serviço apigee-udca:
    gcloud iam service-accounts create apigee-udca \
      --display-name="apigee-udca" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
  8. Conta de serviço apigee-watcher:
    gcloud iam service-accounts create apigee-watcher \
      --display-name="apigee-watcher" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"

Para saber mais sobre como criar contas de serviço com o gcloud, consulte o artigo Crie contas de serviço.

Agora, criou contas de serviço e atribuiu as funções necessárias aos componentes do Apigee hybrid. Em seguida, crie os certificados TLS necessários para o gateway de entrada híbrido.

1 2 3 4 (NEXT) Passo 5: crie certificados TLS 6 7 8 9 10 11