Memigrasikan konfigurasi untuk F5 BIG-IP terintegrasi

Dokumen ini menunjukkan cara memigrasikan setelan konfigurasi untuk paket Integrasi load balancer BIG-IP F5 ke mode load balancing manual. Menggunakan F5 BIG-IP dalam mode load balancing manual memberi Anda fleksibilitas untuk Agen F5 secara independen tanpa memengaruhi fungsi load balancer F5 atau layanan Kubernetes Anda. Jika Anda bermigrasi ke konfigurasi manual, Anda akan mampu memperoleh pembaruan langsung dari F5 untuk memastikan kinerja dan keamanan.

Migrasi ini diperlukan dalam keadaan berikut:

  • Anda ingin mengaktifkan fitur baru seperti Controlplane V2 dan Anda juga perlu akses ke F5.

  • Anda memerlukan kemampuan yang disediakan oleh versi BIG-IP CIS Container Ingress Pengontrol Layanan (CIS) lebih tinggi dari v1.14.

Jika keadaan sebelumnya tidak berlaku untuk Anda, Anda dapat terus menggunakan paket konfigurasi untuk load balancing F5 BIG-IP.

Apa pun itu, kami terus mendukung F5 sebagai solusi load balancer secara resmi.

Dukungan untuk load balancer F5 BIG-IP

Kami mendukung penggunaan F5 BIG-IP dengan agen load balancer, yang terdiri dari dua pengontrol berikut:

  • Pengontrol F5 (awalan pod: load-balancer-f5): merekonsiliasi LoadBalancer mengetik Layanan Kubernetes ke dalam Common Controller Core Library (CCCL) F5 ConfigMap format font.

  • F5 BIG-IP CIS Controller v1.14 (awalan pod: k8s-bigip-ctlr-deployment): menerjemahkan ConfigMaps ke load balancer F5 konfigurasi standar.

Agen ini menyederhanakan konfigurasi load balancer F5 dalam Kubernetes. Dengan membuat Service jenis LoadBalancer, pengontrol secara otomatis mengonfigurasi {i>load balancer <i}F5 untuk mengarahkan lalu lintas data ke node cluster Anda.

Namun, solusi paket ini memiliki batasan:

  • Ekspresi Service API terbatas. Anda tidak dapat mengonfigurasi Pengontrol BIG-IP sesuka Anda, atau gunakan fitur F5 lanjutan. F5 sudah memberikan kualitas yang lebih tim dukungan Service API secara native.

  • Implementasi ini menggunakan CCCL ConfigMap API dan 1.x CIS lama. Namun, F5 kini menyediakan versi AS3 ConfigMap API dan 2.x CIS.

Pengontrol CIS dalam paket Google Distributed Cloud tetap pada v1.14 karena masalah kompatibilitas dengan panduan upgrade F5 untuk CIS v2.x. Oleh karena itu, untuk memberi Anda fleksibilitas untuk mengatasi kerentanan keamanan dan mengakses fitur terbaru, kami mengalihkan agen F5 dari paket komponen menjadi diinstal secara independen. Jika bermigrasi, Anda dapat melanjutkan menggunakan agen yang ada tanpa gangguan dan agen yang tetap beroperasi.

Untuk pemuatan manual yang baru dibuat balancing dengan F5 sebagai beban solusi balancing, Anda perlu menginstal pengontrol sendiri. Demikian pula, jika cluster Anda telah dimigrasikan dari paket F5 dan Anda ingin menggunakan dari CIS Controller, Anda perlu menginstal {i>controller<i} sendiri.

Persyaratan

Berikut adalah persyaratan untuk migrasi:

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

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

Memperbarui file konfigurasi cluster pengguna

Buat perubahan berikut pada file konfigurasi cluster pengguna:

  1. Mengubah loadBalancer.kind ke "ManualLB".

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

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

    1. Dapatkan nilai nodePort HTTP 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 fungsi Kolom loadBalancer.manualLB.ingressHTTPNodePort, misalnya:

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

    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 fungsi 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 fungsi Kolom loadBalancer.manualLB.controlPlaneNodePort, misalnya:

      loadBalancer:
        manualLB:
          controlPlaneNodePort: 30968
  6. Konfigurasi 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 fungsi Kolom loadBalancer.manualLB.konnectivityServerNodePort, misalnya:

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

Mengupdate 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 cluster admin {i>kubeconfig<i}.

  • USER_CLUSTER_CONFIG: jalur cluster pengguna file konfigurasi Anda.

Memperbarui file konfigurasi cluster admin

Buat perubahan berikut pada file konfigurasi cluster admin:

  1. Mengubah loadBalancer.kind ke "ManualLB".

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

  3. Periksa nilai adminMaster.replicas kolom tersebut. Jika nilainya 3, cluster admin memiliki ketersediaan tinggi (HA). Jika nilainya adalah 1, cluster adminnya adalah 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 fungsi 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 ke Kolom loadBalancer.manualLB.addonsNodePort, misalnya:

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

Mengupdate cluster admin

Jalankan perintah berikut untuk memperbarui cluster:

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

Ganti kode berikut:

  • ADMIN_CLUSTER_KUBECONFIG: jalur cluster admin {i>kubeconfig<i}.

  • ADMIN_CLUSTER_CONFIG: jalur cluster admin file konfigurasi Anda.

Memastikan resource F5 lama masih ada

Setelah mengupdate cluster untuk menggunakan load balancing manual, traffic ke cluster tidak terganggu karena sumber daya F5 yang ada masih ada, seperti Anda dapat melihatnya 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 pada file yang dimuat balancer karena Anda mempertahankan VIP dan nilai nodePort yang sama. Hal berikut yang menjelaskan pemetaan dari VIP ke alamat IP node:nodePort.

Cluster admin ketersediaan tinggi (HA)

Traffic ke node bidang kontrol

Google Distributed Cloud menangani load balancing bidang kontrol secara otomatis untuk cluster admin ketersediaan tinggi. Meskipun Anda tidak perlu mengonfigurasi pemetaan di load balancer, Anda harus menentukan 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) -> (NODE_IP_ADDRESSES:addonsNodePort)

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

Cluster admin non-HA

Lalu lintas bidang kontrol

Berikut adalah pemetaan ke alamat IP dan nilai nodePort untuk {i>node<i} bidang kontrol:

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

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

Traffic ke layanan di node add-on

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

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

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

Cluster pengguna

Lalu lintas bidang kontrol

Berikut adalah pemetaan ke alamat IP dan nilai nodePort untuk lalu lintas bidang kontrol:

  • (controlPlaneVIP.443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)
  • (controlPlaneVIP.8132) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort)

Anda harus memiliki pemetaan ini untuk semua node di cluster admin, baik dan node bidang kontrol cluster pengguna.

Traffic bidang data

Berikut adalah pemetaan ke alamat IP dan nilai nodePort untuk lalu lintas bidang data:

  • (ingressVIP.80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
  • (ingressVIP.443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)