9.. Penginstalan Server Bootstrapper

Perkiraan waktu penyelesaian: 3 jam

Pemilik komponen yang dapat dioperasikan: OLT/Node

Profil keterampilan: engineer deployment

Mesin bootstrapper adalah sistem informasi (IS) server pertama yang diinstal di sel air-gapped Google Distributed Cloud (GDC) dan digunakan untuk mem-bootstrap sistem informasi Distributed Cloud yang tersisa. Mesin di-reimage sebagai node cluster pekerja setelah pemeriksaan awal.

Gunakan server standar pertama di rak ketiga untuk bootstrapper. Misalnya, untuk verifikasi lab, kami menggunakan xx-ac-bm15, yang merupakan server teratas di rak ketiga ac yang tidak memiliki base sebagai bagian dari tag aset. Meskipun bootstrapper dapat berupa mesin apa pun di rak, karena tidak ada persyaratan khusus untuk bootstrapper, mesin tertentu distandardisasi untuk tujuan ini. Namun, Anda tidak boleh menggunakan server dengan base dalam namanya di 3 rak pertama, karena server tersebut digunakan untuk cluster operasi dan admin root.

9.1. Menginstal OS

  1. Hubungkan ke komputer bootstrapper menggunakan monitor dan keyboard.

  2. Tetapkan IP di port Jaringan Khusus iLO. Gunakan alamat dalam rentang IP pengelolaan dengan 160 sebagai octet terakhir.

  3. Tetapkan IP workstation ke alamat lain di subnet yang sama dan hubungkan sementara ke port Ethernet belakang dengan kabel Ethernet crossover.

9.1.1. Penginstalan oleh workstation dengan file ISO lokal

  1. Dari browser workstation offline, hubungkan ke konsol iLO mesin bootstrapper dan buka menu Remote Console & Media di struktur navigasi. Jangan gunakan media jarak jauh melalui iLO USB.

  2. Klik Virtual Media dan tentukan URL Media Virtual di Connect CD/DVD-ROM.

  3. Opsional: Pilih Boot saat Reset berikutnya. Jika Boot on Next reset dipilih, server akan di-boot ke image ini hanya pada mulai ulang server berikutnya. Image akan dikeluarkan secara otomatis saat server dimulai ulang untuk kedua kalinya sehingga server tidak melakukan booting ke image ini dua kali. Jika kotak centang ini tidak dicentang, gambar akan tetap terhubung hingga dikeluarkan secara manual.

  4. Validasi dengan mengklik Sisipkan Media.

  5. Agar mesin bootstrapper dapat melakukan booting dari image .iso, Anda harus mereset mesin:

    1. Di konsol iLO, klik Power & Thermal - Server Power.
    2. Klik Reset. Anda dapat membuka Konsol Virtual untuk memantau reset mesin dan booting file .iso.
  6. Setelah bootstrap selesai, tentukan login dan sandi untuk terhubung ke mesin bootstrapper (akun root). Bootstrapper di-bootstrap menggunakan file ISO yang dibuat oleh Google, sehingga Google menentukan sandi root default.

Sebagai operator, Anda memiliki akses ke sandi dan dapat membuat pengguna lain jika diperlukan.

ISO bootstrapper sudah berisi semua alat yang diperlukan, seperti docker dan kubectl, sehingga Anda tidak perlu menginstalnya secara terpisah.

9.1.2. Penginstalan melalui ISO yang di-burn ke drive USB

9.1.2.1. Membakar ISO ke drive USB

  1. Pengontrol sistem menggunakan image rocky, yang memungkinkan Anda menggunakan perintah dd atau antarmuka pengguna (UI) "Disks".
  2. Dengan UI Disks:

    1. Colokkan flash drive.
    2. Klik flash drive di menu navigasi, lalu menu hamburger di menu bar. Klik Restore Disk Image dan arahkan ke bootstrapper ISO yang didownload.

    Contoh GUI USB Burn

  3. Dengan dd:

    1. Untuk menentukan disk mana yang merupakan drive USB, jalankan: sudo fdisk -l

    2. Gunakan Ukuran disk untuk menentukan apakah perangkat adalah USB. Ingat nama perangkat untuk beberapa langkah berikutnya.

    3. Pasang disk berdasarkan nama perangkat seperti yang diberikan pada langkah sebelumnya: sudo umount <device name>

    4. Format drive: sudo mkfs.vfat <device name>

    5. Salin ISO ke drive: sudo dd bs=4M if=<path to ISO file> of=<device name> status=progress

