Memigrasikan konfigurasi untuk F5 BIG-IP terintegrasi

Dokumen ini menunjukkan cara memigrasikan setelan konfigurasi untuk load balancer terintegrasi F5 BIG-IP ke mode load balancing manual.

Dukungan untuk load balancer BIG-IP F5

Sebelumnya, Anda dapat mengonfigurasi Google Distributed Cloud agar dapat diintegrasikan dengan F5 BIG-IP sebagai berikut: saat developer membuat Layanan jenis LoadBalancer dan menentukan alamat IP virtual (VIP) untuk layanan, Google Distributed Cloud akan otomatis mengonfigurasi VIP di load balancer.

Untuk mengaktifkan fitur baru dan lanjutan, seperti Controlplane V2, sebaiknya Anda memperbarui konfigurasi. Anda dapat terus menggunakan load balancer F5 BIG-IP, tetapi Anda perlu mengubah setelan dalam file konfigurasi cluster agar menggunakan load balancing manual.

Setelah migrasi, workload F5 Anda akan tetap ada, tetapi Google Distributed Cloud tidak akan mengelolanya lagi. Dalam rilis mendatang, F5 BIG-IP hanya akan tersedia untuk pengelolaan manual. Ini berarti Anda bertanggung jawab untuk mengelola workload F5 BIG-IP secara langsung.

Persyaratan

Berikut adalah persyaratan untuk migrasi:

  • Cluster admin dan semua cluster pengguna harus versi 1.29 atau yang lebih tinggi.

  • Anda harus menggunakan alamat IP statis untuk admin dan node cluster pengguna. Jenis alamat IP ditetapkan di kolom network.ipMode.type, dan tidak dapat diubah. Jika kolom ini disetel ke DHCP, Anda tidak dapat memigrasikan cluster.

Mengupdate file konfigurasi cluster pengguna

Buat perubahan berikut pada file konfigurasi cluster pengguna:

  1. Ubah loadBalancer.kind menjadi "ManualLB".

  2. Pertahankan nilai yang sama untuk kolom loadBalancer.vips.controlPlaneVIP dan loadBalancer.vips.ingressVIP.

  3. Mengonfigurasi nodePort yang digunakan untuk traffic HTTP yang dikirim ke VIP masuk.

    1. Dapatkan nilai HTTP nodePort saat ini:

      kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
          get svc istio-ingress -n gke-system -oyaml | grep http2 -A 1

      Ganti USER_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster pengguna.

    2. Tambahkan nilai dari perintah sebelumnya ke kolom loadBalancer.manualLB.ingressHTTPNodePort, misalnya:

      loadBalancer:
        manualLB:
          ingressHTTPNodePort: 30243
  4. Konfigurasikan nodePort yang digunakan untuk traffic HTTPS yang dikirim ke VIP ingress:

    1. Dapatkan nilai nodePort HTTPS saat ini:

      kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
          get svc istio-ingress -n gke-system -oyaml | grep https -A 1
    2. Tambahkan nilai dari perintah sebelumnya ke kolom loadBalancer.manualLB.ingressHTTPSNodePort, misalnya:

      loadBalancer:
        manualLB:
          ingressHTTPSNodePort: 30879
  5. Konfigurasikan nodePort untuk server Kubernetes API:

    1. Dapatkan nilai nodePort saat ini untuk server Kubernetes API:

      kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep kube-apiserver-port -A 1

      Ganti kode berikut:

      • ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster admin.

      • USER_CLUSTER_NAME: nama cluster pengguna.

    2. Tambahkan nilai dari perintah sebelumnya ke kolom loadBalancer.manualLB.controlPlaneNodePort, misalnya:

      loadBalancer:
        manualLB:
          controlPlaneNodePort: 30968
  6. Konfigurasikan nodePort untuk server Konnectivity:

    1. Dapatkan nilai nodePort saat ini untuk server Konnectivity:

      kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep konnectivity-server-port -A 1
    2. Tambahkan nilai dari perintah sebelumnya ke kolom loadBalancer.manualLB.konnectivityServerNodePort, misalnya:

      loadBalancer:
        manualLB:
          konnectivityServerNodePort: 30563
  7. Hapus seluruh bagian loadBalancer.f5BigIP.

  8. Jalankan gkectl diagnose cluster, dan perbaiki masalah apa pun yang ditemukan perintah.

    gkectl diagnose cluster \
        --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
        --cluster-name=USER_CLUSTER_NAME

