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:
Ubah
loadBalancer.kind
menjadi"ManualLB"
.Pertahankan nilai yang sama untuk kolom
loadBalancer.vips.controlPlaneVIP
danloadBalancer.vips.ingressVIP
.Mengonfigurasi
nodePort
yang digunakan untuk traffic HTTP yang dikirim ke VIP masuk.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.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 ingress: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
.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:
Ubah
loadBalancer.kind
menjadi"ManualLB"
.Pertahankan nilai yang sama untuk kolom
loadBalancer.vips.controlPlaneVIP
.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.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 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
Hapus seluruh bagian
loadBalancer.f5BigIP
.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
)