12. Bootstrap jaringan

Estimasi waktu penyelesaian: 240 menit

Pemilik komponen yang dapat dioperasikan: PNET

Profil keterampilan: engineer deployment

Halaman ini mencantumkan langkah-langkah untuk mem-bootstrap jaringan dan mengonfigurasi switch.

Sistem jaringan mencakup komponen berikut:

  • Jaringan pengelolaan: Jaringan pengelolaan di luar band yang mencakup dua jenis switch berikut:

    • Tombol pengelolaan
    • Tombol agregasi pengelolaan
  • Jaringan bidang data: Jaringan yang membawa traffic pengguna dan mencakup tiga jenis switch berikut:

    • Sakelar top-of-rack (TOR)
    • Pengalihan agregasi
    • Sakelar daun batas

Jika firmware saat ini di switch bukan versi yang diharapkan, bootstrap jaringan akan mencoba mengupdate switch ke versi OS switch yang diharapkan untuk versi air-gapped Google Distributed Cloud (GDC).

12.1. Sebelum memulai

Switch mungkin dikirim dengan setelan default pabrik. Sebelum memulai, reset semua sakelar untuk menghapus konfigurasi yang ada. Untuk melakukannya, hubungkan menggunakan konsol serial dan jalankan perintah berikut:

write erase

Setelah menghapus konfigurasi switch yang ada, muat ulang switch:

reload in 5

12.2. Penginstalan jaringan

Lakukan langkah-langkah berikut untuk penginstalan jaringan:

  1. Nyalakan semua sakelar.
  2. Mulai program bootstrap jaringan dengan akses root sudo di mesin bootstrap:

    gdcloud system network install --config PATH_TO_CELLCFG --upgrade-switch-os
    

    Ganti PATH_TO_CELLCFG dengan jalur ke file cellcfg.

    1. Jika perintah ini gagal, dan menampilkan pesan error berikut:

      root@bootstrapper:~/hams/gdc/output/cellcfg# gdcloud system network install --config /root/hams/gdc/output/cellcfg --upgrade-switch-os
      Error: failed to initialize KIND: could not determine harbor address (no match between local and docker hostnames): could not find a match
      
    2. Jalankan kembali perintah init untuk mengatasi error ini:

      gdcloud system network init --config PATH_TO_CELLCFG
      
  3. Biarkan tombol tetap aktif. Switch akan melalui urutan booting PowerOn Auto Provisioning (POAP) untuk menginstal sendirinya secara otomatis dari mesin bootstrap dari jarak jauh.

  4. Pantau log program bootstrap untuk memastikan switch aktif dalam urutan berikut:

    1. Tombol pengelolaan 1.
    2. Switch pengelolaan lainnya dan switch agregasi pengelolaan.
    3. Beralih jaringan data.
  5. Terus pantau log bootstrap. Setelah menyelesaikan langkah-langkah sebelumnya, sakelar akan terhubung. Program bootstrap menginstal konfigurasi tambahan pada switch pengelolaan dan switch data melalui API.

  6. Tunggu hingga log bootstrap menampilkan pesan Successfully bootstrapped all switches.

12.3. Detail bootstrap

Gunakan urutan boot POAP untuk mem-bootstrap semua switch di jaringan sebagai berikut:

  1. Hubungkan mesin bootstrap ke switch pengelolaan.
  2. Hubungkan switch agregasi pengelolaan ke switch pengelolaan.
  3. Hubungkan sakelar lainnya di rak yang sama.
  4. Hubungkan switch agregasi pengelolaan ke rak lain.
  5. Hubungkan semua sakelar lainnya.

Mesin bootstrap membuat konfigurasi switch dengan file YAML untuk switch di jalur ./cellcfg. Semua switch menggunakan urutan booting PowerOn Auto Provisioning (POAP) untuk menerima konfigurasinya. Di hardware 3.0, switch jaringan menerima file POAP dengan konfigurasi akhirnya. Setelah switch menyelesaikan POAP, switch akan otomatis dimulai ulang.

Setelah dimulai ulang, tombol harus sesuai dengan file YAML untuk tombol di jalur ./cellcfg. Mesin bootstrap mengirimkan permintaan ke semua switch untuk memastikan konektivitas dan konfigurasi switch berhasil.

12.4. Konfigurasi rute setelah bootstrap

Setelah proses bootstrapping jaringan, konfigurasi rute bootstrapper untuk mempersiapkannya bagi tugas bootstrapping mendatang.

12.4.1. Menemukan gateway bidang data

Gateway bidang data adalah alamat IP gateway untuk jaringan bidang data. Siapkan alamat IP gateway untuk berkomunikasi dengan layanan lain di jaringan dataplane.

