Passo 4: crie contas de serviço

Vista geral

Este passo explica como criar as contas de serviço do Google Cloud necessárias para o funcionamento do Apigee hybrid e atribuir-lhes as funções do IAM adequadas.

Este procedimento usa as duas variáveis de ambiente seguintes definidas no Passo 2: transfira os gráficos do Helm do Apigee. Estas variáveis são opcionais. Se não os definiu, substitua o caminho do diretório adequado para cada variável nos exemplos de código.

Ambientes de produção vs. 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 mint, o udca, etc., cada componente tem uma conta de serviço dedicada.

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.

Autenticação de contas de serviço

O Apigee hybrid suporta os seguintes métodos de autenticação de contas de serviço Google:

  • Segredos do Kubernetes
  • Ficheiros de chave JSON da conta de serviço ("Ficheiros JSON" nos separadores de seleção na secção seguinte).
  • Vault
  • Workload Identity Federation para o GKE ("WIF para o GKE" nos separadores de seleção na secção seguinte).
  • Federação de identidades de cargas de trabalho noutras plataformas ("WIF noutras plataformas" nos separadores de seleção na secção seguinte).

Na secção seguinte, escolha o procedimento para o tipo de autenticação que planeia usar.

Crie as contas de serviço

O Apigee hybrid usa as seguintes contas de serviço:

Produção

Conta de serviço Funções de IAM Gráfico Helm do Apigee
apigee-cassandra Administrador de objetos de armazenamento apigee-datastore
apigee-logger Escritor de registos apigee-telemetry
apigee-mart Agente do Apigee Connect apigee-org
apigee-metrics Escritor de métricas de monitorização apigee-telemetry
apigee-mint-task-scheduler
(Obrigatório apenas se estiver a usar a rentabilização para o Apigee Hybrid)
Nenhuma função necessária apigee-org
apigee-runtime Nenhuma função necessária apigee-env
apigee-synchronizer Apigee Synchronizer Manager
Administrador de objetos de armazenamento
apigee-env
apigee-udca Agente do Apigee Analytics apigee-org
apigee-env
apigee-watcher Agente de runtime do Apigee apigee-org

Não prod

Conta de serviço Funções de IAM Gráfico Helm do Apigee
apigee-non-prod Storage Object Admin
Logs Writer
Apigee Connect Agent
Monitoring Metric Writer
Apigee Synchronizer Manager
Apigee Analytics Agent
Apigee Runtime Agent
apigee-datastore
apigee-telemetry
apigee-org
apigee-env

A ferramenta create-service-account

O Apigee fornece uma ferramenta, create-service-account, no diretório apigee-operator/etc/tools:

$APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account

Esta ferramenta cria as contas de serviço, atribui as funções do IAM a cada conta e transfere os ficheiros de certificado no formato JSON para cada conta.

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

Crie as contas de serviço

Escolha o procedimento para o método de autenticação da conta de serviço que planeia usar na sua instalação. Para mais informações, consulte o artigo Métodos de autenticação de contas de serviço no Apigee hybrid.

Segredos do Kubernetes

Para preparar os ficheiros de chaves de contas de serviço para armazenar em segredos do Kubernetes, pode usar a ferramenta create-service-account para criar os ficheiros de chaves de contas de serviço com a flag --dir para criar um diretório para os ficheiros de chaves.

Produção

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID ao comando create-service-account.

  2. Crie as contas de serviço com os seguintes comandos, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie cada conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Verifique se os ficheiros da conta de serviço foram criados verificando o conteúdo do diretório service-accounts. O resultado deve ter o seguinte aspeto:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json

Não prod

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID ao comando create-service-account.

  2. Crie as contas de serviço com o seguinte comando, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie a conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Valide se o ficheiro da conta de serviço foi criado verificando o conteúdo do diretório service-accounts. O resultado deve ter o seguinte aspeto:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

Ficheiros JSON

Uma vez que o Helm não suporta referências a ficheiros fora do diretório do gráfico, vai criar cada ficheiro de certificado da conta de serviço no diretório do gráfico para o componente híbrido correspondente.

Para os passos seguintes, escolha se está a configurar uma instalação de produção ou não de produção.

Produção

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID aos comandos create-service-account.

  2. Crie as contas de serviço com os seguintes comandos, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie cada conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-cassandra \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-logger \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-mart \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-metrics \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-runtime \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-synchronizer \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-watcher \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org

    Se estiver a ativar a rentabilização para o Apigee Hybrid (Apigee Hybrid v1.15.1 e posterior):

    $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. Copie o apigee-udcaficheiro JSON para o diretório do gráficoapigee-env. É necessário para operações ao nível da organização e ao nível do ambiente.
    cp $APIGEE_HELM_CHARTS_HOME/apigee-org/$PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
  4. Verifique se os ficheiros da conta de serviço foram criados nos diretórios corretos, verificando o conteúdo do diretório de cada gráfico. O resultado deve ter o seguinte aspeto:
    ls ./apigee-datastore
    Chart.yaml  my-project-apigee-cassandra.json  templates  values.yaml
    
    ls ./apigee-telemetry
    Chart.yaml                     my-project-apigee-metrics.json  values.yaml
    my-project-apigee-logger.json  templates
    
    ls ./apigee-org
    Chart.yaml                                  my-project-apigee-udca.json
    my-project-apigee-mart.json                 my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json  values.yaml
    
    ls ./apigee-env
    Chart.yaml                      my-project-apigee-synchronizer.json  templates
    my-project-apigee-runtime.json  my-project-apigee-udca.json          values.yaml
    

