Tempo estimado para a conclusão: 3 horas
Proprietário do componente operacional: OLT/nó
Perfil de habilidade: engenheiro de implantação
A máquina de bootstrap é o primeiro sistema de informações (SI) do servidor instalado em uma célula isolada do Google Distributed Cloud (GDC) e é usada para fazer o bootstrap dos demais sistemas de informações do Distributed Cloud. A máquina é recriada como um nó de cluster de trabalho após as verificações de simulação.
Use o primeiro servidor padrão no terceiro rack para o bootstrap. Por exemplo, para verificação em laboratório, usamos xx-ac-bm15, que é o servidor mais alto no terceiro rack ac que não tem base como parte da tag de recurso. Embora o
bootstrap possa ser qualquer máquina no rack, já que não há requisitos
específicos para ele, uma máquina específica é padronizada para essa
finalidade. No entanto, não use nenhum dos servidores com base no nome nos três primeiros racks, já que eles são usados para clusters de administrador raiz e de operações.
9.1. Instalar o SO
Conecte-se à máquina de bootstrap por um monitor e um teclado.
Defina o IP na porta de rede dedicada do iLO. Use um endereço no intervalo de IP de gerenciamento com 160 como o último octeto.
Defina o IP da estação de trabalho para qualquer outro endereço na mesma sub-rede e conecte temporariamente à porta Ethernet traseira com um cabo Ethernet crossover.
9.1.1. Instalação por estação de trabalho com arquivo ISO local
No navegador da estação de trabalho off-line, conecte-se ao console iLO da máquina de bootstrap e acesse o menu Console e mídia remotos na árvore de navegação. Não use mídia remota pelo USB iLO.
Clique em Mídia virtual e especifique o URL da mídia virtual em Conectar CD/DVD-ROM.
Opcional: selecione Inicializar na próxima redefinição. Quando a opção Inicializar na próxima redefinição é selecionada, o servidor é inicializado com essa imagem apenas na próxima reinicialização. A imagem é ejetada automaticamente na segunda reinicialização do servidor para que ele não seja inicializado duas vezes com essa imagem. Se essa caixa de seleção não estiver marcada, a imagem vai permanecer conectada até ser ejetada manualmente.
Para validar, clique em Inserir mídia.
Para que a máquina de bootstrap inicialize a partir da imagem
.iso, é necessário redefinir a máquina:- No console do iLO, clique em Energia e temperatura - Energia do servidor.
- Clique em Redefinir. Abra o console virtual para monitorar a redefinição da máquina e a inicialização do arquivo
.iso.
Depois que o bootstrap for concluído, especifique o login e a senha para se conectar à máquina de bootstrap (conta raiz). O bootstrap é inicializado usando um arquivo ISO criado pelo Google, que especifica uma senha raiz padrão.
Como operador, você tem acesso à senha e pode criar outro usuário, se necessário.
O ISO do bootstrap já contém todas as ferramentas necessárias, como docker e
kubectl. Portanto, não é necessário instalá-las separadamente.
9.1.2. Instalação usando ISO gravado em um drive USB
9.1.2.1. Gravar ISO em um drive USB
- O controlador do sistema usa uma imagem rocky, que permite usar o comando dd ou a interface do usuário (UI) "Discos".
Com a interface do usuário "Discos":
- Conecte um pen drive.
- Clique em pen drive no menu de navegação e depois no menu de hambúrguer na barra de menus. Clique em Restaurar imagem do disco e aponte para o bootstrap o ISO baixado.

