Questo documento mostra come eseguire la migrazione delle impostazioni di configurazione per il bilanciatore del carico integrato di F5 BIG-IP alla modalità di bilanciamento del carico manuale.
Supporto per il bilanciatore del carico F5 BIG-IP
In passato potevi configurare Google Distributed Cloud per l'integrazione con F5 BIG-IP nel seguente senso: quando uno sviluppatore crea un servizio di tipo LoadBalancer
e specifica un indirizzo IP virtuale (VIP) per il servizio, Google Distributed Cloud configura automaticamente il VIP sul bilanciatore del carico.
Per abilitare funzionalità nuove e avanzate, come il piano di controllo V2, ti consigliamo di aggiornare la configurazione. Puoi continuare a utilizzare il bilanciatore del carico BIG-IP F5, ma devi modificare le impostazioni nei file di configurazione del cluster per utilizzare il bilanciamento del carico manuale.
Dopo la migrazione, i carichi di lavoro F5 verranno mantenuti, ma Google Distributed Cloud non li gestirà più. In una release futura, F5 BIG-IP sarà disponibile solo per la gestione manuale. Ciò significa che sarai responsabile della gestione diretta dei carichi di lavoro BIG-IP di F5.
Requisiti
Di seguito sono riportati i requisiti per la migrazione:
La versione del cluster di amministrazione e di tutti i cluster utente deve essere 1.29 o successiva.
Devi utilizzare indirizzi IP statici per i nodi del cluster di amministrazione e dell'utente. Il tipo di indirizzamento IP è impostato nel campo
network.ipMode.type
ed è immutabile. Se questo campo è impostato su DHCP, non puoi eseguire la migrazione dei cluster.
Aggiorna il file di configurazione del cluster utente
Apporta le seguenti modifiche al file di configurazione del cluster utente:
Cambia
loadBalancer.kind
in"ManualLB"
.Mantieni gli stessi valori per i campi
loadBalancer.vips.controlPlaneVIP
eloadBalancer.vips.ingressVIP
.Configura il valore
nodePort
utilizzato per il traffico HTTP inviato al VIP in entrata.Ottieni il valore HTTP
nodePort
corrente:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep http2 -A 1
Sostituisci
USER_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster utente.Aggiungi il valore del comando precedente al campo
loadBalancer.manualLB.ingressHTTPNodePort
, ad esempio:loadBalancer: manualLB: ingressHTTPNodePort: 30243
Configura il valore
nodePort
utilizzato per il traffico HTTPS inviato al VIP in entrata:Visualizza il valore HTTPS
nodePort
corrente:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep https -A 1
Aggiungi il valore del comando precedente al campo
loadBalancer.manualLB.ingressHTTPSNodePort
, ad esempio:loadBalancer: manualLB: ingressHTTPSNodePort: 30879
Configura
nodePort
per il server API Kubernetes:Ottieni il valore
nodePort
attuale per il server API Kubernetes:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep kube-apiserver-port -A 1
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster admin.USER_CLUSTER_NAME
: nome del cluster utente.
Aggiungi il valore del comando precedente al campo
loadBalancer.manualLB.controlPlaneNodePort
, ad esempio:loadBalancer: manualLB: controlPlaneNodePort: 30968
Configura
nodePort
per il server Konnectivity:Ottieni il valore
nodePort
attuale per il server Konnectivity:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep konnectivity-server-port -A 1
Aggiungi il valore del comando precedente al campo
loadBalancer.manualLB.konnectivityServerNodePort
, ad esempio:loadBalancer: manualLB: konnectivityServerNodePort: 30563
Elimina l'intera sezione
loadBalancer.f5BigIP
.Esegui
gkectl diagnose cluster
e risolvi gli eventuali problemi rilevati dal comando.gkectl diagnose cluster \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME
Aggiorna il cluster utente:
Esegui questo comando per eseguire la migrazione del cluster:
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del file kubeconfig del cluster di amministrazione.USER_CLUSTER_CONFIG
: il percorso del file di configurazione del cluster utente.
Aggiorna il file di configurazione del cluster di amministrazione
Apporta le seguenti modifiche al file di configurazione del cluster di amministrazione:
Cambia
loadBalancer.kind
in"ManualLB"
.Mantieni lo stesso valore per il campo
loadBalancer.vips.controlPlaneVIP
.Verifica il valore del campo
adminMaster.replicas
. Se il valore è 3, il cluster di amministrazione è ad alta disponibilità. Se il valore è 1, il cluster di amministrazione non è ad alta disponibilità.Esegui questi passaggi solo per i cluster di amministrazione non ad alta disponibilità:
Ottieni il valore
nodePort
per il server API Kubernetes:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n kube-system -oyaml | grep nodePort
Sostituisci
ADMIN_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster di amministrazione.Aggiungi il valore del comando precedente al campo
loadBalancer.manualLB.controlPlaneNodePort
, ad esempio:loadBalancer: manualLB: controlPlaneNodePort: 30968
Esegui questo comando per verificare se è presente un componente aggiuntivo
nodePort
:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get deploy monitoring-operator -n kube-system -oyaml | grep admin-ingress-nodeport
Se il comando precedente restituisce un valore, aggiungilo al campo
loadBalancer.manualLB.addonsNodePort
, ad esempio:loadBalancer: manualLB: addonsNodePort: 31405
Elimina l'intera sezione
loadBalancer.f5BigIP
.Esegui
gkectl diagnose cluster
e risolvi gli eventuali problemi rilevati dal comando.gkectl diagnose cluster \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG
Aggiorna il cluster di amministrazione:
Esegui questo comando per aggiornare il cluster:
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del file kubeconfig del cluster di amministrazione.ADMIN_CLUSTER_CONFIG
: il percorso del file di configurazione del cluster di amministrazione.
Verificare che le risorse F5 legacy esistano ancora
Dopo aver aggiornato i cluster per utilizzare il bilanciamento del carico manuale, il traffico verso i cluster non viene interrotto perché le risorse F5 esistenti esistono ancora, come puoi vedere eseguendo questo comando:
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
Sostituisci CLUSTER_KUBECONFIG
con il percorso del cluster di amministrazione o con il file kubeconfig del cluster utente.
L'output previsto è simile al seguente:
Cluster di amministrazione:
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 utente:
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
Controlla il bilanciatore del carico
Dopo la migrazione, non è necessario modificare le impostazioni del bilanciatore del carico, perché hai mantenuto gli stessi valori VIP e nodePort
. Le seguenti tabelle descrivono le mappature dai VIP agli indirizzi IP dei nodi:nodePort
.
Cluster di amministrazione ad alta disponibilità
Traffico verso i nodi del piano di controllo
Google Distributed Cloud gestisce automaticamente il bilanciamento del carico del traffico del piano di controllo per i cluster di amministrazione ad alta disponibilità. Anche se non è necessario configurare una mappatura nel bilanciatore del carico, devi specificare un indirizzo IP nel campo loadBalancer.vips.controlPlaneVIP
.
Traffico verso i servizi nei nodi dei componenti aggiuntivi
Se il tuo cluster di amministrazione aveva un valore per addonsNodePort
, dovresti vedere una
mappatura agli indirizzi IP e il valore nodePort
per il traffico ai servizi nei
nodi aggiuntivi:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Dovresti avere questa mappatura per tutti i nodi nel cluster di amministrazione, sia per i nodi del piano di controllo sia per i nodi dei componenti aggiuntivi.
Cluster di amministrazione non ad alta disponibilità
Traffico del piano di controllo
Di seguito viene mostrata la mappatura all'indirizzo IP e al valore nodePort
per il nodo del piano di controllo:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
Dovresti avere questa mappatura per tutti i nodi nel cluster di amministrazione, sia per il nodo del piano di controllo sia per i nodi dei componenti aggiuntivi.
Traffico verso i servizi nei nodi dei componenti aggiuntivi
Se il cluster di amministrazione aveva un valore per addonsNodePort
, dovresti avere la seguente mappatura agli indirizzi IP e ai valori nodePort
per i servizi in esecuzione nei nodi dei componenti aggiuntivi:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Dovresti avere questa mappatura per tutti i nodi nel cluster di amministrazione, sia per il nodo del piano di controllo sia per i nodi dei componenti aggiuntivi.
Cluster utente
Traffico del piano di controllo
Di seguito viene mostrata la mappatura agli indirizzi IP e ai valori nodePort
per il traffico del piano di controllo:
- (
controlPlaneVIP
:443
) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
) - (
controlPlaneVIP
:8132
) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort
)
Dovresti avere questa mappatura per tutti i nodi nel cluster admin, sia per il cluster di amministrazione sia per i nodi del piano di controllo del cluster utente.
Traffico del piano dati
Di seguito viene mostrata la mappatura agli indirizzi IP e ai valori nodePort
per il traffico del piano dati:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)