Esta página é a segunda parte de um guia que explica a utilização do Google Distributed Cloud (apenas software) em hardware físico (anteriormente conhecido como Google Distributed Cloud Virtual, anteriormente conhecido como clusters do Anthos em hardware físico) para criar uma pequena instalação de prova de conceito de clusters do GKE no seu hardware físico. A primeira parte, Configure uma infraestrutura mínima, mostra-lhe como configurar o hardware, planear endereços IP e configurar a infraestruturaGoogle Cloud necessária. Este documento baseia-se na configuração e no planeamento da secção anterior e mostra-lhe como criar um cluster de administrador e um cluster de utilizador. Em seguida, pode criar um serviço e uma entrada.
Esta página destina-se a administradores, arquitetos e operadores que configuram, monitorizam e gerem o ciclo de vida da infraestrutura tecnológica subjacente. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no Google Cloud conteúdo, consulte Funções e tarefas comuns de utilizador do GKE.
Este guia ajuda a criar uma instalação mínima do Google Distributed Cloud. Esta instalação mínima pode não ser adequada para as suas necessidades de produção reais e exemplos de utilização. Para obter informações sobre instalações de produção, consulte os guias de instalação.
Antes de começar
Certifique-se de que configurou o hardware e planeou os seus endereços IP conforme descrito na parte anterior deste guia, Configure a infraestrutura mínima. Em alternativa, use o planeador de requisitos de rede na secção Pré-requisitos do fluxo Crie um cluster de administrador bare metal na Google Cloud consola.
Se quiser usar o Terraform para criar o cluster de utilizadores, precisa do Terraform na sua estação de trabalho de administrador ou noutro computador.
Certifique-se de que tem os componentes mais recentes da CLI do Google Cloud instalados:
gcloud components update
Siga estes passos para ativar e usar a API GKE On-Prem:
Ative a API no seu projeto:
gcloud services enable \ --project PROJECT_ID \ gkeonprem.googleapis.com
Substitua
PROJECT_ID
pelo ID do projeto do projeto de anfitrião da sua frota.Se receber um erro
PERMISSION_DENIED
, verifique novamente o ID do projeto que introduziu. Se o ID do projeto estiver correto, executegcloud auth login
para iniciar sessão na CLI Google Cloud com a conta que tem acesso ao projeto.Se esta for a primeira vez que ativa a API GKE On-Prem no seu projeto, tem de inicializar a API. Pode fazê-lo chamando um comando da CLI gcloud que apresenta as versões disponíveis que pode usar para criar um cluster:
gcloud container bare-metal clusters query-version-config \ --project=PROJECT_ID \ --location="us-central1"
Vista geral do procedimento
A criação de clusters básicos consiste nestes passos principais:
Reúna informações usadas para especificar a configuração dos seus clusters.
Crie um cluster de administrador para gerir o cluster de utilizadores.
Crie um cluster de utilizadores que possa executar as suas cargas de trabalho.
1. Recolha informações
Use as informações que preparou em Configure a infraestrutura mínima ou do planeador de rede para preencher cada marcador de posição na tabela seguinte. Os marcadores de posição correspondem aos valores dos campos nos ficheiros de configuração do cluster para a instalação mínima de um cluster de administrador e um cluster de utilizador. Alguns marcadores de posição estão definidos para os valores pré-preenchidos do ficheiro de configuração do cluster gerado, mas todos os marcadores de posição são editáveis.
Informações básicas do cluster | |
O nome do cluster de administrador que está a criar. A localização e a nomenclatura dos artefactos do cluster na estação de trabalho do administrador baseiam-se no nome do cluster. O espaço de nomes do cluster é derivado do nome do cluster. | ADMIN_CLUSTER_NAME |
O nome do cluster de utilizadores que está a criar. A localização e a nomenclatura dos artefactos do cluster na estação de trabalho do administrador baseiam-se no nome do cluster. O espaço de nomes do cluster é derivado do nome do cluster. | USER_CLUSTER_NAME |
A versão do bmctl que transferiu na primeira parte
deste guia. |
CLUSTER_VERSION |
Informações da conta | |
O caminho para o ficheiro de chave privada SSH na sua estação de trabalho de administrador. Por predefinição, o caminho é/home/USERNAME/.ssh/id_rsa . |
SSH_PRIVATE_KEY_PATH |
O ID do Google Cloud projeto que quer usar para associar o cluster a Google Cloud e ver registos e métricas. Este projeto também é denominado projeto anfitrião da frota. | PROJECT_ID |
O endereço de email associado à sua Google Cloud
conta. Por exemplo: alex@example.com . |
GOOGLE_ACCOUNT_EMAIL |
Endereços IP da máquina do nó | |
Um endereço IP para o nó do plano de controlo do cluster de administrador. | ADMIN_CP_NODE_IP |
Um endereço IP para o nó do plano de controlo do cluster de utilizadores. | USER_CP_NODE_IP |
Um endereço IP para o nó de trabalho do cluster de utilizadores. | USER_WORKER_NODE_IP |
Endereços IP virtuais | |
VIP para o servidor da API Kubernetes do cluster de administrador. | ADMIN_CP_VIP |
VIP para o servidor da API Kubernetes do cluster de utilizador. | USER_CP_VIP |
Um VIP para usar como endereço externo para o proxy de entrada. | USER_INGRESS_VIP |
Intervalo de dez endereços IP para utilização como endereços IP externos para serviços do tipo LoadBalancer. Tenha em atenção que este intervalo inclui o VIP de entrada, que é necessário para o MetalLB. Nenhum outro endereço IP pode sobrepor-se a este intervalo. | START_IP-END_IP |
CIDRs de pods e serviços | |
Intervalo de endereços IP na notação de blocos CIDR para utilização por pods no cluster de administração. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado, é 192.168.0.0/16 . |
192.168.0.0/16 |
Intervalo de endereços IP na notação de blocos CIDR para utilização pelos serviços no cluster de administração. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado, é 10.96.0.0/20 . |
10.96.0.0/20 |
Intervalo de endereços IP na notação de blocos CIDR para utilização por pods no cluster de utilizadores. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado e é o valor predefinido na consola, é 192.168.0.0/16 . |
192.168.0.0/16 |
Intervalo de endereços IP na notação de blocos CIDR para utilização pelos serviços no cluster de utilizadores. O valor inicial recomendado, que é pré-preenchido no ficheiro de configuração do cluster gerado e é o valor predefinido na consola, é 10.96.0.0/20 . |
10.96.0.0/20 |
2. Crie um cluster de administrador
Os passos seguintes criam um cluster de administrador para uma instalação mínima de um cluster de administrador e de um cluster de utilizador. Certifique-se de que forneceu valores para cada marcador de posição na tabela na secção Recolher informações anterior antes de continuar.
Quando a API GKE On-Prem (gkeonprem.googleapis.com
) está ativada para o seu projeto, os clusters criados recentemente são inscritos automaticamente na API.
A inscrição ocorre mesmo quando
spec.gkeOnPremAPI
não está especificado no ficheiro de configuração do cluster. A inscrição com esta API alojada pela Google permite-lhe gerir o ciclo de vida do cluster através da consola ou da CLI gcloud.Google CloudGoogle Cloud
Para desativar a inscrição automática, remova o comentário da secção spec.gkeOnPremAPI
no ficheiro de configuração do cluster e defina spec.gkeOnPremAPI.enabled
como false
antes de criar o cluster. O campo spec.gkeOnPremAPI.enabled
é mutável, pelo que pode anular a inscrição do cluster em qualquer altura após a sua criação.
Para criar um cluster de administrador para a instalação mínima:
Defina as credenciais predefinidas que o Google Distributed Cloud pode usar para criar o cluster com o seguinte comando:
gcloud auth application-default login
Para gerar um ficheiro de configuração do cluster, execute o seguinte comando a partir do diretório
/baremetal
na estação de trabalho do administrador:bmctl create config -c ADMIN_CLUSTER_NAME \ --enable-apis --create-service-accounts --project-id=PROJECT_ID
Valide o ficheiro de configuração do cluster de administrador:
O ficheiro de configuração do cluster seguinte é preenchido com os valores que introduziu na tabela de planeamento na secção anterior. Além dos valores que introduziu, tenha em atenção as seguintes diferenças em relação ao ficheiro de configuração gerado:
- Os comentários foram removidos desta amostra para melhorar a legibilidade.
- A especificação
NodePool
foi removida. Não são permitidos nós de trabalho para um cluster de administrador.
gcrKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-gcr.json sshPrivateKeyPath: SSH_PRIVATE_KEY_PATH gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-connect.json gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-register.json cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/PROJECT_ID-anthos-baremetal-cloud-ops.json --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: CLUSTER_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: ADMIN_CP_NODE_IP clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: ADMIN_CP_VIP clusterOperations: projectID: PROJECT_ID location: us-central1 storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 250 # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem # API to enable/disable cluster lifecycle management from gcloud UI and Terraform. # gkeOnPremAPI: # enabled: false # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled. # location: us-central1
Substitua o conteúdo do ficheiro de configuração gerado na estação de trabalho do administrador pelo conteúdo do exemplo anterior.
Abra o ficheiro gerado
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml
e substitua o respetivo conteúdo pelo conteúdo do exemplo que validou no passo anterior.Para criar o cluster de administrador, execute o seguinte comando a partir do diretório
/baremetal
na sua estação de trabalho de administrador:bmctl create cluster -c ADMIN_CLUSTER_NAME
O comando
bmctl
apresenta o resultado no ecrã à medida que executa verificações prévias e cria o cluster. As informações detalhadas são escritas nos registos na pastabaremetal/bmctl-workspace/ADMIN_CLUSTER_NAME/log
na estação de trabalho do administrador.A criação de clusters pode demorar vários minutos a ser concluída.
Verifique se o cluster foi criado e está em execução:
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \ get nodes
Se o cluster estiver em execução, a resposta tem um aspeto semelhante ao seguinte:
NAME STATUS ROLES AGE VERSION node-01 Ready control-plane 16h v1.25.7-gke.1000
Para conceder à sua conta de utilizador a função
clusterrole/cluster-admin
do Kubernetes no cluster, execute o seguinte comandogcloud
:gcloud container fleet memberships generate-gateway-rbac \ --membership=ADMIN_CLUSTER_NAME \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig \ --context=ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME \ --apply
O resultado deste comando é semelhante ao seguinte, que é truncado para facilitar a leitura:
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>/<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-kubeconfig, context: <var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var>-admin@<var class="edit"scope="ADMIN_CLUSTER_NAME">ADMIN_CLUSTER_NAME</var> Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
Entre outras coisas, a política de RBAC permite-lhe iniciar sessão no cluster na Google Cloud consola para ver mais detalhes do cluster.
3. Crie um cluster de utilizadores
Os passos seguintes criam um cluster de utilizadores para um cluster de administrador mínimo e uma instalação de cluster de utilizadores. Certifique-se de que forneceu valores para cada marcador de posição na tabela na secção Recolher informações anterior antes de continuar.
Para criar um cluster de utilizadores para a instalação mínima:
bmctl
Quando a API GKE On-Prem (gkeonprem.googleapis.com
) está ativada para o seu projeto, os clusters criados recentemente são inscritos automaticamente na API.
A inscrição ocorre mesmo quando
spec.gkeOnPremAPI
não está especificado no ficheiro de configuração do cluster. Quando o cluster está inscrito com esta API alojada pela Google, pode usar a consola ou a CLI gcloud para gerir o ciclo de vida do cluster. Google CloudGoogle Cloud
Para desativar a inscrição automática, remova o comentário da secção spec.gkeOnPremAPI
no ficheiro de configuração do cluster e defina spec.gkeOnPremAPI.enabled
como false
antes de criar o cluster. O campo spec.gkeOnPremAPI.enabled
é mutável, pelo que pode anular a inscrição no cluster em qualquer altura após a sua criação.
Gere um ficheiro de configuração do cluster:
bmctl create config -c USER_CLUSTER_NAME \ --project-id=PROJECT_ID
Valide o ficheiro de configuração do cluster de utilizadores:
O seguinte ficheiro de configuração do cluster é preenchido com os valores que introduziu anteriormente na tabela de planeamento. Além dos valores que introduziu, tenha em atenção as seguintes diferenças em relação ao ficheiro de configuração gerado:
- Os comentários foram removidos desta amostra para melhorar a legibilidade.
- O tipo de cluster,
spec.type
, foi definido comouser
. - O campo
spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts
foi adicionado para conceder oclusterrole/cluster-admin
à sua conta. Entre outras coisas, este campo permite-lhe iniciar sessão no cluster na Google Cloud consola para ver mais detalhes do cluster.
--- apiVersion: v1 kind: Namespace metadata: name: cluster-USER_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: USER_CLUSTER_NAME namespace: cluster-USER_CLUSTER_NAME spec: type: user profile: default anthosBareMetalVersion: CLUSTER_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: USER_CP_NODE_IP clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: USER_CP_VIP ingressVIP: USER_INGRESS_VIP addressPools: - name: pool1 addresses: - START_IP-END_IP clusterOperations: projectID: PROJECT_ID location: us-central1 clusterSecurity: authorization: clusterAdmin: gcpAccounts: - GOOGLE_ACCOUNT_EMAIL storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 250 # GKEOnPremAPI (Optional) Specify if you wish to explicitly enable/disable the cloud hosted gkeonprem # API to enable/disable cluster lifecycle management from gcloud UI and Terraform. # gkeOnPremAPI: # enabled: false # location is the Cloud location for the cluster resource metadata where the cluster will be enrolled. # location: us-central1 --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: cluster-USER_CLUSTER_NAME spec: clusterName: USER_CLUSTER_NAME nodes: - address: USER_WORKER_NODE_IP
Substitua o conteúdo do ficheiro de configuração gerado na estação de trabalho do administrador pelo conteúdo do exemplo anterior.
Abra o ficheiro gerado
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME.yaml
e substitua o respetivo conteúdo pelo conteúdo do exemplo que validou no passo anterior.Crie o cluster de utilizadores:
bmctl create cluster -c USER_CLUSTER_NAME \ --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
O comando
bmctl
apresenta o resultado no ecrã à medida que executa verificações prévias e cria o cluster. As informações detalhadas são escritas nos registos na pastabaremetal/bmctl-workspace/USER_CLUSTER_NAME/log
na estação de trabalho do administrador.A criação de clusters pode demorar vários minutos a ser concluída.
Verifique se o cluster foi criado e está em execução:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-kubeconfig \ get nodes
Se o cluster estiver em execução, a resposta tem um aspeto semelhante ao seguinte:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Consola
Siga estes passos para criar um cluster de utilizadores na consola:
Na consola, aceda à página Criar um cluster bare metal.
Certifique-se de que a Google Cloud lista de projetos tem
PROJECT_ID
selecionado.Clique em Criar cluster.
Na caixa de diálogo, clique em No local.
Junto a Bare metal, clique em Configurar. A página Pré-requisitos é apresentada.
Em Escolha o tipo de cluster, selecione Criar um cluster de utilizadores para um cluster de administrador existente
Clicar em Seguinte.
Noções básicas sobre clusters
Introduza
USER_CLUSTER_NAME
como o nome do cluster de utilizadores ou use o valor predefinido.Certifique-se de que o cluster de administrador recém-criado está selecionado.
Em Localização da API GCP, selecione us-central1.
Em Versão do Google Distributed Cloud, selecione
CLUSTER_VERSION
ou use a predefinição. Pode usar as predefinições para as restantes definições nesta página.Clique em Rede na barra de navegação do lado esquerdo.
Redes
Na secção Plano de controlo, introduza o seguinte no campo IP do nó do plano de controlo 1:
USER_CP_NODE_IP
Na secção Balanceador de carga, use o balanceador de carga predefinido, Incluído no MetalLB.
Aceda à secção Novo conjunto de endereços. Introduza o intervalo de endereços IP no campo Intervalo de endereços IP 1:
10.200.0.51-10.200.0.70
Clique em Concluído.
Na secção IPs virtuais, introduza o endereço IP do VIP do plano de controlo:
USER_CP_VIP
Introduza o endereço IP do VIP de entrada:
USER_INGRESS_VIP
Na secção CIDRs de serviços e pods, se não alterou os CIDRs de serviços e pods no planeador, pode usar os predefinidos.
Se alterou os CIDRs, introduza os CIDRs que quer usar:
- CIDR de serviço:
10.96.0.0/20
- CIDR do pod:
192.168.0.0/16
Clique em conjunto predefinido na barra de navegação do lado esquerdo.
Crie um node pool
O cluster tem de ter, pelo menos, um conjunto de nós para nós de trabalho. Um conjunto de nós é um modelo para os grupos de nós de trabalho criados neste cluster.
Introduza o endereço IP do nó de trabalho do cluster de utilizadores no campo Nodes address 1:
USER_WORKER_NODE_IP
Crie o cluster
Clique em Validar e criar para criar o cluster de utilizadores.
A criação do cluster de utilizadores demora 15 minutos ou mais. A consola apresenta mensagens de estado à medida que valida as definições e cria o cluster.
Se houver um problema com a configuração, a consola apresenta uma mensagem de erro que deve ser suficientemente clara para corrigir o problema de configuração e tentar novamente criar o cluster.
Para ver informações adicionais sobre o processo de criação, clique em Mostrar detalhes para apresentar um painel lateral. Clique em
para fechar o painel de detalhes.Quando o cluster é criado, é apresentado o Estado do cluster: em execução.
Depois de criar o cluster, clique em
Clusters para voltar à página Clusters.
CLI gcloud
Esta secção mostra como criar um cluster de utilizadores e um conjunto de nós através da CLI gcloud.
Execute o seguinte comando para criar um cluster de utilizadores:
gcloud container bare-metal clusters create USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=us-central1 \ --admin-cluster-membership=ADMIN_CLUSTER_NAME \ --admin-cluster-membership-project=PROJECT_ID \ --admin-cluster-membership-location=global \ --version=CLUSTER_VERSION \ --admin-users=GOOGLE_ACCOUNT_EMAIL \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=START_IP-END_IP' \ --control-plane-node-configs='node-ip=USER_CP_NODE_IP' \ --control-plane-vip=USER_CP_VIP \ --control-plane-load-balancer-port=443 \ --ingress-vip=USER_INGRESS_VIP \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
O resultado do comando é semelhante ao seguinte:
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
No exemplo de saída, a string
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
é oOPERATION_ID
da operação de longa duração. Pode saber o estado da operação com o seguinte comando:gcloud container bare-metal operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=us-central1
A criação do cluster demora cerca de 15 minutos ou mais. À medida que o cluster é criado, pode executar o comando anterior com alguma frequência para obter o estado atual.
Quando o cluster é criado, vê um resultado semelhante ao seguinte:
Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/bareMetalClusters/USER_CLUSTER_NAME].
Depois de criar o cluster, execute o seguinte comando para criar um conjunto de nós no cluster recém-criado.
gcloud container bare-metal node-pools create node-pool-1 \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=us-central1 \ --node-configs node-ip=USER_WORKER_NODE_IP
Para mais informações e outros exemplos, consulte o seguinte:
Terraform
Esta secção mostra como criar um cluster de utilizadores e um conjunto de nós com o Terraform.
Criar um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
. Neste guia, o ficheiro chama-semain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Valide o recurso do Terraform do cluster de utilizadores:
O exemplo de recurso do Terraform seguinte é preenchido com os valores que introduziu na tabela de planeamento na secção anterior.
resource "google_gkeonprem_bare_metal_cluster" "cluster-basic" { provider = google-beta name = "USER_CLUSTER_NAME" project = "PROJECT_ID" location = "us-central1" admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME" bare_metal_version = "CLUSTER_VERSION" network_config { island_mode_cidr { service_address_cidr_blocks = ["10.96.0.0/20"] pod_address_cidr_blocks = ["192.168.0.0/16"] } } control_plane { control_plane_node_pool_config { node_pool_config { labels = {} operating_system = "LINUX" node_configs { labels = {} node_ip = "USER_CP_NODE_IP" } } } } load_balancer { port_config { control_plane_load_balancer_port = 443 } vip_config { control_plane_vip = "USER_CP_VIP" ingress_vip = "USER_INGRESS_VIP" } metal_lb_config { address_pools { pool = "pool1" addresses = [ "START_IP-END_IP" ] avoid_buggy_ips = true manual_assign = true } } } storage { lvp_share_config { lvp_config { path = "/mnt/localpv-share" storage_class = "local-shared" } shared_path_pv_count = 5 } lvp_node_mounts_config { path = "/mnt/localpv-disk" storage_class = "local-disks" } } security_config { authorization { admin_users { username = "GOOGLE_ACCOUNT_EMAIL" } } } } resource "google_gkeonprem_bare_metal_node_pool" "node-pool-default" { provider = google-beta name = "node-pool-1" bare_metal_cluster = google_gkeonprem_bare_metal_cluster.cluster-basic.name project = "PROJECT_ID" location = "us-central1" node_pool_config { operating_system = "LINUX" node_configs { node_ip = "USER_WORKER_NODE_IP" } } }
Copie o recurso do Terraform para
main.tf
e guarde o ficheiro.Inicialize e crie o plano do Terraform:
terraform init
O Terraform instala todas as bibliotecas necessárias, como o Google Cloud fornecedor.
Reveja a configuração e faça alterações, se necessário:
terraform plan
Aplique o plano do Terraform para criar o cluster de utilizadores:
terraform apply
Quando lhe for pedido, introduza
yes
.Demora cerca de 15 minutos (ou mais, consoante a sua rede) a criar o cluster de utilizadores básico e o node pool.
Para criar um ficheiro kubeconfig para o cluster de utilizadores, execute o seguinte comando na estação de trabalho do administrador:
bmctl get credentials --cluster USER_CLUSTER_NAME \ --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
O resultado do comando apresenta o nome do ficheiro kubeconfig para o cluster de utilizadores, por exemplo:
bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig
O
TIMESTAMP
no nome do ficheiro indica a data e a hora em que o ficheiro foi criado.Uma vez que este ficheiro contém credenciais de autenticação para o seu cluster, deve armazená-lo num local seguro com acesso restrito.
Verifique se o cluster foi criado e está em execução:
kubectl --kubeconfig bmctl-workspace/USER_CLUSTER_NAME/USER_CLUSTER_NAME-TIMESTAMP-kubeconfig \ get nodes
Se o cluster estiver em execução, a resposta tem um aspeto semelhante ao seguinte:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Para mais informações e outros exemplos, consulte o seguinte:
Estabeleça ligação ao cluster de utilizadores
Independentemente da ferramenta que usou para criar o cluster de utilizadores, o seu endereço de email recebe as políticas de controlo de acesso baseado em funções (CABF) que lhe permitem estabelecer ligação ao cluster com privilégios administrativos completos. O local onde o seu endereço de email é especificado depende da ferramenta:
bmctl
: o seu endereço de email está incluído na secçãoclusterSecurity
do ficheiro de configuração do utilizador de exemplo.Terraform: o seu endereço de email está incluído na secção
security_config
do recurso de exemplogoogle_gkeonprem_bare_metal_cluster
.A consola: como criador do cluster, o seu endereço de email é incluído automaticamente na página Noções básicas do cluster na secção Autorização.
Embora apenas o seu endereço de email seja especificado, pode incluir outros endereços de email para conceder acesso administrativo ao cluster a outros utilizadores.
As políticas de RBAC concedidas ao seu endereço de email fazem o seguinte:
Conceder-lhe a função
clusterrole/cluster-admin
do Kubernetes no cluster.Permitir-lhe iniciar sessão no cluster na Google Cloud consola com a sua identidade Google. Pode ver o cluster na página Clusters do GKE na consola.
Permite-lhe executar comandos
kubectl
no seu computador local através do kubeconfig da gateway de ligação.
Para obter o kubeconfig da gateway de ligação, execute os seguintes comandos a partir do seu computador local:
Obtenha a entrada kubeconfig que pode aceder ao cluster através da gateway de ligação.
gcloud container fleet memberships get-credentials USER_CLUSTER_NAME \ --project=PROJECT_ID
O resultado é semelhante ao seguinte:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
Agora, pode executar comandos
kubectl
através do gateway de ligação:kubectl get nodes
O resultado é semelhante ao seguinte:
NAME STATUS ROLES AGE VERSION nuc-3 Ready control-plane 4m32s v1.26.2-gke.1001 nuc-4 Ready worker 2m2s v1.26.2-gke.1001
Muitos comandos
kubectl
requerem o kubeconfig para o cluster de administrador. Tem de executar esses comandos na estação de trabalho do administrador.
O que se segue?
Saiba mais sobre:
- O recurso do
google_gkeonprem_bare_metal_cluster
Terraform - O gateway de ligação
- O recurso do