Com dd:
Para determinar qual disco é o pen drive, execute:
sudo fdisk -lUse "Tamanho do disco" para determinar se o dispositivo é o USB. Lembre-se do nome do dispositivo para as próximas etapas.
Faça a montagem do disco pelo nome do dispositivo, conforme fornecido na etapa anterior:
sudo umount <device name>Formate a unidade:
sudo mkfs.vfat <device name>Copie o ISO para a unidade:
sudo dd bs=4M if=<path to ISO file> of=<device name> status=progress
9.1.2.2. Inicializar usando um drive USB de inicialização
- Insira um pen drive USB na porta USB frontal (não a marcada como iLO).
- Selecione Pressionar momentaneamente no botão liga/desliga na interface do iLO. Aguarde até que o botão virtual mude de cor para amarelo, indicando que a máquina foi desligada.
- Selecione Administração e Ordem de inicialização.
- Na seção Status de inicialização única > Selecionar inicialização única, escolha Unidade USB.
- Selecione Pressionar momentaneamente no botão liga/desliga na interface do iLO e verifique se o botão virtual fica verde. A instalação do SO e a reinicialização são automáticas. Quando o console mostrar um prompt
bootstrapper login, a instalação do bootstrap será concluída. - Remova o drive USB.
9.1.3. Instalação do registro de auditoria
Para instalar e ativar manualmente o registro de auditoria do bootstrap:
Copie o bloco a seguir em um novo arquivo em
/etc/bash.bootstrapper_audit.shfunction log_previous_cmd() { rc=$? ; [[ "$rc" -eq 130 ]] && return line="rc=${rc};;pwd=$(pwd);;ppid=${PPID}" line="${line};;started=$(history 1|awk 'NR==1{$0=gensub(/^.{0,7}([^ ]*) /,"\\1;;cmd=","g",$0)}1')" logger --priority local6.info --id="$$" "${line}" } export PROMPT_COMMAND='log_previous_cmd' export HISTTIMEFORMAT='%G-%m-%dT%T 'Anexe esta linha ao final de
/etc/bash.bashrc[ -f /etc/bash.bootstrapper_audit.sh ] && . /etc/bash.bootstrapper_audit.shDepois que essas mudanças forem salvas, todos os novos shells vão gravar entradas de registro de auditoria no journal do sistema.
(Opcional) Verificar se a geração de registros de auditoria está funcionando
Para verificar se os registros de auditoria estão sendo gravados corretamente, execute o seguinte comando e verifique se uma saída semelhante é emitida:
USER@bootstrapper:~$ echo 'a command' USER@bootstrapper:~$ sudo journalctl -eo short-iso -p info SYSLOG_FACILITY=22 2024-10-12T00:30:24+0000 bootstrapper USER[96558]: rc=0;;pwd=/root;;ppid=96479;;started=2024-10-12T00:30:24;;cmd=date 2024-10-12T00:30:47+0000 bootstrapper USER[96558]: rc=0;;pwd=/root;;ppid=96479;;started=2024-10-12T00:30:47;;cmd=echo 'a command'(Opcional) Desativar a geração de registros de auditoria
No caso improvável de suspeita de que a geração de registros de auditoria esteja afetando outras operações do bootstrap, o recurso pode ser desativado rapidamente no shell atual com:
USER@bootstrapper:~$ unset PROMPT_COMMANDDepois de confirmar que o registro de auditoria não está afetando nada, reative-o no shell atual com:
source /etc/bash.bashrc
9.2. Configurar a interface de gerenciamento e a rota
Esta seção configura a interface de gerenciamento e a rota necessária para o processo de inicialização.
9.2.1. Encontrar o IP de gerenciamento, o CIDR e o endereço do gateway
Encontre o IP de gerenciamento do bootstrap no arquivo
cellcfg/serv-core.yaml:yq eval -r 'select(.metadata.annotations."system.private.gdc.goog/bootstrapper" == "true") | .spec.managementNetwork.ips[0]' PATH_TO_SERV_CORE_FILESubstitua
PATH_TO_SERV_CORE_FILEpelo caminho para o arquivocellcfg/serv-core.yaml.O bootstrap é identificado pela anotação
system.private.gdc.goog/bootstrapper: "true". O endereço IP de gerenciamento emspec.managementNetwork.ips[0]é172.22.80.76no exemplo:apiVersion: system.private.gdc.goog/v1alpha1 kind: Server metadata: annotations: lcm.private.gdc.goog/claim-by-force: "true" helm.sh/resource-policy: keep system.private.gdc.goog/bootstrapper: "true" creationTimestamp: null labels: system.private.gdc.goog/rack-name: mb-aa name: mb-aa-bm13 namespace: gpc-system spec: bmc: credentialsRef: name: bmc-credentials-mb-aa-bm13 namespace: gpc-system ip: 172.22.80.108 mac: 5c:ba:2c:42:a9:68 protocol: redfish redfish: systemPath: /redfish/v1/Systems/1 dataplaneNetwork: {} encryptDisk: true firmwareInstall: true secureErase: true luks: enable: false managementNetwork: ips: - 172.22.80.76 link: LOM1Encontre o intervalo de endereços CIDR necessário para definir o endereço IP da interface de gerenciamento. Isso está disponível no questionário de CIQ.
Exemplo de CIQ:
oobManagementCIDRs: - ipFamily: IPv4 ipv4: 172.23.16.0/24 - ipFamily: IPv4 ipv4: 172.23.17.0/24 - ipFamily: IPv4 ipv4: 172.23.18.0/24 - ipFamily: IPv4 ipv4: 172.23.19.0/24Neste exemplo, o intervalo CIDR
172.23.16.0/22abrange todos os endereços CIDR de gerenciamento listados.Encontre o endereço do gateway usado pelo bootstrap ao se comunicar com a rede de gerenciamento. Se o bootstrapper estiver no rack
ac, encontre o nome do recursoCIDRClaimcom o comando:grep -A 10 -B 10 "ac-mgmtsw01-server-os-cidr" cellcfg/pnet-core.yaml`.A saída será assim:
apiVersion: system.private.gdc.goog/v1alpha1 kind: CIDRClaim metadata: annotations: lcm.private.gdc.goog/claim-by-force: "true" labels: cidrclaims.system.private.gdc.goog/cidr-category: internal cidrclaims.system.private.gdc.goog/cidr-org: root cidrclaims.system.private.gdc.goog/node-type: leaf network.private.gdc.goog/mgmtnw-device-category: server-os network.private.gdc.goog/mgmtsw: ag-ac-mgmtsw01 name: ag-ac-mgmtsw01-server-os-cidr namespace: root spec: ipv4Spec: staticCidrBlocks: - 172.28.120.128/26 parentCidrClaimName: server-os-mgmt-network-cidrCom o
172.28.120.128/26encontrado emipv4Spec.staticCidrBlocksdo recursoCIDRClaimchamadoag-ac-mgmtsw01-server-os-cidr, o endereço do gateway é o primeiro endereço IP em172.28.120.128/26, que é172.28.120.129.
9.2.2. Configurar o endereço IP da interface de gerenciamento
ip address add dev MGMT_INTERFACE MGMT_IP/MGMT_SUBNET_PREFIX
Substitua:
MGMT_INTERFACE: um exemplo de nome de interface de gerenciamento éens15f0. Use o endereço MAC nocellcfg/serv-core.yamlpara identificar qual interface é usada na rede de gerenciamento.MGMT_IP: o endereço IP de gerenciamento encontrado na seção Encontrar IP de gerenciamento e CIDR.MGMT_SUBNET_PREFIX: o prefixo da sub-rede CIDR de gerenciamento (como22para172.23.16.0/22do exemplo anterior). Para mais informações, consulte Encontrar o IP de gerenciamento e o CIDR.
Em seguida, execute o script no bootstrap. Esse script atribui o endereço IP à interface de gerenciamento e cria uma rota padrão para o intervalo CIDR de gerenciamento.
9.2.3. Ativar a interface de gerenciamento
Esta seção fornece instruções para ativar a interface de gerenciamento. Identifique a interface de gerenciamento encontrando o endereço MAC dela no bootstrapper em cellcfg/serv-core.yaml e faça uma referência cruzada desse endereço MAC na saída ip a no bootstrapper.
Neste exemplo, o valor da interface de gerenciamento é ens15f0. Use seu próprio valor ao seguir estas instruções. Adicione o endereço IP com o endereço IP de gerenciamento encontrado no arquivo cellcfg/serv-core.yaml:
apiVersion: system.private.gdc.goog/v1alpha1
kind: Server
metadata:
annotations:
lcm.private.gdc.goog/claim-by-force: "true"
helm.sh/resource-policy: keep
system.private.gdc.goog/bootstrapper: "true"
creationTimestamp: null
labels:
system.private.gdc.goog/rack-name: ma-ac
name: ma-ac-bm15
namespace: gpc-system
spec:
bmc:
credentialsRef:
name: bmc-credentials-ma-ac-bm15
namespace: gpc-system
ip: 172.29.8.208
mac: 5c:ba:2c:42:28:2e
protocol: redfish
redfish:
systemPath: /redfish/v1/Systems/1
dataplaneNetwork: {}
encryptDisk: true
firmwareInstall: true
secureErase: true
luks:
enable: false
managementNetwork:
ips:
- 172.29.24.147
link: LOM1
provider: external
serverHardware:
bmhNetworkRef:
name: ma-ac-bm15
dataplaneNICPorts:
- mac: 5c:ba:2c:61:83:90
name: s1p1
- mac: 5c:ba:2c:61:83:98
name: s1p2
machineClassName: o1-standard1-64-gdc-metal
managementNICPort:
mac: 98:f2:b3:28:0b:70
name: LOM1
portBond:
name: s1p1-s1p2
networkBondModeType: 802.3ad
nicPortNames:
- s1p1
- s1p2
status: {}
Neste exemplo de arquivo YAML, o endereço IP de gerenciamento é 172.29.24.147. Um comprimento de prefixo de /26 é usado como o bloco CIDR encontrado em Encontrar IP de gerenciamento, CIDR e endereço de gateway é /26.
Adicione o endereço IP de gerenciamento à interface de gerenciamento:
sudo ip addr add 172.29.24.147/26 dev ens15f0,
Em seguida, defina a interface usando este comando ip:
ip link set ens15f0 up
Para verificar se a configuração da interface foi bem-sucedida, use ip link show ens15f0:
ip link show ens15f0
A saída é semelhante a esta, com a mensagem UP indicando sucesso:
6: ens15f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 98:f2:b3:28:0b:70 brd ff:ff:ff:ff:ff:ff
inet 172.29.24.147/26 brd 172.29.24.191 scope global ens15f0
valid_lft forever preferred_lft forever
inet6 fe80::9af2:b3ff:fe28:b70/64 scope link
valid_lft forever preferred_lft forever
9.2.4. Configurar a configuração de roteamento
MGMT_GATEWAY=MGMT_GATEWAY
MGMT_CIDR=MGMT_CIDR
MGMT_INTERFACE=MGMT_INTERFACE
ip route add $MGMT_CIDR via $MGMT_GATEWAY dev $MGMT_INTERFACE proto static"
Substitua:
MGMT_GATEWAY: o endereço IP do gateway encontrado na seção Encontrar IP de gerenciamento, CIDR e endereço de gateway.MGMT_CIDR: o CIDR de gerenciamento é do CIQ. Consulte a seção Encontrar o IP de gerenciamento, o CIDR e o endereço do gateway.MGMT_INTERFACE: um exemplo de nome de interface de gerenciamento éens15f0. É possível usar o endereço MAC emcellcfg/serv-core.yamlpara identificar qual interface é usada na rede de gerenciamento.
Em seguida, execute o script no bootstrap.
9.3. Configurar o relógio do bootstrap
Neste ponto, ainda não há servidores NTP. Precisamos definir manualmente o relógio do bootstrap para um horário razoavelmente preciso (em até 1 segundo do horário real) em UTC. Use "AM" ou "PM", a menos que você tenha certeza de que está usando o relógio de 24 horas. Um relógio configurado incorretamente terá efeitos irreparáveis em etapas posteriores.
date --set "DATE_TIME_UTC"
Substitua DATE_TIME_UTC pela data e hora em UTC, como 2023-03-21 01:14:30 AM UTC.
9.4. Fazer login no servidor de bootstrap
Se você sair do servidor de bootstrap, faça login novamente no local físico da máquina de bootstrap ou usando o controlador do sistema.
9.4.1. Login em máquinas físicas
Faça login no servidor de bootstrap na máquina física:
Conecte um teclado, um mouse e um monitor à máquina de bootstrap.
Faça login na máquina usando o nome de usuário e a senha padrão.
9.4.2. Login do controlador do sistema
Faça login no servidor de bootstrap usando o controlador do sistema:
Vá até o carrinho de emergência com o controlador do sistema.
Execute este comando:
ssh ubuntu@BOOTSTRAPPER_IP_ADDRESSSubstitua BOOTSTRAPPER_IP_ADDRESS pelo endereço IP do servidor de bootstrap.
9.5. Estrutura de arquivo
Todas as operações subsequentes são realizadas como usuário raiz. A estrutura de diretório a seguir é recomendada, mas não obrigatória.
root
├── kubeconfigs/ - recommend creating this directory to keep track of the many kubeconfigs
└── .kube/config - location of bootstrap(KIND) cluster kubeconfig
└── full-release-y.y.y-gdch.yyy - Extraction of the gdch tar from step download-files
├── bootstrapper.iso
├── docs
├── examples
├── gdcloud
├── harbor
├── oci
└── operations_center
└── root-admin/root-admin-kubeconfig - where the root-admin kubeconfig will be put after root-admin creation
└── full-release-y.y.y-gdch.yyy-hotfix - if necessary, hotfixes will be extracted to another folder
├── README - explains how to apply the hotfix
├── oci - directory containing the hotfix
├── config - this is for the output of the "create configuration files" step
├── output/cellcfg - initial CRs applied to the bootstrap cluster
├── output/assets
├── devices.csv - HW file useful to have for debugging
├── cables.csv - HW file useful to have for debugging
├── ciq.yaml - HW file useful to have for debugging