Perbarui cluster pengguna:

Jalankan perintah berikut untuk memigrasikan cluster:

gkectl update cluster \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin.

  • USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna.

Mengupdate file konfigurasi cluster admin

Lakukan perubahan berikut pada file konfigurasi cluster admin:

  1. Ubah loadBalancer.kind menjadi "ManualLB".

  2. Pertahankan nilai yang sama untuk kolom loadBalancer.vips.controlPlaneVIP.

  3. Periksa nilai kolom adminMaster.replicas. Jika nilainya adalah 3, berarti cluster admin memiliki ketersediaan tinggi (HA). Jika nilainya adalah 1, berarti cluster admin tersebut non-HA.

  4. Lakukan langkah-langkah berikut hanya untuk cluster admin non-HA:

    1. Dapatkan nilai nodePort untuk server Kubernetes API:

      kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          get svc kube-apiserver -n kube-system -oyaml | grep nodePort

      Ganti ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster admin.

    2. Tambahkan nilai dari perintah sebelumnya ke kolom loadBalancer.manualLB.controlPlaneNodePort, misalnya:

      loadBalancer:
        manualLB:
          controlPlaneNodePort: 30968
  5. Jalankan perintah berikut untuk melihat apakah ada add-on nodePort:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        get deploy monitoring-operator -n kube-system -oyaml | grep admin-ingress-nodeport

    Jika perintah sebelumnya menghasilkan nilai, tambahkan nilai tersebut ke kolom loadBalancer.manualLB.addonsNodePort, misalnya:

    loadBalancer:
      manualLB:
        addonsNodePort: 31405
  6. Hapus seluruh bagian loadBalancer.f5BigIP.

  7. Jalankan gkectl diagnose cluster, dan perbaiki masalah apa pun yang ditemukan perintah.

    gkectl diagnose cluster \
        --kubeconfig=ADMIN_CLUSTER_KUBECONFIG

Update cluster admin:

Jalankan perintah berikut untuk mengupdate cluster:

gkectl update cluster \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config ADMIN_CLUSTER_CONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin.

  • ADMIN_CLUSTER_CONFIG: jalur file konfigurasi cluster admin.

Memastikan resource F5 lama masih ada

Setelah memperbarui cluster agar menggunakan load balancing manual, traffic ke cluster Anda tidak terganggu karena resource F5 yang ada masih ada, seperti yang dapat Anda lihat dengan menjalankan perintah berikut:

kubectl --kubeconfig CLUSTER_KUBECONFIG \
  api-resources --verbs=list -o name   | xargs -n 1 kubectl --kubeconfig CLUSTER_KUBECONFIG get --show-kind --ignore-not-found --selector=onprem.cluster.gke.io/legacy-f5-resource=true -A

Ganti CLUSTER_KUBECONFIG dengan jalur cluster admin atau file kubeconfig cluster pengguna.

Output yang diharapkan mirip dengan berikut ini:

Cluster admin:

Warning: v1 ComponentStatus is deprecated in v1.19+
NAMESPACE     NAME                        TYPE     DATA   AGE
kube-system   secret/bigip-login-xt697x   Opaque   4      13h
NAMESPACE     NAME                              SECRETS   AGE
kube-system   serviceaccount/bigip-ctlr         0         13h
kube-system   serviceaccount/load-balancer-f5   0         13h
NAMESPACE     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/k8s-bigip-ctlr-deployment   1/1     1            1           13h
kube-system   deployment.apps/load-balancer-f5            1/1     1            1           13h
NAME                                                                                ROLE                                       AGE
clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding         ClusterRole/bigip-ctlr-clusterrole         13h
clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding   ClusterRole/load-balancer-f5-clusterrole   13h
NAME                                                                 CREATED AT
clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole         2024-03-25T04:37:34Z
clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole   2024-03-25T04:37:34Z