9.1.2.2. Melakukan booting menggunakan drive boot USB

  1. Colokkan flash drive USB ke port USB depan (bukan yang bertanda iLO).
  2. Pilih Momentary Press pada tombol daya di antarmuka iLO. Tunggu hingga tombol virtual berubah warna menjadi kuning, yang menunjukkan bahwa mesin telah dimatikan.
  3. Pilih Administrasi, lalu Urutan Boot.
  4. Di bagian Status Boot Sekali > Pilih Boot Sekali, pilih USB drive.
  5. Pilih Momentary Press pada tombol daya di antarmuka iLO; verifikasi bahwa tombol virtual berubah menjadi hijau. Penginstalan OS bersifat otomatis, begitu juga dengan mulai ulang. Setelah konsol menampilkan perintah bootstrapper login, penginstalan bootstrapper selesai.
  6. Lepaskan drive USB.

9.1.3. Penginstalan logging audit

Untuk menginstal dan mengaktifkan logging audit bootstrapper secara manual:

  1. Salin blok berikut ke file baru di /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 '
    
  2. Tambahkan baris ini ke bagian akhir /etc/bash.bashrc

    [ -f /etc/bash.bootstrapper_audit.sh ] && . /etc/bash.bootstrapper_audit.sh
    

    Setelah perubahan ini disimpan, semua shell baru akan mencatat entri log audit ke jurnal sistem.

  3. (opsional) Memverifikasi bahwa logging audit berfungsi

    Untuk memverifikasi bahwa log audit berhasil direkam, jalankan perintah berikut dan verifikasi bahwa output serupa dikeluarkan:

    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'
    
  4. (opsional) Menonaktifkan logging audit

    Jika ada kemungkinan kecil bahwa logging audit dicurigai memengaruhi operasi bootstrapper lainnya, fitur ini dapat dinonaktifkan dengan cepat di shell saat ini menggunakan:

    USER@bootstrapper:~$ unset PROMPT_COMMAND
    

    Setelah yakin bahwa log audit tidak memengaruhi apa pun, aktifkan kembali di shell saat ini dengan: source /etc/bash.bashrc

9.2. Menyiapkan antarmuka dan rute pengelolaan

Bagian ini menyiapkan antarmuka pengelolaan dan rute yang diperlukan untuk proses bootstrapping.