Não prod

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID aos comandos create-service-account.

  2. Crie a conta de serviço com o seguinte comando, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos do Helm do Apigee. Pode ser-lhe pedido que crie cada conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
  3. Valide o nome do ficheiro da conta de serviço criado no diretório apigee-datastore:
    ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    Chart.yaml  PROJECT_ID-apigee-non-prod.json  templates  values.yaml
  4. Copie o ficheiro da conta de serviço para os outros diretórios de gráficos que vão precisar de fazer referência ao mesmo:
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-org/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-env/

Vault

Para preparar os ficheiros de chaves da conta de serviço para armazenar no Vault, pode usar a ferramenta create-service-account para criar os ficheiros de chaves da conta de serviço com a flag --dir para criar um diretório para os ficheiros de chaves.

Produção

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID ao comando create-service-account.

  2. Crie as contas de serviço com os seguintes comandos, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie cada conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Verifique se os ficheiros da conta de serviço foram criados verificando o conteúdo do diretório service-accounts. O resultado deve ter o seguinte aspeto:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json
    

Não prod

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID ao comando create-service-account.

  2. Crie as contas de serviço com o seguinte comando, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie a conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Valide se o ficheiro da conta de serviço foi criado verificando o conteúdo do diretório service-accounts. O resultado deve ter o seguinte aspeto:
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

WIF para o GKE

Crie as contas de serviço para a sua instalação com os seguintes comandos:

Produção

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID ao comando create-service-account.

  2. Crie as contas de serviço com os seguintes comandos, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie cada conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Valide a criação das contas de serviço Google" com o seguinte comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    O resultado deve ser semelhante ao seguinte:

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@my-project.iam.gserviceaccount.com            False
    apigee-mart                 apigee-mart@my-project.iam.gserviceaccount.com                 False
    apigee-metrics              apigee-metrics@my-project.iam.gserviceaccount.com              False
    apigee-mint-task-scheduler  apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com  False
    apigee-runtime              apigee-runtime@my-project.iam.gserviceaccount.com              False
    apigee-synchronizer         apigee-synchronizer@my-project.iam.gserviceaccount.com         False
    apigee-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

Não prod

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID ao comando create-service-account.

  2. Crie as contas de serviço com o seguinte comando, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie a conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Valide a criação das contas de serviço Google" com o seguinte comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    O resultado deve ser semelhante ao seguinte:

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

Opcional: não precisa dos ficheiros de chaves de contas de serviço para a federação de identidades da carga de trabalho para o GKE. Pode eliminar o diretório service-accounts quando terminar.

WIF noutras plataformas

Crie as contas de serviço para a sua instalação com os seguintes comandos:

Produção

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID ao comando create-service-account.

  2. Crie as contas de serviço com os seguintes comandos, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie cada conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Valide a criação das contas de serviço Google" com o seguinte comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    O resultado deve ser semelhante ao seguinte:

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@my-project.iam.gserviceaccount.com            False
    apigee-mart                 apigee-mart@my-project.iam.gserviceaccount.com                 False
    apigee-metrics              apigee-metrics@my-project.iam.gserviceaccount.com              False
    apigee-mint-task-scheduler  apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com  False
    apigee-runtime              apigee-runtime@my-project.iam.gserviceaccount.com              False
    apigee-synchronizer         apigee-synchronizer@my-project.iam.gserviceaccount.com         False
    apigee-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

Não prod

  1. Certifique-se de que a variável de ambiente PROJECT_ID está definida.
    echo $PROJECT_ID

    O create-service-account tool uses the value of thePROJECT_ID environment variable . Se não estiver definido, defina-o com o ID do seu projeto do Google Cloud ou adicione a flag --project-id PROJECT_ID ao comando create-service-account.

  2. Crie as contas de serviço com o seguinte comando, em que $APIGEE_HELM_CHARTS_HOME é o caminho onde transferiu os gráficos Helm do Apigee. Pode ser-lhe pedido que crie a conta de serviço. Responde com y.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. Valide a criação das contas de serviço Google" com o seguinte comando:
    gcloud iam service-accounts list --project $PROJECT_ID

    O resultado deve ser semelhante ao seguinte:

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

Opcional: não precisa dos ficheiros de chaves de contas de serviço para a federação de identidades da carga de trabalho para o GKE. Pode eliminar o diretório service-accounts quando terminar.

Para mais informações sobre as contas de serviço e a ferramenta create-service-account, consulte:

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.

Passo seguinte

1 2 3 4 (NEXT) Passo 5: configure a autenticação da conta de serviço 6 7 8 9 10 11