Questo documento mostra come eseguire la migrazione delle impostazioni di configurazione per il tuo bundle Integrazione del bilanciatore del carico F5 BIG-IP in modalità di bilanciamento del carico manuale. F5 BIG-IP in modalità di bilanciamento del carico manuale ti offre la flessibilità di eseguire l'upgrade Agenti F5 in modo indipendente senza influire sulla funzione del bilanciatore del carico F5 o i tuoi servizi Kubernetes. Se esegui la migrazione alla configurazione manuale, poter ricevere gli aggiornamenti direttamente da F5 per garantire prestazioni e sicurezza.
Questa migrazione è necessaria nelle seguenti circostanze:
Abilitare nuove funzionalità, come il piano di controllo V2, e l'accesso a F5.
Devi avere le funzionalità fornite da una versione di Container Ingress CIS di BIG-IP Controller di servizi (CIS) successiva alla versione 1.14.
Se le circostanze precedenti non si applicano al tuo caso, puoi continuare a utilizzare il configurazione in bundle per il bilanciamento del carico di F5 BIG-IP.
In ogni caso, continuiamo a supportare ufficialmente F5 come soluzione di bilanciamento del carico.
Supporto per il bilanciatore del carico F5 BIG-IP
Supportiamo l'utilizzo di F5 BIG-IP con agenti del bilanciatore del carico, che sono costituiti da due controller:
Controller F5 (prefisso pod:
load-balancer-f5
): riconciliazioniLoadBalancer
digita i servizi Kubernetes in Common Controller Core Library (CCCL) F5. ConfigMap formato.F5 BIG-IP CIS Controller v1.14 (prefisso pod:
k8s-bigip-ctlr-deployment
): converte ConfigMap in un bilanciatore del carico F5 configurazioni.
Questi agenti semplificano la configurazione dei bilanciatori del carico F5 all'interno
in un cluster Kubernetes. Se crei un servizio di tipo LoadBalancer
,
configurano automaticamente il bilanciatore del carico F5 per indirizzare il traffico verso
nei nodi del cluster.
Tuttavia, la soluzione in bundle presenta alcune limitazioni:
L'espressività dell'API del servizio è limitata. Non puoi configurare il controller BIG-IP che preferisci o puoi usare le funzionalità avanzate di F5. F5 già offre meglio assistenza dell'API di servizio in modo nativo.
L'implementazione utilizza l'API legacy CCCL ConfigMap e 1.x CIS. Tuttavia, F5 ora fornisce la nuova AS3 API ConfigMap e 2.x CIS.
Il controller CIS nel bundle Google Distributed Cloud è rimasto alla versione 1.14 a causa di compatibilità con le indicazioni sull'upgrade di F5 per CIS v2.x. Pertanto, per vi offrono la flessibilità necessaria per affrontare le vulnerabilità di sicurezza e accedere funzionalità più recenti, eseguiremo la transizione degli agenti F5 installabili in modo indipendente. Se esegui la migrazione, puoi continuare utilizzando gli agenti esistenti senza interruzioni e i servizi creati in precedenza rimangono operativi.
Per il caricamento manuale appena creato Bilanciamento dei cluster con F5 come carico di bilanciamento del carico, devi installare i controller autonomamente. Analogamente, se è stata eseguita la migrazione del cluster da F5 in bundle e vuoi utilizzare una versione del controller CIS, devi installare i controller autonomamente.
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
network.ipMode.type
ed è immutabile. Se questo campo è impostato a 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
a"ManualLB"
.Mantieni gli stessi valori per
loadBalancer.vips.controlPlaneVIP
e ailoadBalancer.vips.ingressVIP
campi.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 di il file kubeconfig del cluster utente.Aggiungi il valore del comando precedente al parametro 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 parametro 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 di nel file kubeconfig del cluster admin.USER_CLUSTER_NAME
: nome del cluster utente.
Aggiungi il valore del comando precedente al parametro 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 parametro Campo
loadBalancer.manualLB.konnectivityServerNodePort
, ad esempio:loadBalancer: manualLB: konnectivityServerNodePort: 30563
Elimina l'intero
loadBalancer.f5BigIP
.
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 cluster di amministrazione kubeconfig.USER_CLUSTER_CONFIG
: il percorso del cluster utente di configurazione del deployment.
Aggiorna il file di configurazione del cluster di amministrazione
Apporta le seguenti modifiche al file di configurazione del cluster di amministrazione:
Cambia
loadBalancer.kind
a"ManualLB"
.Mantieni lo stesso valore per
loadBalancer.vips.controlPlaneVIP
.Verifica il valore dell'attributo
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 di il file kubeconfig del cluster di amministrazione.Aggiungi il valore del comando precedente al parametro 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'intero
loadBalancer.f5BigIP
.
Aggiorna il cluster di amministrazione
Esegui questo comando per aggiornare il cluster:
gkectl update admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del cluster di amministrazione kubeconfig.ADMIN_CLUSTER_CONFIG
: il percorso del cluster di amministrazione di configurazione del deployment.
Verificare che le risorse F5 legacy esistano ancora
Dopo aver aggiornato i cluster per utilizzare il bilanciamento del carico manuale, il traffico verso di cluster non viene interrotto perché le risorse F5 esistenti esistono ancora, 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 percorso
del cluster di amministrazione o del cluster utente kubeconfig.
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 alcuna impostazione nel caricamento
perché hai mantenuto gli stessi valori VIP e nodePort
. Le seguenti
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 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 nella
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 visualizzare un
agli indirizzi IP e al valore nodePort
per il traffico verso i servizi in
nodi dei componenti aggiuntivi:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Dovresti avere questa mappatura per tutti i nodi nel cluster di amministrazione, sia dai nodi del piano di controllo e dai 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
dal nodo del piano di controllo:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
Dovresti avere questa mappatura per tutti i nodi nel cluster di amministrazione, sia dal nodo del piano di controllo e dai nodi dei componenti aggiuntivi.
Traffico verso i servizi nei nodi dei componenti aggiuntivi
Se il tuo cluster di amministrazione aveva un valore per addonsNodePort
, dovresti avere il valore
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 dal nodo del piano di controllo e dai 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
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 tra il cluster di amministrazione e 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
per il traffico del piano dati:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)