Durée estimée : 3 heures
Propriétaire du composant exploitable : OLT/nœud
Profil de compétences : ingénieur de déploiement
La machine de bootstrap est le premier système d'information (SI) serveur installé dans une cellule Google Distributed Cloud (GDC) isolée et est utilisée pour amorcer les systèmes d'information Distributed Cloud restants. L'image de la machine est recréée en tant que nœud de cluster de calcul après les vérifications préliminaires.
Utilisez le premier serveur standard du troisième rack pour le programme d'amorçage. Par exemple, pour la validation en laboratoire, nous utilisons xx-ac-bm15, qui est le serveur le plus haut du troisième rack ac qui ne comporte pas de base dans le numéro d'inventaire. Bien que le programme d'amorçage puisse être n'importe quelle machine du rack, car il n'y a pas d'exigences spécifiques pour le programme d'amorçage, une machine spécifique est standardisée à cet effet. Toutefois, vous ne devez pas utiliser les serveurs dont le nom contient base dans les trois premiers racks, car ils sont utilisés pour les clusters d'administrateurs racine et d'opérations.
9.1. Installer l'OS
Connectez-vous à la machine de bootstrap à l'aide d'un écran et d'un clavier.
Définissez l'adresse IP dans le port réseau dédié iLO. Utilisez une adresse de la plage d'adresses IP de gestion avec 160 comme dernier octet.
Définissez l'adresse IP de la station de travail sur une autre adresse du même sous-réseau et connectez-vous temporairement au port Ethernet arrière à l'aide d'un câble Ethernet croisé.
9.1.1. Installation par poste de travail avec un fichier ISO local
Depuis le navigateur du poste de travail hors connexion, connectez-vous à la console iLO de la machine bootstrapper et accédez au menu Remote Console & Media (Console et support à distance) dans l'arborescence de navigation. N'utilisez pas de support distant via USB iLO.
Cliquez sur Virtual Media (Support virtuel), puis spécifiez l'URL du support virtuel dans Connect CD/DVD-ROM (Connecter un CD/DVD-ROM).
Facultatif : Sélectionnez Démarrer au prochain redémarrage. Lorsque l'option Boot on Next reset (Démarrer au prochain redémarrage) est sélectionnée, le serveur démarre sur cette image uniquement lors du prochain redémarrage du serveur. L'image est éjectée automatiquement lors du deuxième redémarrage du serveur afin que le serveur ne démarre pas deux fois sur cette image. Si cette case n'est pas cochée, l'image reste connectée jusqu'à ce qu'elle soit éjectée manuellement.
Validez en cliquant sur Insérer un média.
Pour que la machine d'amorçage démarre à partir de l'image
.iso, vous devez réinitialiser la machine :- Dans la console iLO, cliquez sur Power & Thermal > Server Power (Alimentation et refroidissement > Alimentation du serveur).
- Cliquez sur Réinitialiser. Vous pouvez ouvrir la console virtuelle pour surveiller la réinitialisation de la machine et le démarrage du fichier
.iso.
Une fois l'amorçage terminé, spécifiez le nom d'utilisateur et le mot de passe pour vous connecter à la machine de bootstrap (compte racine). Le programme d'amorçage est amorcé à l'aide d'un fichier ISO créé par Google. Par conséquent, Google spécifie un mot de passe racine par défaut.
En tant qu'opérateur, vous avez accès au mot de passe et pouvez créer un autre utilisateur si nécessaire.
L'ISO du programme d'amorçage contient déjà tous les outils nécessaires, comme docker et kubectl. Vous n'avez donc pas besoin de les installer séparément.
9.1.2. Installation via une image ISO gravée sur une clé USB
9.1.2.1. Graver l'image ISO sur une clé USB
- Le contrôleur système utilise une image Rocky, ce qui vous permet d'utiliser la commande dd ou l'interface utilisateur "Disques".
Dans l'UI Disques :
- Branchez une clé USB.
- Cliquez sur clé USB dans le menu de navigation, puis sur le menu hamburger dans la barre de menu. Cliquez sur Restaurer l'image disque et pointez vers le programme d'amorçage de l'ISO téléchargé.

