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 tinggi, kami sarankan Anda mengikuti 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 Anda 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 BIG-IP CIS Container Ingress Services (CIS) Controller 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.
Bagaimanapun, kami 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 KubernetesLoadBalancerjenis ke dalam format F5 Common Controller Core Library (CCCL) ConfigMap.Pengontrol F5 BIG-IP CIS v1.14 (awalan pod:
k8s-bigip-ctlr-deployment): menerjemahkan ConfigMap ke dalam konfigurasi load balancer F5.
Agen ini menyederhanakan konfigurasi load balancer F5 dalam cluster Kubernetes Anda. Dengan membuat Layanan 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 memberikan dukungan yang lebih baik untuk Service API secara native.
Implementasinya menggunakan CCCL ConfigMap API lama dan CIS 1.x. Namun, F5 kini menyediakan AS3 ConfigMap API yang lebih baru dan CIS 2.x.
Pengontrol CIS dalam paket Google Distributed Cloud tetap berada di 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 mengalihkan agen F5 dari komponen yang dipaketkan menjadi diinstal secara independen. Jika Anda bermigrasi, Anda dapat terus menggunakan agen yang ada tanpa gangguan dan layanan yang dibuat sebelumnya akan tetap beroperasi.
Untuk cluster load balancing manual balancing 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 persyaratan untuk migrasi:
Cluster admin dan semua cluster pengguna harus menggunakan versi 1.29 atau yang lebih tinggi.
Anda harus menggunakan alamat IP statis untuk node cluster admin dan pengguna. Jenis pengalamatan IP ditetapkan di kolom
network.ipMode.type, dan tidak dapat diubah. Jika kolom ini ditetapkan ke DHCP, Anda tidak dapat memigrasikan cluster.
Mengupdate file konfigurasi cluster pengguna
Buat perubahan berikut pada file konfigurasi cluster pengguna:
Ubah
loadBalancer.kindmenjadi"ManualLB".Pertahankan nilai yang sama untuk
loadBalancer.vips.controlPlaneVIPdanloadBalancer.vips.ingressVIPkolom.Konfigurasikan
nodePortyang digunakan untuk traffic HTTP yang dikirim ke VIP ingress.Dapatkan nilai
nodePortHTTP saat ini:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep http2 -A 1Ganti
USER_CLUSTER_KUBECONFIGdengan jalur file kubeconfig cluster pengguna.Tambahkan nilai dari perintah sebelumnya ke kolom
loadBalancer.manualLB.ingressHTTPNodePort, misalnya:loadBalancer: manualLB: ingressHTTPNodePort: 30243
Konfigurasikan
nodePortyang digunakan untuk traffic HTTPS yang dikirim ke VIP ingress:Dapatkan nilai
nodePortHTTPS saat ini:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep https -A 1Tambahkan nilai dari perintah sebelumnya ke kolom
loadBalancer.manualLB.ingressHTTPSNodePort, misalnya:loadBalancer: manualLB: ingressHTTPSNodePort: 30879
Konfigurasikan
nodePortuntuk server Kubernetes API:Dapatkan nilai
nodePortsaat ini untuk server Kubernetes API:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep kube-apiserver-port -A 1Ganti kode berikut:
ADMIN_CLUSTER_KUBECONFIGdengan 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
nodePortuntuk server Konnectivity:Dapatkan nilai
nodePortsaat ini untuk server Konnectivity:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep konnectivity-server-port -A 1Tambahkan nilai dari perintah sebelumnya ke 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_CONFIGGanti kode berikut:
ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin.USER_CLUSTER_CONFIG: jalur file konfigurasi cluster pengguna.
Mengupdate file konfigurasi cluster admin
Buat perubahan berikut pada file konfigurasi cluster admin:
Ubah
loadBalancer.kindmenjadi"ManualLB".Pertahankan nilai yang sama untuk kolom
loadBalancer.vips.controlPlaneVIP.Periksa nilai kolom
adminMaster.replicas. Jika nilainya 3, cluster admin memiliki ketersediaan tinggi (HA). Jika nilainya 1, cluster admin tidak memiliki HA.Lakukan langkah-langkah berikut hanya untuk cluster admin non-HA:
Dapatkan nilai
nodePortuntuk server Kubernetes API:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n kube-system -oyaml | grep nodePortGanti
ADMIN_CLUSTER_KUBECONFIGdengan 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
nodePortadd-on:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get deploy monitoring-operator -n kube-system -oyaml | grep admin-ingress-nodeportJika perintah sebelumnya menampilkan nilai, tambahkan ke kolom
loadBalancer.manualLB.addonsNodePort, misalnya:loadBalancer: manualLB: addonsNodePort: 31405Hapus seluruh bagian
loadBalancer.f5BigIP.
Mengupdate cluster admin
Jalankan perintah berikut untuk mengupdate cluster:
gkectl update admin \
--kubeconfig ADMIN_CLUSTER_KUBECONFIG \
--config ADMIN_CLUSTER_CONFIGGanti kode berikut:
ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin.ADMIN_CLUSTER_CONFIG: jalur file konfigurasi cluster admin.
Memverifikasi bahwa resource F5 lama masih ada
Setelah mengupdate cluster untuk menggunakan load balancing manual, traffic ke cluster Anda 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 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 bidang kontrol maupun node add-on.
Cluster admin non-HA
Traffic bidang kontrol
Berikut ini 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 bidang kontrol maupun node add-on.
Traffic ke layanan di node add-on
Jika cluster admin Anda 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 bidang kontrol maupun node add-on.
Cluster pengguna
Traffic bidang kontrol
Berikut ini 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 pemetaan ke alamat IP dan nilai nodePort untuk traffic bidang data:
- (
ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort) - (
ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)