Configurar recursos do Google Cloud

Nesta página, descrevemos os recursos do Google Cloud que você precisa criar e configurar antes de criar clusters.

Antes de começar

  1. Crie um projeto do Google Cloud e uma conta de faturamento.

  2. Se você não for proprietário de um projeto do Google Cloud, peça ao proprietário que conceda a você os seguintes papéis do Identity and Access Management (IAM):

    Papel Finalidade
    roles/compute.viewer Obrigatório: necessário quando bmctl valida o campo clusterOperations.location no arquivo de configuração do cluster.
    roles/iam.serviceAccountAdmin Obrigatório: necessário para criar as contas de serviço exigidas pelo Google Distributed Cloud.
    roles/iam.securityAdmin Obrigatório: necessário para conceder papéis do IAM às contas de serviço exigidas pelo Google Distributed Cloud.
    roles/iam.serviceAccountKeyAdmin Obrigatório: necessário para criar arquivos de chave JSON para as contas de serviço exigidas pelo Google Distributed Cloud.
    roles/serviceusage.serviceUsageAdmin Obrigatório: necessário para ativar as APIs do Google exigidas pelo Google Distributed Cloud.
    roles/gkeonprem.admin Opcional: necessário para criar clusters usando clientes da API GKE On-Prem ou configurar um cluster para ser gerenciado pela API GKE On-Prem.
    roles/gkehub.viewer
    roles/container.viewer
    Opcional: necessário para acessar as páginas do GKE Enterprise e do Google Kubernetes Engine no console do Google Cloud.

    Para saber mais sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Ativar APIs

Várias APIs do Google precisam ser ativadas no projeto do Google Cloud associado. O Google Distributed Cloud usa APIs ao criar clusters. As APIs também são necessárias para manter uma conexão com o Google Cloud. A conexão com o Google Cloud permite que o Google Distributed Cloud use o Cloud Logging e o Cloud Monitoring, além de recursos da frota, como o Cloud Service Mesh, a Config Sync, o Controlador de Políticas e o Controlador de Configurações.

Ao usar a ferramenta bmctl para criar clusters, inclua a flag --enable-apis ao executar bmctl create config, e bmctl vai ativar as APIs listadas no comando gcloud services enable a seguir. Ao usar um cliente da API GKE On-Prem para criar um cluster de administrador ou um cluster de usuários, é preciso ativar as APIs antes de criar o cluster.

Para ativar as APIs, execute os seguintes comandos:

  1. Faça login na Google Cloud CLI:

    gcloud auth login
    
  2. Ative as APIs a seguir:

    gcloud services enable --project=PROJECT_ID \
        anthos.googleapis.com \
        anthosaudit.googleapis.com \
        anthosgke.googleapis.com \
        cloudresourcemanager.googleapis.com \
        compute.googleapis.com \
        connectgateway.googleapis.com \
        container.googleapis.com \
        gkeconnect.googleapis.com \
        gkehub.googleapis.com \
        gkeonprem.googleapis.com \
        iam.googleapis.com \
        kubernetesmetadata.googleapis.com \
        logging.googleapis.com \
        monitoring.googleapis.com \
        opsconfigmonitoring.googleapis.com \
        serviceusage.googleapis.com \
        stackdriver.googleapis.com \
        storage.googleapis.com
    

    Essas APIs do Google são necessárias para o projeto, exceto gkeonprem.googleapis.com. As duas APIs abaixo são necessárias apenas para a versão 1.29 e versões mais recentes:

    • compute.googleapis.com
    • kubernetesmetadata.googleapis.com

    Ao instalar os clusters com a proteção de um proxy, é necessário adicionar muitas dessas APIs à lista de conexões permitidas. Para conferir uma lista de APIs e endpoints que precisam ser adicionados à lista de permissões e o motivo do acesso, consulte Instalação com a proteção de um proxy .

  3. Para ver quais APIs e serviços estão ativados no seu projeto, execute o seguinte comando:

    gcloud services list --project=PROJECT_ID \
        --enabled
    

Configurar contas de serviço

Para usar as APIs do Google, o Google Distributed Cloud exige uma conta de serviço configurada com papéis específicos do IAM no projeto associado do Google Cloud. Como prática recomendada, crie contas de serviço separadas para diferentes finalidades, especialmente em ambientes de produção.

Se você for usar a ferramenta bmctl para criar clusters, inclua o flag --create-service-accounts ao executar bmctl create config para que bmctl crie as contas de serviço com o papéis do IAM. Se você usar um cliente da API GKE On-Prem para criar um cluster de administrador, o comando bmctl register bootstrap vai criar por padrão as contas de serviço com os papéis do IAM necessários quando você executar o comando para criar um cluster de inicialização.

As contas de serviço, que também são necessárias para a criação de um cluster de usuário, são criadas e configuradas ao criar o cluster de administrador que gerencia os clusters de usuário.

A tabela a seguir descreve as contas de serviço criadas automaticamente:

