1.29: Pratinjau
1.28: Tidak tersedia
Dokumen ini menunjukkan cara memigrasikan setelan konfigurasi untuk integrasi load balancer F5 BIG-IP ke mode load balancing manual untuk cluster pada versi 1.29. Jika cluster Anda menggunakan versi 1.30 atau yang lebih baru, sebaiknya ikuti petunjuk di Merencanakan migrasi cluster ke fitur yang direkomendasikan.
Menggunakan F5 BIG-IP dalam mode load balancing manual memberi Anda fleksibilitas untuk mengupgrade agen F5 secara independen tanpa memengaruhi fungsi load balancer F5 atau layanan Kubernetes Anda. Jika bermigrasi ke konfigurasi manual, Anda bisa mendapatkan update langsung dari F5 untuk memastikan performa dan keamanan yang optimal.
Migrasi ini diperlukan dalam situasi berikut:
Anda ingin mengaktifkan fitur baru seperti Controlplane V2 dan Anda juga memerlukan akses ke F5.
Anda memerlukan kemampuan yang disediakan oleh versi Pengontrol Layanan Masuk Penampung CIS BIG-IP (CIS) yang lebih tinggi dari v1.14.
Jika situasi sebelumnya tidak berlaku untuk Anda, Anda dapat terus menggunakan konfigurasi yang dipaketkan untuk load balancing F5 BIG-IP.
Apa pun pilihannya, kami akan terus mendukung F5 secara resmi sebagai solusi load balancer.
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 Layanan Kubernetes jenisLoadBalancer
ke dalam format ConfigMap Common Controller Core Library (CCCL) F5.F5 BIG-IP CIS Controller v1.14 (awalan pod:
k8s-bigip-ctlr-deployment
): menerjemahkan ConfigMap menjadi konfigurasi load balancer F5.
Agen ini menyederhanakan konfigurasi load balancer F5 dalam
cluster Kubernetes Anda. Dengan membuat Service jenis LoadBalancer
, pengontrol akan otomatis mengonfigurasi load balancer F5 untuk mengarahkan traffic ke node cluster Anda.
Namun, solusi yang dipaketkan memiliki batasan:
Ekspresi Service API terbatas. Anda tidak dapat mengonfigurasi pengontrol BIG-IP sesuai keinginan, atau menggunakan fitur F5 lanjutan. F5 sudah menyediakan dukungan yang lebih baik Service API secara native.
Implementasi ini menggunakan CCCL ConfigMap API lama dan CIS 1.x. Namun, F5 kini menyediakan ConfigMap API AS3 dan CIS 2.x yang lebih baru.
Pengontrol CIS dalam paket Google Distributed Cloud tetap menggunakan v1.14 karena masalah kompatibilitas dengan panduan upgrade F5 untuk CIS v2.x. Oleh karena itu, untuk memberi Anda fleksibilitas dalam mengatasi kerentanan keamanan dan mengakses fitur terbaru, kami melakukan transisi agen F5 dari komponen yang dipaketkan menjadi diinstal secara independen. Jika melakukan migrasi, Anda dapat terus menggunakan agen yang ada tanpa gangguan dan layanan yang dibuat sebelumnya tetap beroperasi.
Untuk cluster load balancing manual yang baru dibuat dengan F5 sebagai solusi load balancing, Anda harus menginstal pengontrol sendiri. Demikian pula, jika cluster Anda telah dimigrasikan dari F5 yang dipaketkan dan Anda ingin menggunakan CIS Controller versi yang lebih baru, Anda harus menginstal pengontrol sendiri.
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 node cluster admin dan pengguna. Jenis pemberian alamat IP ditetapkan di kolom
network.ipMode.type
, dan tidak dapat diubah. Jika kolom ini ditetapkan ke DHCP, Anda tidak dapat memigrasikan cluster.
Memperbarui file konfigurasi cluster pengguna
Buat perubahan berikut pada file konfigurasi cluster pengguna:
Ubah
loadBalancer.kind
menjadi"ManualLB"
.Biarkan nilai yang sama untuk kolom
loadBalancer.vips.controlPlaneVIP
danloadBalancer.vips.ingressVIP
.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 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 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 kolom
loadBalancer.manualLB.controlPlaneNodePort
, misalnya:loadBalancer: manualLB: controlPlaneNodePort: 30968
Konfigurasikan
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 kolom
loadBalancer.manualLB.konnectivityServerNodePort
, misalnya:loadBalancer: manualLB: konnectivityServerNodePort: 30563
Hapus seluruh bagian
loadBalancer.f5BigIP
.
Memperbarui 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.
Memperbarui file konfigurasi cluster admin
Buat perubahan berikut pada file konfigurasi cluster admin:
Ubah
loadBalancer.kind
menjadi"ManualLB"
.Tetapkan nilai yang sama untuk kolom
loadBalancer.vips.controlPlaneVIP
.Periksa nilai kolom
adminMaster.replicas
. Jika nilainya 3, cluster admin memiliki ketersediaan tinggi (HA). Jika nilainya adalah 1, cluster admin bukan 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 kolom
loadBalancer.manualLB.controlPlaneNodePort
, misalnya:loadBalancer: manualLB: controlPlaneNodePort: 30968
Jalankan perintah berikut untuk melihat apakah ada
nodePort
add-on: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
.
Memperbarui cluster admin
Jalankan perintah berikut untuk mengupdate cluster:
gkectl update admin \ --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 bahwa resource F5 lama masih ada
Setelah mengupdate cluster untuk menggunakan load balancing manual, traffic ke cluster tidak akan 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
file kubeconfig cluster admin atau 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 HA
Traffic ke node bidang kontrol
Google Distributed Cloud secara otomatis menangani load balancing traffic
bidang kontrol untuk cluster admin HA. Meskipun Anda 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 Anda 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 control plane maupun node add-on.
Cluster admin non-HA
Traffic bidang kontrol
Berikut ini menunjukkan pemetaan ke alamat IP dan nilai nodePort
untuk
node bidang kontrol:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
Anda harus memiliki pemetaan ini untuk semua node di cluster admin, baik node control plane maupun node add-on.
Traffic ke layanan di node add-on
Jika cluster admin memiliki nilai untuk addonsNodePort
, Anda harus memiliki pemetaan berikut 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 control plane maupun node add-on.
Cluster pengguna
Traffic bidang kontrol
Berikut ini menunjukkan pemetaan ke alamat IP dan nilai nodePort
untuk
traffic 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 node bidang kontrol cluster admin maupun cluster pengguna.
Traffic bidang data
Berikut ini menunjukkan pemetaan ke alamat IP dan nilai nodePort
untuk
traffic bidang data:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)