Untuk menemukan alamat IP gateway bidang data, ikuti langkah-langkah berikut:

  1. Di folder cellcfg, buka file kub-ipam.yaml.
  2. Temukan resource SubnetClaim bernama control-plane-subnet:

    yq eval -r '
    select(.kind == "SubnetClaim" and .metadata.name == "control-plane-subnet") |
    .spec.ipv4Spec.staticReservedIpRanges[] |
    select(.type == "GatewayReservation") |
    .ipRange.startIPAddress
    ' PATH_TO_KUB_IPAM_FILE
    

    Ganti PATH_TO_KUB_IPAM_FILE dengan jalur ke file cellcfg/kub-ipam.yaml.

  3. Temukan alamat IP gateway di bagian spec.ipv4Spec yang tercantum sebagai type: GatewayReservation. Misalnya, alamat IP gateway untuk antarmuka bidang data adalah 172.19.0.1:

    # Source: kub-ipam-assets/templates/subnet_claims.yaml
    apiVersion: system.private.gdc.goog/v1alpha1
    kind: SubnetClaim
    metadata:
      name: control-plane-subnet
      namespace: root
      labels:
        subnetclaims.system.private.gdc.goog/usage: "server"
      annotations:
        lcm.private.gdc.goog/claim-by-force: "true"
        helm.sh/resource-policy: keep
    spec:
      category: ExternalOverlayNetwork
      overlayNetwork: External
      cidrClaimName: control-plane-cidr
      ipv4Spec:
        staticReservedIpRanges:
          - ipRange:
              size: 1
              startIPAddress: 172.19.0.1
            type: GatewayReservation
    

12.4.2. Membuat Skrip untuk Rute di Bootstrapper

Buat skrip untuk membuat rute:

bash << 'EOF'
#!/bin/bash

SCRIPT_PATH="/usr/local/sbin/add-routes.sh"
SERVICE_PATH="/usr/lib/systemd/system/add-routes.service"
MGMT_GATEWAY=MGMT_GATEWAY
MGMT_CIDR=MGMT_CIDR
MGMT_INTERFACE=MGMT_INTERFACE
BOND_GATEWAY=DATA_GATEWAY

rm -rf "$SCRIPT_PATH" 2>/dev/null
touch "$SCRIPT_PATH"
rm -rf "$SERVICE_PATH" 2>/dev/null
touch "$SERVICE_PATH"

echo -e '#!/bin/bash\n' > "$SCRIPT_PATH"
echo "ip route del $MGMT_CIDR via $MGMT_GATEWAY dev $MGMT_INTERFACE proto static" >> "$SCRIPT_PATH"
echo "ip route add $MGMT_CIDR via $MGMT_GATEWAY dev $MGMT_INTERFACE proto static" >> "$SCRIPT_PATH"
echo "ip route del default via $BOND_GATEWAY dev bond0 proto static" >> "$SCRIPT_PATH"
echo "ip route add default via $BOND_GATEWAY dev bond0 proto static" >> "$SCRIPT_PATH"

chmod +x "$SCRIPT_PATH"

echo -e "[Unit]\nDescription=Add Routes Service\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=/usr/local/sbin/add-routes.sh\n\n[Install]\nWantedBy=default.target" > "$SERVICE_PATH"

systemctl daemon-reload
systemctl enable add-routes.service
systemctl restart add-routes.service

echo -e "\n ### add-routes.sh script file path ###"
ls -l $SCRIPT_PATH
echo -e "\n ### add-routes.service file path ###"
ls -l $SERVICE_PATH
echo -e "\n ### add-routes.service status ###"
systemctl status add-routes.service
echo -e "\n ### Show if add-routes.service is enabled at boot ###"
systemctl is-enabled add-routes.service
echo -e "\n ### Show the just added route to ens15f0 ###"
ip route show | grep ens15f0
echo -e "\n ### Show the just added default route  ###"
ip route show | grep default
EOF

Ganti kode berikut:

Cuplikan ini membuat layanan systemd dan skrip sebagai berikut:

SCRIPT_PATH="/usr/local/sbin/add-routes.sh
SERVICE_PATH="/usr/lib/systemd/system/add-routes.service

Layanan systemd diperlukan untuk mempertahankan rute setelah memulai ulang sistem. Rute yang ditambahkan meliputi:

  • Rute default ke jaringan data melalui antarmuka bond0.
  • Rute ke jaringan pengelolaan melalui antarmuka pengelolaan.

12.5. Membuat konektivitas multi-zona

Jika instance GDC bergabung dengan multi-zona yang sudah ada, ikuti langkah-langkah di Mengonfigurasi interkoneksi multi-zona untuk setiap zona guna membuat konektivitas jaringan antara zona yang ada dan zona deployment saat ini.

12.6. Pemecahan masalah

Untuk memecahkan masalah bootstrap jaringan, lihat Pemecahan masalah bootstrap jaringan.

12.7. Potensi masalah

Switch jaringan yang sudah dimuat sebelumnya dengan versi yang lebih rendah dari 9.3.10 mungkin gagal melakukan bootstrap.

Untuk mengetahui informasi selengkapnya, lihat Masalah umum.