Avec dd :
Pour déterminer quel disque est la clé USB, exécutez la commande suivante :
sudo fdisk -lUtilisez la taille du disque pour déterminer si l'appareil est la clé USB. Mémorisez le nom de l'appareil pour les prochaines étapes.
Montez le disque par nom d'appareil, comme indiqué à l'étape précédente :
sudo umount <device name>Formatez le lecteur :
sudo mkfs.vfat <device name>Copiez l'ISO sur le lecteur :
sudo dd bs=4M if=<path to ISO file> of=<device name> status=progress
9.1.2.2. Démarrer à l'aide d'une clé USB de démarrage
- Insérez une clé USB dans le port USB avant (et non celui marqué iLO).
- Sélectionnez Appui momentané sur le bouton d'alimentation dans l'interface iLO. Attendez que le bouton virtuel devienne jaune, ce qui indique que la machine est éteinte.
- Sélectionnez Administration, puis Boot Order (Ordre de démarrage).
- Dans la section One-Time Boot Status (État du démarrage unique) > Select One-Time Boot (Sélectionner le démarrage unique), sélectionnez USB drive (Clé USB).
- Sélectionnez Appui momentané sur le bouton Marche/Arrêt dans l'interface iLO, puis vérifiez que le bouton virtuel devient vert. L'installation de l'OS est automatique, tout comme le redémarrage. Une fois que la console affiche une invite
bootstrapper login, l'installation du programme d'amorçage est terminée. - Retirez la clé USB.
9.1.3. Installation de la journalisation d'audit
Pour installer et activer manuellement la journalisation d'audit du programme d'amorçage :
Copiez le bloc suivant dans un nouveau fichier à l'emplacement
/etc/bash.bootstrapper_audit.sh.function 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 'Ajoutez cette ligne à la fin de
/etc/bash.bashrc.[ -f /etc/bash.bootstrapper_audit.sh ] && . /etc/bash.bootstrapper_audit.shUne fois ces modifications enregistrées, tous les nouveaux shells enregistreront les entrées du journal d'audit dans le journal système.
(Facultatif) Vérifier que la journalisation d'audit fonctionne
Pour vérifier que les journaux d'audit sont bien enregistrés, exécutez la commande suivante et vérifiez qu'un résultat semblable est émis :
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'(Facultatif) Désactiver la journalisation d'audit
Dans le cas peu probable où la journalisation d'audit pourrait avoir un impact sur d'autres opérations de programme d'amorçage, la fonctionnalité peut être rapidement désactivée dans le shell actuel avec la commande suivante :
USER@bootstrapper:~$ unset PROMPT_COMMANDUne fois que vous êtes sûr que la journalisation d'audit n'a aucun impact, réactivez-la dans le shell actuel avec la commande suivante :
source /etc/bash.bashrc
9.2. Configurer l'interface de gestion et la route
Cette section configure l'interface de gestion et la route nécessaires au processus d'amorçage.
9.2.1. Trouver l'adresse IP de gestion, le CIDR et l'adresse de la passerelle
Recherchez l'adresse IP de gestion du programme d'amorçage dans le fichier
cellcfg/serv-core.yaml:yq eval -r 'select(.metadata.annotations."system.private.gdc.goog/bootstrapper" == "true") | .spec.managementNetwork.ips[0]' PATH_TO_SERV_CORE_FILERemplacez
PATH_TO_SERV_CORE_FILEpar le chemin d'accès au fichiercellcfg/serv-core.yaml.Le programme d'amorçage est identifié par l'annotation
system.private.gdc.goog/bootstrapper: "true". Dans l'exemple, l'adresse IP de gestion dansspec.managementNetwork.ips[0]est172.22.80.76: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: LOM1Recherchez la plage d'adresses CIDR requise pour définir l'adresse IP de l'interface de gestion. Cette option est disponible dans le questionnaire CIQ.
Exemple 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/24Dans cet exemple, la plage CIDR
172.23.16.0/22couvre toutes les adresses CIDR de gestion listées.Recherchez l'adresse de la passerelle utilisée par le programme d'amorçage pour communiquer avec le réseau de gestion. Si le programme d'amorçage se trouve dans le rack
ac, recherchez le nom de la ressourceCIDRClaimà l'aide de la commande suivante :grep -A 10 -B 10 "ac-mgmtsw01-server-os-cidr" cellcfg/pnet-core.yaml`.La sortie ressemble à ceci :
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-cidrAvec le
172.28.120.128/26trouvé dansipv4Spec.staticCidrBlocksde la ressourceCIDRClaimnomméeag-ac-mgmtsw01-server-os-cidr, l'adresse de la passerelle est la première adresse IP de172.28.120.128/26, c'est-à-dire172.28.120.129.
9.2.2. Configurer l'adresse IP de l'interface de gestion
ip address add dev MGMT_INTERFACE MGMT_IP/MGMT_SUBNET_PREFIX
Remplacez les éléments suivants :
MGMT_INTERFACE: un exemple de nom d'interface de gestion estens15f0. Utilisez l'adresse MAC danscellcfg/serv-core.yamlpour identifier l'interface utilisée pour le réseau de gestion.MGMT_IP: adresse IP de gestion indiquée dans la section Rechercher l'adresse IP et le CIDR de gestion.MGMT_SUBNET_PREFIX: préfixe de sous-réseau CIDR de gestion (par exemple,22pour172.23.16.0/22dans l'exemple précédent). Pour en savoir plus, consultez Trouver l'adresse IP et le CIDR de gestion.
Exécutez ensuite le script sur le programme d'amorçage. Ce script attribue l'adresse IP à l'interface de gestion et crée une route par défaut pour la plage CIDR de gestion.
9.2.3. Activer l'interface de gestion
Cette section explique comment activer l'interface de gestion. Identifiez l'interface de gestion en recherchant son adresse MAC sur le bootstrapper dans cellcfg/serv-core.yaml, puis comparez cette adresse MAC à celle de la sortie ip a dans le bootstrapper.
Dans cet exemple, la valeur de l'interface de gestion est ens15f0. Utilisez votre propre valeur lorsque vous suivez ces instructions. Ajoutez l'adresse IP avec l'adresse IP de gestion trouvée dans le fichier 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: {}
Dans cet exemple de fichier YAML, l'adresse IP de gestion est 172.29.24.147. Une longueur de préfixe de /26 est utilisée, car le bloc CIDR trouvé dans Rechercher l'adresse IP, le CIDR et l'adresse de passerelle de gestion est /26.
Ajoutez l'adresse IP de gestion à l'interface de gestion :
sudo ip addr add 172.29.24.147/26 dev ens15f0,
Ensuite, définissez l'interface à l'aide de la commande ip suivante :
ip link set ens15f0 up
Pour vérifier si la configuration de l'interface a réussi, utilisez ip link show ens15f0 :
ip link show ens15f0
Le résultat est semblable à ce qui suit, avec le message UP indiquant la réussite :
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. Configurer le routage
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"
Remplacez les éléments suivants :
MGMT_GATEWAY: adresse IP de la passerelle indiquée dans la section Rechercher l'adresse IP de gestion, le CIDR et l'adresse de la passerelle.MGMT_CIDR: le CIDR de gestion provient du CIQ. Consultez la section Rechercher l'adresse IP de gestion, le CIDR et l'adresse de la passerelle.MGMT_INTERFACE: un exemple de nom d'interface de gestion estens15f0. Vous pouvez utiliser l'adresse MAC danscellcfg/serv-core.yamlpour identifier l'interface utilisée pour le réseau de gestion.
Exécutez ensuite le script sur le programme d'amorçage.
9.3. Configurer l'horloge du programme d'amorçage
À ce stade, aucun serveur NTP n'est encore disponible. Nous devons définir manuellement l'horloge du programme d'amorçage sur une heure raisonnablement précise (à moins d'une seconde de l'heure réelle) en UTC. Veillez à utiliser "AM" ou "PM", sauf si vous êtes sûr d'utiliser l'horloge au format 24 heures. Une horloge mal réglée aura des effets irréparables lors des étapes ultérieures.
date --set "DATE_TIME_UTC"
Remplacez DATE_TIME_UTC par la date et l'heure en UTC, par exemple 2023-03-21 01:14:30 AM UTC.
9.4. Se connecter au serveur d'amorçage
Si vous êtes déconnecté du serveur de bootstrap, vous pouvez vous reconnecter à l'emplacement physique de la machine de bootstrap ou à l'aide du contrôleur système.
9.4.1. Connexion à une machine physique
Connectez-vous au serveur bootstrapper depuis la machine physique :
Connectez un clavier, une souris et un écran à la machine de bootstrap.
Connectez-vous à la machine à l'aide du nom d'utilisateur et du mot de passe par défaut.
9.4.2. Connexion au contrôleur système
Connectez-vous au serveur bootstrapper à l'aide du contrôleur système :
Rendez-vous à la pharmacie d'urgence avec le contrôleur système.
Exécutez la commande suivante :
ssh ubuntu@BOOTSTRAPPER_IP_ADDRESSRemplacez BOOTSTRAPPER_IP_ADDRESS par l'adresse IP du serveur de bootstrap.
9.5. Structure des fichiers
Toutes les opérations suivantes sont effectuées en tant qu'utilisateur racine. La structure de répertoire suivante est recommandée, mais pas obligatoire.
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