Esegui la migrazione delle impostazioni di configurazione del bilanciatore del carico F5 BIG-IP

1.29: Anteprima
1.28: Non disponibile

Questo documento mostra come eseguire la migrazione delle impostazioni di configurazione Integrazione del bilanciatore del carico BIG-IP di F5 nella modalità di bilanciamento del carico manuale per i cluster alla versione 1.29. Se la versione dei cluster è 1.30 o successiva, ti consigliamo di seguire le istruzioni Pianifica la migrazione dei cluster alle funzionalità consigliate.

L'utilizzo di F5 BIG-IP in modalità di bilanciamento del carico manuale ti offre la flessibilità di eseguire l'upgrade dei tuoi agenti F5 in modo indipendente senza influire sulla funzionalità del bilanciatore del carico F5 o dei tuoi servizi Kubernetes. Se esegui la migrazione alla configurazione manuale, puoi ottenere gli aggiornamenti direttamente da F5 per garantire prestazioni e sicurezza ottimali.

Questa migrazione è obbligatoria nelle seguenti circostanze:

  • Abilitare nuove funzionalità, come il piano di controllo V2, e 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 la configurazione in bundle per il bilanciamento del carico 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): riconciliazioni LoadBalancer digita i servizi Kubernetes in Common Controller Core Library (CCCL) F5. ConfigMap formato.

  • F5 BIG-IP CIS Controller v1.14 (prefisso del pod: k8s-bigip-ctlr-deployment): traduce i ConfigMap in configurazioni del bilanciatore del carico F5.

Questi agenti semplificano la configurazione dei bilanciatori del carico F5 all'interno in un cluster Kubernetes. Creando un servizio di tipo LoadBalancer, i controller configurano automaticamente il bilanciatore del carico F5 in modo da indirizzare il traffico ai 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 come preferisci o utilizzare le funzionalità avanzate di F5. F5 offre già un supporto migliore per l'API Service in modo nativo.

  • L'implementazione utilizza l'API legacy CCCL ConfigMap e 1.x CIS. Tuttavia, F5 ora fornisce l'API ConfigMap AS3 più recente 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 offrirti la flessibilità di risolvere le vulnerabilità di sicurezza e accedere alle funzionalità più recenti, stiamo eseguendo la transizione degli agenti F5 da componenti in bundle a installazioni indipendenti. Se esegui la migrazione, puoi continuare usando 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 la migrazione del cluster è stata eseguita da F5 in bundle e vuoi utilizzare una versione più recente 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 utente. Il tipo di indirizzo 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:

  1. Modifica loadBalancer.kind in "ManualLB".

  2. Mantieni gli stessi valori per loadBalancer.vips.controlPlaneVIP e ai loadBalancer.vips.ingressVIP campi.

  3. Configura nodePort utilizzato per il traffico HTTP inviato all'IP virtuale di ingresso.

    1. 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.

    2. Aggiungi il valore del comando precedente al parametro Campo loadBalancer.manualLB.ingressHTTPNodePort, ad esempio:

      loadBalancer:
        manualLB:
          ingressHTTPNodePort: 30243
  4. Configura il nodePort utilizzato per il traffico HTTPS inviato all'IP virtuale di ingresso:

    1. Ottieni il valore nodePort HTTPS corrente:

      kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
          get svc istio-ingress -n gke-system -oyaml | grep https -A 1
    2. Aggiungi il valore del comando precedente al campo loadBalancer.manualLB.ingressHTTPSNodePort, ad esempio:

      loadBalancer:
        manualLB:
          ingressHTTPSNodePort: 30879
  5. Configura nodePort per il server API Kubernetes:

    1. Ottieni il valore corrente di nodePort 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: il nome del cluster di utenti.

    2. Aggiungi il valore del comando precedente al campo loadBalancer.manualLB.controlPlaneNodePort, ad esempio:

      loadBalancer:
        manualLB:
          controlPlaneNodePort: 30968
  6. Configura nodePort per il server Konnectivity:

    1. Ottieni il valore corrente di nodePort per il server Konnectivity:

      kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep konnectivity-server-port -A 1
    2. Aggiungi il valore del comando precedente al campo loadBalancer.manualLB.konnectivityServerNodePort, ad esempio:

      loadBalancer:
        manualLB:
          konnectivityServerNodePort: 30563
  7. Elimina l'intera sezione loadBalancer.f5BigIP.

Aggiorna il cluster utente

Esegui il seguente 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 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:

  1. Modifica loadBalancer.kind in "ManualLB".

  2. Mantieni lo stesso valore per loadBalancer.vips.controlPlaneVIP .

  3. Controlla il valore del campo adminMaster.replicas. Se il valore è 3, il cluster di amministrazione è ad alta disponibilità (HA). Se il valore è 1, il cluster di amministrazione non è ad alta disponibilità.

  4. Esegui i seguenti passaggi solo per i cluster di amministrazione non HA:

    1. 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.

    2. Aggiungi il valore del comando precedente al parametro Campo loadBalancer.manualLB.controlPlaneNodePort, ad esempio:

      loadBalancer:
        manualLB:
          controlPlaneNodePort: 30968
  5. Esegui il seguente comando per verificare se sono presenti componenti aggiuntivi 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 loadBalancer.manualLB.addonsNodePort campo, ad esempio:

    loadBalancer:
      manualLB:
        addonsNodePort: 31405
  6. Elimina l'intera sezione 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 file kubeconfig del cluster di amministrazione.

  • 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 in modo che utilizzino il bilanciamento del carico manuale, il traffico verso i cluster non viene interrotto perché le risorse F5 esistenti esistono ancora, come puoi vedere eseguendo il seguente 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 di utenti:

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 dovresti dover modificare alcuna impostazione nel bilanciatore del carico perché hai mantenuto gli stessi VIP e valori nodePort. Le seguenti descrivono le mappature dai VIP agli indirizzi IP dei nodi:nodePort.

Cluster di amministrazione HA

Traffico verso i nodi del control plane

Google Distributed Cloud gestisce automaticamente il bilanciamento del carico del piano di controllo per i cluster di amministrazione ad alta disponibilità. Sebbene non sia 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 al valore nodePort per il traffico verso i servizi nei nodi dei componenti aggiuntivi:

  • (addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)

Questa mappatura deve essere presente per tutti i nodi del cluster di amministrazione, sia per i nodi del control plane 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 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)

Questa mappatura deve essere presente per tutti i nodi del cluster di amministrazione, sia per il nodo del control plane sia per i nodi dei componenti aggiuntivi.

Cluster utente

Traffico del piano di controllo

Di seguito è riportata 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)

Questa mappatura deve essere presente per tutti i nodi del cluster admin, sia per i nodi del cluster di amministrazione sia per i nodi del piano di controllo del cluster utente.

Traffico del piano dati

Di seguito è riportata la mappatura agli indirizzi IP e ai valori nodePort per il traffico del piano di dati:

  • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
  • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)