Cluster pengguna:

Warning: v1 ComponentStatus is deprecated in v1.19+
NAMESPACE     NAME                        TYPE     DATA   AGE
kube-system   secret/bigip-login-sspwrd   Opaque   4      14h
NAMESPACE     NAME                              SECRETS   AGE
kube-system   serviceaccount/bigip-ctlr         0         14h
kube-system   serviceaccount/load-balancer-f5   0         14h
NAMESPACE     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/k8s-bigip-ctlr-deployment   1/1     1            1           14h
kube-system   deployment.apps/load-balancer-f5            1/1     1            1           14h
NAME                                                                                ROLE                                       AGE
clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding         ClusterRole/bigip-ctlr-clusterrole         14h
clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding   ClusterRole/load-balancer-f5-clusterrole   14h
NAME                                                                 CREATED AT
clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole         2024-03-25T05:16:40Z
clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole   2024-03-25T05:16:41Z

Memeriksa load balancer

Setelah migrasi, Anda tidak perlu mengubah setelan apa pun di load balancer karena Anda mempertahankan nilai VIP dan nodePort yang sama. Tabel berikut menjelaskan pemetaan dari VIP ke alamat IP node:nodePort.

Cluster admin dengan ketersediaan tinggi (HA)

Traffic ke node bidang kontrol

Google Distributed Cloud secara otomatis menangani load balancing dari traffic bidang kontrol untuk cluster admin dengan ketersediaan tinggi (HA). Meskipun tidak perlu mengonfigurasi pemetaan di load balancer, Anda harus menentukan alamat IP di kolom loadBalancer.vips.controlPlaneVIP.

Traffic ke layanan di node add-on

Jika cluster admin memiliki nilai untuk addonsNodePort, Anda akan melihat pemetaan ke alamat IP dan nilai nodePort untuk traffic ke layanan di node add-on:

  • (addonsVIP:8443) -> (ditemukan_IP_ADDRESSES:addonsNodePort)

Anda harus memiliki pemetaan ini untuk semua node dalam cluster admin, baik node bidang kontrol maupun node add-on.

Cluster admin non-HA

Lalu lintas pesawat kontrol

Berikut ini adalah pemetaan ke alamat IP dan nilai nodePort untuk node bidang kontrol:

  • (controlPlaneVIP:443) -> (ditemukan_IP_ADDRESSES:controlPlaneNodePort)

Anda harus memiliki pemetaan ini untuk semua node dalam cluster admin, baik node bidang kontrol maupun node add-on.

Traffic ke layanan di node add-on

Jika cluster admin Anda memiliki nilai untuk addonsNodePort, Anda akan memiliki pemetaan berikut ke alamat IP dan nilai nodePort untuk layanan yang berjalan di node add-on:

  • (addonsVIP:8443) -> (ditemukan_IP_ADDRESSES:addonsNodePort)

Anda harus memiliki pemetaan ini untuk semua node dalam cluster admin, baik node bidang kontrol maupun node add-on.

Cluster pengguna

Lalu lintas pesawat kontrol

Berikut ini adalah pemetaan ke alamat IP dan nilai nodePort untuk traffic bidang kontrol:

  • (controlPlaneVIP:443) -> (ditemukan_IP_ADDRESSEScontrolPlaneNodePort)
  • (controlPlaneVIP:8132) -> (ditemukan_IP_ADDRESSESkonnectivityServerNodePort)

Anda akan memiliki pemetaan ini untuk semua node dalam cluster admin, baik cluster admin maupun node bidang kontrol cluster pengguna.

Traffic bidang data

Gambar berikut menunjukkan pemetaan ke alamat IP dan nilai nodePort untuk traffic bidang data:

  • (ingressVIP:80) -> (ditemukan_IP_ADDRESSESingressHTTPNodePort)
  • (ingressVIP:443) -> (ditemukan_IP_ADDRESSESingressHTTPSNodePort)