Nesta página, explicamos as contas de serviço e as chaves do Google Cloud necessárias para instalar o GKE On-Prem.
Visão geral de contas de serviço
Antes de instalar o GKE On-Prem, você precisa ter estas contas de serviço:
- Conta de serviço permitida na lista
- Conta de serviço connect-register
- Conta de serviço connect-agent
- Conta de serviço logging-monitoring
Dependendo dos recursos que você quer ativar, talvez também seja necessário ter algumas contas de serviço opcionais.
Noções básicas sobre contas de serviço e projetos do Google Cloud
Ao criar uma conta de serviço, você a cria em um projeto do Google Cloud. O projeto do Cloud em que você cria uma conta de serviço é chamado de projeto pai da conta de serviço. A conta de serviço é um membro do próprio projeto pai.
Você identifica o projeto pai de uma conta de serviço observando
o endereço de e-mail dela. Por exemplo, veja o endereço de e-mail
de uma conta de serviço denominada logger
. O projeto pai é alice-123
.
logger@alice-123.iam.gserviceaccount.com
Ao conceder um papel de gerenciamento de identidade e acesso (IAM, na sigla em inglês) a uma conta de serviço, você o concede à conta de serviço em um projeto específico do Cloud. Isso segue o padrão geral de conceder um papel a uma identidade em um recurso.
Por exemplo, é possível conceder o papel bigquery.dataEditor
à
conta de serviço logger@alice-123.iam.gserviceaccount.com
no projeto bob-456
. Nesse caso, a conta de serviço é a identidade e o
projeto do Google Cloud é o recurso.
É importante entender que é possível conceder um papel a uma conta de serviço em um projeto que não seja o projeto pai da conta de serviço.
Conta de serviço permitida na lista
Você já tem uma conta de serviço permitida na lista.
Se você ainda não tiver criado um arquivo de chave JSON para sua conta de serviço permitida, crie um agora:
gcloud iam service-accounts keys create whitelisted-key.json \ --iam-account [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]
[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da sua conta de serviço permitida.
Como conceder papéis à sua conta de serviço permitida
O arquivo de configuração do GKE On-Prem tem vários campos que especificam um ID de projeto do Google Cloud.
usercluster: usagemetering: bigqueryprojectid: "" ... gkeconnect: projectid: "" ... stackdriver: projectid: "" ... cloudauditlogging: projectid: ""
Os IDs de projeto no arquivo de configuração do GKE On-Prem não precisam
ser distintos. Por exemplo, gkeconnect.projectid
pode ser igual a
stackdriver.projectid
. Na verdade, todos os IDs de projeto em seu arquivo de configuração
podem ser iguais.
Sua conta de serviço permitida precisa receber os seguintes papéis do IAM em cada projeto especificado no arquivo de configuração local do GKE:
- serviceusage.serviceUsageViewer
- iam.serviceAccountCreator
- iam.roleViewer
Se você usou gkeadm
para criar a estação de trabalho de administrador, gkeadm
definiu os
seguintes campos no arquivo de configuração local do GKE para o ID do
projeto pai da sua conta de serviço permitida.
gkeconnect.projectid
stackdriver.projectid
Além disso, gkeadm
colocou na lista de permissões da sua conta de serviço os papéis necessários no
projeto pai da conta de serviço permitida.
Se você não tiver usado gkeadm
para criar a estação de trabalho de administrador, precisará
conceder os papéis por conta própria.
Para cada projeto especificado no arquivo de configuração do GKE On-Prem, conceda à conta a lista de permissões os papéis necessários:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/iam.roleViewer"
[PROJECT_ID] é o ID de um dos projetos especificados no arquivo de configuração do GKE On-Prem.
Outras contas de serviço exigidas
Lembre-se de que, além da conta de serviço permitida, você precisa das contas a seguir:
- Conta de serviço connect-register
- Conta de serviço connect-agent
- Conta de serviço logging-monitoring
Dependendo de como você criou a estação de trabalho de administrador, talvez já tenha essas contas de serviço.
Caso 1: o gkeadm criou contas de serviço para você.
Se você usou o gkeadm
para criar sua estação de trabalho de administrador e passou
sinalização --auto-create-service-accounts
, o gkeadm
fez o seguinte:
Criou uma conta de serviço connect-register. Concedeu os papéis apropriados do IAM à conta de serviço connect-register. Criou um arquivo de chave JSON para a conta de serviço de connect-register. Copiou o arquivo de chave JSON para a estação de trabalho do administrador.
Criou uma conta de serviço connect-agent. Concedeu os papéis apropriados do IAM à conta de serviço do agente de conexão. Criou um arquivo de chave JSON para a conta de serviço de connect-agent. Copiou o arquivo de chave JSON para a estação de trabalho do administrador.
Criou uma conta de serviço logging-monitoring. Concedeu os papéis apropriados o IAM à conta de serviço de monitoramento de registros. Criou um arquivo de chave JSON para a conta de serviço logging-monitoring. Copiou o arquivo de chave JSON para a estação de trabalho do administrador.
Quando gkeadm
cria contas de serviço para você, ele cria as contas no
projeto do Cloud que é o pai da conta de serviço permitida.
Além disso, o gkeadm
concede papéis às contas de serviço no mesmo projeto. Para
informações sobre como usar mais de um projeto do Cloud, consulte
Como usar vários projetos do Google Cloud.
Caso 2: o gkeadm não criou contas de serviço para você.
Se você não tiver usado o gkeadm
com a sinalização --auto-create-service-accounts
criar sua estação de trabalho de administrador, precisará criar suas próprias contas de serviço.
Além disso, para cada conta de serviço, é necessário criar um arquivo de chave JSON e conceder os
devidos papéis do Cloud IAM.
Como criar suas próprias contas de serviço
Se você já tiver contas de serviço conforme descrito no caso 1, ignore esta seção.
Nesta seção, mostramos como criar as contas de serviço que você precisa para instalar e usar o GKE On-Prem. Ele também mostra como criar arquivos de chave JSON para suas contas de serviço e como conceder os papéis do IAM apropriados às contas de serviço.
Conta de serviço connect-register
O Connect usa essa conta de serviço para registrar seus clusters do GKE On-Prem no Google Cloud.
Crie sua conta de serviço connect-register:
gcloud iam service-accounts create connect-register-svc-account --project [PARENT_PROJECT_ID]
[PARENT_PROJECT_ID] é o ID do projeto que será o pai da sua conta de serviço connect-register.
Crie uma chave para sua conta de serviço connect-register:
gcloud iam service-accounts keys create connect-register-key.json \ --iam-account [CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL]
[CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da sua conta de serviço connect-register.
Conceda o papel gkehub.admin
à sua conta de serviço connect-register:
gcloud projects add-iam-policy-binding [CONNECT_PROJECT_ID] \ --member "serviceAccount:[CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/gkehub.admin"
[CONNECT_PROJECT_ID] é o ID do projeto do connect. Este é o projeto em que você vai registrar e manter uma conexão com os clusters do GKE On-Prem.
Conta de serviço connect-agent
O Connect usa essa conta de serviço para manter uma conexão entre o GKE On-Prem e o Google Cloud.
Crie a conta de serviço connect-agent:
gcloud iam service-accounts create connect-agent-svc-account --project [PARENT_PROJECT_ID]
[PARENT_PROJECT_ID] é o ID do projeto que será o pai da conta de serviço connect-agent.
Crie uma chave para sua conta de serviço connect-agent:
gcloud iam service-accounts keys create connect-agent-key.json \ --iam-account [CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL]
[CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da sua conta de serviço connect-agent.
Conceda o papel gkehub.connect
à sua conta de serviço connect-agent:
gcloud projects add-iam-policy-binding [CONNECT_PROJECT_ID] \ --member "serviceAccount:[CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/gkehub.connect"
[CONNECT_PROJECT_ID] é o ID do projeto connect. Este é o projeto em que você vai registrar e manter uma conexão com os clusters do GKE On-Prem.
Conta de serviço logging-monitoring
O Connect usa essa conta de serviço para exportar registros de clusters para o Cloud Logging.
Crie a conta de serviço do logging-monitoring:
gcloud iam service-accounts create logging-monitoring-svc-account --project [PARENT_PROJECT_ID]
[PARENT_PROJECT_ID] é o ID do projeto que será o pai da conta de serviço logging-monitoring.
Crie uma chave para sua conta de serviço logging-monitoring:
gcloud iam service-accounts keys create logging-monitoring-key.json \ --iam-account [LOG_MON_SERVICE_ACCOUNT_EMAIL]
[LOG_MON_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail de sua conta de serviço logging-monitoring.
Conceda os papéis stackdriver.resourceMetadata.writer
, logging.logWriter
e
monitoring.metricWriter
à conta de serviço logging-monitoring:
gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \ --member "serviceAccount:[LOG_MOM_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \ --member "serviceAccount:[LOG_MOM_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \ --member "serviceAccount:[LOG_MON_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/monitoring.metricWriter"
[LOG_MON_PROJECT_ID] é o ID do projeto logging-monitoring. Este é o projeto em que você verá os registros dos clusters do GKE On-Prem.
Contas de serviço opcionais
Conta de serviço de medição de uso
A medição de uso do GKE usa essa conta de serviço para armazenar dados de uso em um conjunto de dados do BigQuery.
Se você quiser ativar a medição de uso do GKE para um cluster, precisará
ter uma conta de serviço de medição de uso. A ferramenta gkeadm
não cria essa
conta de serviço, portanto, você precisa criá-la.
Crie sua conta de serviço de medição de uso:
gcloud iam service-accounts create usage-metering-svc-account --project [PARENT_PROJECT_ID]
[PARENT_PROJECT_ID] é o ID do projeto que será o pai da conta de serviço de medição de uso.
Crie uma chave para sua conta de serviço de medição de uso:
gcloud iam service-accounts keys create usage-metering-key.json \ --iam-account [USAGE_METERING_SERVICE_ACCOUNT_EMAIL]
[USAGE_METERING_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da conta de serviço de medição de uso.
Conceda o papel bigquery.dataEditor
à conta de serviço de medição de uso:
gcloud projects add-iam-policy-binding [USAGE_METERING_PROJECT_ID] \ --member "serviceAccount:[USAGE_METERING_SERVICE_ACCOUNT_EMAIL]" \ --role "roles/bigquery.dataEditor"
[USAGE_METERING_PROJECT_ID] é o ID do projeto de medição de uso. Este é o projeto em que você quer ver os dados de uso de cluster do GKE On-Prem.
Conta de serviço do Audit Logging
O GKE On-Prem usa essa conta de serviço para enviar registros de auditoria do Kubernetes do cluster para os registros de auditoria do Cloud.
Se você quiser ativar os registros de auditoria do Cloud em sua instalação
do GKE On-Prem, será necessário ter uma conta de serviço de registro de auditoria. A ferramenta gkeadm
não cria essa conta de serviço, portanto, você precisa criá-la.
Crie sua conta de serviço de registro de auditoria:
gcloud iam service-accounts create audit-logging-svc-account --project [PARENT_PROJECT_ID]
[PARENT_PROJECT_ID] é o ID do projeto do Google Cloud que será o pai da conta de serviço de registro de auditoria.
Crie uma chave para a conta de serviço de registro de auditoria:
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account [AUDIT_LOGGINGSERVICE_ACCOUNT_EMAIL]
[AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da conta de serviço de registro de auditoria.
Você não precisa conceder papéis à conta de serviço de registro de auditoria.