Esegui la migrazione della configurazione per l'integrazione di F5 BIG-IP

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 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): riconciliazioni LoadBalancer 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 viene 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:

  1. Cambia loadBalancer.kind a "ManualLB".

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

  3. Configura il valore nodePort utilizzato per il traffico HTTP inviato al VIP in entrata.

    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 valore nodePort utilizzato per il traffico HTTPS inviato al VIP in entrata:

    1. Visualizza il valore HTTPS nodePort 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 parametro Campo loadBalancer.manualLB.ingressHTTPSNodePort, ad esempio:

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

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

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

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

    1. 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
    2. Aggiungi il valore del comando precedente al parametro Campo loadBalancer.manualLB.konnectivityServerNodePort, ad esempio:

      loadBalancer:
        manualLB:
          konnectivityServerNodePort: 30563
  7. Elimina l'intero loadBalancer.f5BigIP.

  8. Esegui gkectl diagnose cluster, e risolvere 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 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:

  1. Cambia loadBalancer.kind a "ManualLB".

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

  3. 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à.

  4. Esegui questi passaggi solo per i cluster di amministrazione non ad alta disponibilità:

    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 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
  6. Elimina l'intero loadBalancer.f5BigIP.

  7. Esegui gkectl diagnose cluster, e risolvere 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 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)