9.2.1. Menemukan IP pengelolaan, CIDR, dan alamat gateway

  1. Temukan IP pengelolaan bootstrapper dalam file cellcfg/serv-core.yaml:

    yq eval -r 'select(.metadata.annotations."system.private.gdc.goog/bootstrapper" == "true") | .spec.managementNetwork.ips[0]' PATH_TO_SERV_CORE_FILE
    

    Ganti PATH_TO_SERV_CORE_FILE dengan jalur ke file cellcfg/serv-core.yaml.

    Bootstrapper diidentifikasi oleh anotasi system.private.gdc.goog/bootstrapper: "true". Alamat IP pengelolaan di spec.managementNetwork.ips[0] adalah 172.22.80.76 dalam contoh:

    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: LOM1
    
  2. Temukan rentang alamat CIDR yang diperlukan untuk menetapkan alamat IP antarmuka pengelolaan. Informasi ini tersedia dalam kuesioner CIQ.

    Contoh 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/24
    

    Dalam contoh ini, rentang CIDR 172.23.16.0/22 mencakup semua alamat CIDR pengelolaan yang tercantum.

  3. Temukan alamat gateway yang digunakan oleh bootstrapper saat berkomunikasi ke jaringan pengelolaan. Jika bootstrapper berada di rak ac, temukan nama resource CIDRClaim dengan perintah:

    grep -A 10 -B 10 "ac-mgmtsw01-server-os-cidr" cellcfg/pnet-core.yaml`.
    

    Outputnya akan terlihat seperti berikut:

    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-cidr
    

    Dengan 172.28.120.128/26 yang ditemukan di ipv4Spec.staticCidrBlocks resource CIDRClaim bernama ag-ac-mgmtsw01-server-os-cidr, alamat gateway adalah alamat IP pertama di 172.28.120.128/26, yaitu 172.28.120.129.

9.2.2. Mengonfigurasi alamat IP antarmuka pengelolaan

ip address add dev MGMT_INTERFACE MGMT_IP/MGMT_SUBNET_PREFIX

Ganti kode berikut:

  • MGMT_INTERFACE: contoh nama antarmuka pengelolaan adalah ens15f0. Gunakan alamat MAC di cellcfg/serv-core.yaml untuk mengidentifikasi antarmuka mana yang digunakan untuk jaringan pengelolaan.
  • MGMT_IP: alamat IP pengelolaan yang ditemukan di bagian Temukan IP dan CIDR pengelolaan.
  • MGMT_SUBNET_PREFIX: awalan subnet CIDR pengelolaan (seperti 22 untuk 172.23.16.0/22 dari contoh sebelumnya). Untuk mengetahui informasi selengkapnya, lihat Menemukan IP pengelolaan dan CIDR.

Kemudian, jalankan skrip di bootstrapper. Skrip ini menetapkan alamat IP ke antarmuka pengelolaan dan membuat rute default untuk rentang CIDR pengelolaan.

9.2.3. Mengaktifkan antarmuka pengelolaan

Bagian ini memberikan petunjuk untuk mengaktifkan antarmuka pengelolaan. Identifikasi antarmuka pengelolaan dengan menemukan alamat MAC antarmuka pengelolaan di bootstrapper dalam cellcfg/serv-core.yaml, dan silangkan alamat MAC ini dalam output ip a di bootstrapper.

Dalam contoh ini, nilai antarmuka pengelolaan adalah ens15f0. Gunakan nilai Anda sendiri saat mengikuti petunjuk ini. Tambahkan alamat IP dengan alamat IP pengelolaan yang ada di file 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: {}

Dalam file YAML contoh ini, alamat IP pengelolaan adalah 172.29.24.147. Panjang awalan /26 digunakan sebagai blok CIDR yang ditemukan di Menemukan alamat IP, CIDR, dan gateway pengelolaan adalah /26.

Tambahkan alamat IP pengelolaan ke antarmuka pengelolaan:

sudo ip addr add 172.29.24.147/26 dev ens15f0,

Selanjutnya, tetapkan antarmuka menggunakan perintah ip ini:

ip link set ens15f0 up

Untuk memeriksa apakah konfigurasi antarmuka berhasil, gunakan ip link show ens15f0:

ip link show ens15f0

Outputnya mirip dengan berikut ini, dengan pesan UP yang menunjukkan keberhasilan:

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. Menyiapkan konfigurasi perutean


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"

Ganti kode berikut:

Kemudian, jalankan skrip di bootstrapper.

9.3. Mengonfigurasi clock bootstrapper

Pada tahap ini, belum ada server NTP. Kita perlu menyetel jam bootstrapper secara manual ke waktu yang cukup akurat (dalam waktu 1 detik dari waktu nyata) dalam UTC. Pastikan untuk menggunakan "AM" atau "PM", kecuali jika Anda yakin bahwa Anda menggunakan model waktu 24 jam. Setelan jam yang salah akan memiliki efek yang tidak dapat diperbaiki pada tahap selanjutnya.

date --set "DATE_TIME_UTC"

Ganti DATE_TIME_UTC dengan tanggal dan waktu dalam UTC, seperti 2023-03-21 01:14:30 AM UTC.

9.4. Login ke server bootstrapper

Jika Anda logout dari server bootstrapper, Anda dapat login kembali di lokasi fisik mesin bootstrapper atau menggunakan pengontrol sistem.

9.4.1. Login mesin fisik

Login ke server bootstrapper dari mesin fisik:

  1. Hubungkan keyboard, mouse, dan monitor ke mesin bootstrapper.

  2. Login ke mesin menggunakan nama pengguna dan sandi default.

9.4.2. Login pengontrol sistem

Login ke server bootstrapper menggunakan pengontrol sistem:

  1. Pergi ke troli darurat dengan pengontrol sistem.

  2. Jalankan perintah berikut:

    ssh ubuntu@BOOTSTRAPPER_IP_ADDRESS
    

    Ganti BOOTSTRAPPER_IP_ADDRESS dengan alamat IP server bootstrapper.

9.5. Struktur File

Semua operasi berikutnya dilakukan sebagai pengguna root. Berikut adalah struktur direktori yang direkomendasikan, tetapi tidak wajib.

    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