1.30: GA
1.29: Pratinjau
1.28: Tidak tersedia
Dokumen ini menunjukkan cara memigrasikan setelan konfigurasi untuk 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
): merekonsiliasiLoadBalancer
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:
Mengubah
loadBalancer.kind
ke"ManualLB"
.Pertahankan nilai yang sama untuk
loadBalancer.vips.controlPlaneVIP
danloadBalancer.vips.ingressVIP
kolom.Konfigurasikan
nodePort
yang digunakan untuk traffic HTTP yang dikirim ke VIP masuk.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.Tambahkan nilai dari perintah sebelumnya ke fungsi Kolom
loadBalancer.manualLB.ingressHTTPNodePort
, misalnya:loadBalancer: manualLB: ingressHTTPNodePort: 30243
Konfigurasikan
nodePort
yang digunakan untuk traffic HTTPS yang dikirim ke VIP masuk:Dapatkan nilai
nodePort
HTTPS saat ini:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep https -A 1
Tambahkan nilai dari perintah sebelumnya ke fungsi Kolom
loadBalancer.manualLB.ingressHTTPSNodePort
, misalnya:loadBalancer: manualLB: ingressHTTPSNodePort: 30879
Konfigurasikan
nodePort
untuk server Kubernetes API: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.
Tambahkan nilai dari perintah sebelumnya ke fungsi Kolom
loadBalancer.manualLB.controlPlaneNodePort
, misalnya:loadBalancer: manualLB: controlPlaneNodePort: 30968
Konfigurasi
nodePort
untuk server Konnectivity: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
Tambahkan nilai dari perintah sebelumnya ke fungsi Kolom
loadBalancer.manualLB.konnectivityServerNodePort
, misalnya:loadBalancer: manualLB: konnectivityServerNodePort: 30563
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:
Mengubah
loadBalancer.kind
ke"ManualLB"
.Pertahankan nilai yang sama untuk
loadBalancer.vips.controlPlaneVIP
kolom tersebut.Periksa nilai
adminMaster.replicas
kolom tersebut. Jika nilainya 3, cluster admin memiliki ketersediaan tinggi (HA). Jika nilainya adalah 1, cluster adminnya adalah non-HA.Lakukan langkah-langkah berikut hanya untuk cluster admin non-HA:
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.Tambahkan nilai dari perintah sebelumnya ke fungsi Kolom
loadBalancer.manualLB.controlPlaneNodePort
, misalnya:loadBalancer: manualLB: controlPlaneNodePort: 30968
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
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
)