Conta de serviço Finalidade Papéis
anthos-baremetal-gcr O Google Distributed Cloud usa esta conta de serviço para fazer o download de imagens de contêiner do Container Registry. Nenhum
anthos-baremetal-connect O Agente do Connect usa essa conta de serviço para manter uma conexão entre o cluster e o Google Cloud. Assim, é possível acessar o cluster e os recursos de gerenciamento de carga de trabalho, incluindo o console do Google Cloud e o gateway do Connect, para interagir com o cluster. roles/gkehub.connect
anthos-baremetal-register O agente do Connect usa essa conta de serviço para registrar seus clusters com uma frota. roles/gkehub.admin
anthos-baremetal-cloud-ops O Agente do Stackdriver usa essa conta de serviço para exportar registros e métricas de clusters para o Cloud Logging e o Cloud Monitoring. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor
roles/monitoring.viewer
roles/serviceusage.serviceUsageViewer
roles/kubernetesmetadata.publisher

Configurar contas de serviço manualmente

Se preferir, crie manualmente as contas de serviço; configure-as com os papéis necessários e faça o download de arquivos de chave JSON antes de criar clusters. Se você estiver usando bmctl para criar clusters, adicione referências aos arquivos de chave JSON ao arquivo de configuração do cluster apropriado. Para ver um exemplo, consulte Como editar o arquivo de configuração. Ao usar uma API GKE On-Prem para criar um cluster de administrador, é possível especificar os arquivos de chave ao executar bmctl register bootstrap para criar o cluster de inicialização.

Para criar as contas de serviço e os arquivos de chaves:

  1. Na estação de trabalho do administrador, verifique se você está no diretório baremetal.

  2. Faça login na Google Cloud CLI, caso ainda não tenha feito isso:

    gcloud auth login
    
  3. Criar as contas de serviço:

    gcloud iam service-accounts create anthos-baremetal-gcr \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-connect \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-register \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create anthos-baremetal-cloud-ops \
        --project=PROJECT_ID
    
  4. Conceda os papéis do IAM necessários nas contas de serviço:

    gcloud projects add-iam-policy-binding  PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/gkehub.connect"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com" \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/logging.logWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/stackdriver.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/opsconfigmonitoring.resourceMetadata.writer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.dashboardEditor"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.viewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/serviceusage.serviceUsageViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/kubernetesmetadata.publisher"
    
  5. Faça o download dos arquivos de chave JSON da conta de serviço:

    gcloud iam service-accounts keys create anthos-baremetal-gcr.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-agent.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-connect@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create connect-register.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-register@PROJECT_ID.iam.gserviceaccount.com
    
    gcloud iam service-accounts keys create anthos-baremetal-cloud-ops.json \
        --project=PROJECT_ID \
        --iam-account=anthos-baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
    

Configurar uma conta de serviço que possa acessar um bucket do Cloud Storage

Você usa uma conta de serviço e um arquivo de chave para acessar o Cloud Storage. É possível usar essa conta de serviço para permitir que os snapshots de clusters sejam enviados automaticamente aos buckets do Cloud Storage ou para importar imagens de máquina virtual (VM) de buckets do Cloud Storage para uso com o ambiente de execução de VMs no GDC.

Para criar a conta de serviço e o arquivo de chave, siga estas etapas:

  1. Verifique se você está no diretório baremetal.

  2. Faça login na Google Cloud CLI, caso ainda não tenha feito isso:

    gcloud auth login
    
  3. Ative a API do Cloud Storage, storage.googleapis.com, no seu projeto do Google Cloud:

    gcloud services enable --project=PROJECT_ID \
        storage.googleapis.com
    
  4. Crie uma conta de serviço que o cluster possa usar para acessar os buckets do Cloud Storage:

    gcloud iam service-accounts create SA_NAME \
        --project=PROJECT_ID
    

    Substitua SA_NAME pelo nome da nova conta de serviço. Esse nome de conta de serviço aparece no endereço de e-mail provisionado durante a criação, no formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

  5. Crie um papel personalizado com as seguintes permissões:

    • storage.buckets.create
    • storage.buckets.get
    • storage.buckets.list
    • storage.objects.create
    • resourcemanager.projects.get
    gcloud iam roles create ROLE_ID \
        --permissions=storage.buckets.create,storage.buckets.get,storage.buckets.list,storage.objects.create \
        --project=PROJECT_ID
    

    Substitua ROLE_ID pelo nome do novo papel personalizado, como snapshotUpload. O caminho completo desse papel personalizado tem o formato projects/PROJECT_ID/roles/ROLE_ID.

  6. Adicione uma vinculação de política à conta de serviço:

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role='projects/PROJECT_ID/roles/ROLE_ID'
    
  7. Faça o download do arquivo de chave JSON da conta de serviço:

    gcloud iam service-accounts keys create OUTPUT_FILE \
        --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

Para mais informações sobre como criar snapshots de clusters e fazer upload deles de maneira automática em um bucket do Cloud Storage, consulte Criar snapshots para ajudar a diagnosticar problemas do cluster.

Para saber como importar imagens de VM do Cloud Storage, consulte Criar e usar credenciais para importar imagens do Cloud Storage para o ambiente de execução de VMs no GDC.