Crie clusters de administrador

No Google Distributed Cloud, configura clusters de administrador para gerir outros clusters em segurança. Pode criar, atualizar, fazer a atualização ou eliminar clusters de utilizadores a partir de clusters de administrador. Os clusters de utilizadores executam cargas de trabalho separadamente da administração, pelo que as informações confidenciais estão protegidas.

Os clusters de administrador que gerem cargas de trabalho de vários clusters podem oferecer fiabilidade de alta disponibilidade (HA). Num cluster de HA, se um nó do plano de controlo falhar, os outros nós continuam a funcionar.

Um cluster de administrador num ambiente de vários clusters oferece a melhor segurança fundamental. Uma vez que o acesso aos dados de administração está separado das cargas de trabalho, quem acede às cargas de trabalho do utilizador não tem acesso a dados administrativos confidenciais, como chaves SSH e dados da conta de serviço. Como tal, existe um compromisso entre a segurança e os recursos necessários, uma vez que um cluster de administrador separado significa que precisa de recursos dedicados para a gestão e as cargas de trabalho.

Cria um cluster de administrador com o comando bmctl. Depois de criar um cluster de administrador, cria clusters de utilizador para executar cargas de trabalho.

Pré-requisitos:

  • A versão mais recente do bmctl é transferida (gs://anthos-baremetal-release/bmctl/1.33.100-gke.89/linux-amd64/bmctl) do Cloud Storage.
  • A estação de trabalho que executa o bmctl tem conectividade de rede com todos os nós nos clusters de utilizadores de destino.
  • A estação de trabalho que executa o bmctl tem conetividade de rede com o servidor da API do cluster (VIP do plano de controlo).
  • A chave SSH usada para criar o cluster de administrador está disponível para root ou um utilizador não root com privilégios sudo sem palavra-passe em todos os nós no cluster de administrador de destino.
  • A conta de serviço de registo de associação está configurada para utilização com o Connect.

Consulte o início rápido do Google Distributed Cloud para ver instruções passo a passo detalhadas sobre como criar um cluster híbrido. A criação de um cluster de administrador é semelhante à criação de um cluster híbrido, exceto que não executa cargas de trabalho no cluster de administrador.

Ative o SELinux

Se quiser ativar o SELinux para proteger os seus contentores, tem de se certificar de que o SELinux está ativado no modo Enforced em todas as suas máquinas anfitriãs. A partir da versão 1.9.0 ou posterior do Google Distributed Cloud, pode ativar ou desativar o SELinux antes ou depois da criação ou das atualizações do cluster. O SELinux está ativado por predefinição no Red Hat Enterprise Linux (RHEL). Se o SELinux estiver desativado nas suas máquinas anfitriãs ou não tiver a certeza, consulte o artigo Proteger os contentores com o SELinux para obter instruções sobre como o ativar.

O Google Distributed Cloud suporta o SELinux apenas em sistemas RHEL.

Inicie sessão na CLI gcloud e crie um ficheiro de configuração do cluster de administrador

  1. Defina as credenciais predefinidas que o Google Distributed Cloud pode usar para criar o cluster com o seguinte comando:

    gcloud auth application-default login
    
  2. Para usar as funcionalidades de ativação automática da API e criação de contas de serviço nesta página, conceda a função Proprietário do projeto a esse principal. Se o principal não puder ter a função Proprietário do projeto, conclua o passo seguinte.

  3. Para garantir que a criação do cluster pode ser bem-sucedida sem conceder a função de proprietário do projeto, adicione as seguintes funções de IAM ao principal:

    • Administrador da conta de serviço
    • Administrador da chave da conta de serviço
    • Administrador de IAM de projetos
    • Leitor do Compute
    • Administrador de utilização do serviço

    Se o principal for uma conta de serviço com essas funções, pode executar:

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    Substitua JSON_KEY_FILE pelo caminho para o ficheiro de chave JSON da conta de serviço.

  4. Obtenha o ID do seu Google Cloud projeto e armazene-o numa variável de ambiente para o usar na criação de clusters:

    export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

Crie uma configuração de cluster de administrador com bmctl

Depois de iniciar sessão na CLI gcloud e ter o projeto configurado, pode criar o ficheiro de configuração do cluster com o comando bmctl.

No exemplo seguinte, todas as contas de serviço são criadas automaticamente pelo comando bmctl create config:

bmctl create config -c ADMIN_CLUSTER_NAME --enable-apis \
    --create-service-accounts --project-id=CLOUD_PROJECT_ID

Substitua o seguinte:

  • ADMIN_CLUSTER_NAME: o nome do novo cluster.
  • CLOUD_PROJECT_ID: o ID do projeto Google Cloud ou a variável de ambiente $CLOUD_PROJECT_ID.

Segue-se um exemplo para criar um ficheiro de configuração para um cluster de administrador denominado admin1 associado ao ID do projeto my-gcp-project:

bmctl create config -c admin1 --create-service-accounts --enable-apis --project-id=my-gcp-project

O ficheiro é escrito em bmctl-workspace/admin1/admin1.yaml.

Em alternativa à ativação automática das APIs e à criação de contas de serviço, também pode fornecer às suas contas de serviço existentes as autorizações do IAM adequadas. Isto significa que pode ignorar a criação automática da conta de serviço no exemplo anterior no comando bmctl:

bmctl create config -c admin1 --project-id=my-gcp-project

Edite o ficheiro de configuração do cluster

Agora que tem um ficheiro de configuração do cluster, edite-o para fazer as seguintes alterações:

  1. Forneça a chave privada de SSH para aceder aos nós do cluster de administrador:

    # bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes
    # resource, this section can only be included when using bmctl to
    # create the initial admin/admin cluster. Afterwards, when creating user clusters by directly
    # applying the cluster and node pool resources to the existing cluster, you must remove this
    # section.
    gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
    sshPrivateKeyPath: /path/to/your/ssh_private_key
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
    
  2. Registe os seus clusters numa frota. O ID do projeto que especificou no comando bmctl create config é adicionado automaticamente ao campo gkeConnect.projectID no ficheiro de configuração do cluster. Este projeto é denominado projeto anfitrião da frota.

    • Se criou o ficheiro de configuração através das funcionalidades de ativação automática da API e de criação de contas de serviço, pode ignorar este passo.

    • Se criou o ficheiro de configuração sem usar as funcionalidades de ativação automática da API e de criação de contas de serviço, consulte as chaves JSON da conta de serviço transferidas nos campos gkeConnectAgentServiceAccountKeyPath e gkeConnectRegisterServiceAccountKeyPath correspondentes do ficheiro de configuração do cluster.

    • Opcionalmente, pode adicionar gkeConnect.location à especificação do cluster para especificar a Google Cloud região em que o Fleet e os serviços Connect são executados. Esta subscrição regional restringe o tráfego do serviço de frota à sua região. Se incluir gkeConnect.location na especificação do cluster, a região que especificar tem de ser igual à região configurada em clusterOperations.location. Se as regiões não forem iguais, a criação do cluster falha.

  3. Verifique se a configuração especifica um tipo de cluster de admin (o valor predefinido):

    spec:
      # Cluster type. This can be:
      #   1) admin:  to create an admin cluster. This can later be used to create user clusters.
      #   2) user:   to create a user cluster. Requires an existing admin cluster.
      #   3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.
      #   4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.
      type: admin
    
  4. Se a API GKE On-Prem estiver ativada no seu Google Cloud projeto, todos os clusters no projeto são inscritos na API GKE On-Prem automaticamente na região configurada em clusterOperations.location.

    • Se quiser inscrever todos os clusters no projeto na API GKE On-Prem, certifique-se de que executa os passos em Antes de começar para ativar e usar a API GKE On-Prem no projeto.

    • Se não quiser inscrever o cluster na API GKE On-Prem, inclua esta secção e defina gkeOnPremAPI.enabled como false. Se não quiser inscrever nenhum cluster no projeto, desative gkeonprem.googleapis.com (o nome do serviço para a API GKE On-Prem) no projeto. Para ver instruções, consulte o artigo Desativar serviços.

  5. Altere o ficheiro de configuração para especificar um plano de controlo de alta disponibilidade com vários nós. Especifique um número ímpar de nós para ter um quórum maioritário para a HA:

      # Control plane configuration
      controlPlane:
        nodePoolSpec:
          nodes:
          # Control plane node pools. Typically, this is either a single machine
          # or 3 machines if using a high availability deployment.
          - address: 10.200.0.4
          - address: 10.200.0.5
          - address: 10.200.0.6
    
  6. Especifique a densidade de pods dos nós do cluster:

    ....
    # NodeConfig specifies the configuration that applies to all nodes in the cluster.
    nodeConfig:
      # podDensity specifies the pod density configuration.
      podDensity:
        # maxPodsPerNode specifies at most how many pods can be run on a single node.
        maxPodsPerNode: 250
    ....
    

    Para clusters de administrador, os valores permitidos para maxPodsPerNode são 32-250 para clusters de HA e 64-250 para clusters sem HA. O valor predefinido, se não for especificado, é 110. Não é possível atualizar este valor depois de criar o cluster.

    A densidade de pods também é limitada pelos recursos de IP disponíveis do cluster. Para ver detalhes, consulte Redes de pods.

Crie o cluster de administrador com a configuração do cluster

Use o comando bmctl para implementar o cluster:

bmctl create cluster -c ADMIN_CLUSTER_NAME

ADMIN_CLUSTER_NAME especifica o nome do cluster criado na secção anterior.

O exemplo seguinte mostra o comando para criar um cluster denominado admin1:

bmctl create cluster -c admin1

Exemplos de configurações de clusters de administrador

Para ver exemplos de configurações de clusters de administrador, consulte Clusters de administrador nos Exemplos de configuração de clusters.