Ce document explique comment migrer les paramètres de configuration de votre équilibreur de charge intégré BIG-IP de F5 vers le mode d'équilibrage de charge manuel.
Compatibilité avec l'équilibreur de charge F5 BIG-IP
Auparavant, vous pouviez configurer Google Distributed Cloud pour l'intégrer à F5 BIG-IP comme suit: lorsqu'un développeur crée un service de type LoadBalancer
et spécifie une adresse IP virtuelle (VIP) pour ce service, Google Distributed Cloud configure automatiquement l'adresse IP virtuelle sur l'équilibreur de charge.
Pour activer de nouvelles fonctionnalités avancées, telles que Controlplane V2, nous vous recommandons de mettre à jour la configuration. Vous pouvez continuer à utiliser votre équilibreur de charge F5 BIG-IP, mais vous devez modifier les paramètres de vos fichiers de configuration de cluster pour utiliser l'équilibrage de charge manuel.
Conditions requises
Voici les conditions requises pour la migration:
Le cluster d'administrateur et tous les clusters d'utilisateur doivent être de version 1.29 ou ultérieure.
Vous devez utiliser des adresses IP statiques pour vos nœuds de cluster d'administrateur et d'utilisateur. Le type d'adressage IP est défini dans le champ
network.ipMode.type
et ne peut pas être modifié. S'il est défini sur DHCP, vous ne pouvez pas migrer les clusters.
Mettre à jour le fichier de configuration du cluster d'utilisateur
Apportez les modifications suivantes au fichier de configuration du cluster d'utilisateur:
Remplacez
loadBalancer.kind
par"ManualLB"
.Conservez les mêmes valeurs pour les champs
loadBalancer.vips.controlPlaneVIP
etloadBalancer.vips.ingressVIP
.Configurez le paramètre
nodePort
utilisé pour le trafic HTTP envoyé à l'adresse IP virtuelle d'entrée.Obtenez la valeur HTTP
nodePort
actuelle:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep http2 -A 1
Remplacez
USER_CLUSTER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du cluster d'utilisateur.Ajoutez la valeur de la commande précédente au champ
loadBalancer.manualLB.ingressHTTPNodePort
, par exemple:loadBalancer: manualLB: ingressHTTPNodePort: 30243
Configurez la règle
nodePort
utilisée pour le trafic HTTPS envoyé à l'adresse IP virtuelle d'entrée:Obtenez la valeur HTTPS
nodePort
actuelle:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get svc istio-ingress -n gke-system -oyaml | grep https -A 1
Ajoutez la valeur de la commande précédente au champ
loadBalancer.manualLB.ingressHTTPSNodePort
, par exemple:loadBalancer: manualLB: ingressHTTPSNodePort: 30879
Configurez le paramètre
nodePort
pour le serveur d'API Kubernetes:Obtenez la valeur
nodePort
actuelle pour le serveur d'API Kubernetes:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep kube-apiserver-port -A 1
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du cluster admin.USER_CLUSTER_NAME
: nom du cluster d'utilisateur.
Ajoutez la valeur de la commande précédente au champ
loadBalancer.manualLB.controlPlaneNodePort
, par exemple:loadBalancer: manualLB: controlPlaneNodePort: 30968
Configurez le
nodePort
pour le serveur Konnectivity:Obtenez la valeur
nodePort
actuelle du serveur Konnectivity:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n USER_CLUSTER_NAME -oyaml | grep konnectivity-server-port -A 1
Ajoutez la valeur de la commande précédente au champ
loadBalancer.manualLB.konnectivityServerNodePort
, par exemple:loadBalancer: manualLB: konnectivityServerNodePort: 30563
Supprimez l'intégralité de la section
loadBalancer.f5BigIP
.Exécutez
gkectl diagnose cluster
et corrigez les problèmes détectés par la commande.gkectl diagnose cluster \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME
Mettez à jour le cluster d'utilisateur :
Exécutez la commande suivante pour migrer le cluster:
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
: chemin d'accès au fichier kubeconfig du cluster d'administrateurUSER_CLUSTER_CONFIG
: chemin d'accès au fichier de configuration du cluster d'utilisateur.
Mettre à jour le fichier de configuration du cluster d'administrateur
Apportez les modifications suivantes au fichier de configuration du cluster d'administrateur:
Remplacez
loadBalancer.kind
par"ManualLB"
.Conservez la même valeur pour le champ
loadBalancer.vips.controlPlaneVIP
.Vérifiez la valeur du champ
adminMaster.replicas
. Si la valeur est 3, le cluster d'administrateur est disponibilité élevée. Si la valeur est 1, le cluster d'administrateur n'est pas de haute disponibilité.Procédez comme suit uniquement pour les clusters d'administrateur standards:
Obtenez la valeur de
nodePort
pour le serveur d'API Kubernetes:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get svc kube-apiserver -n kube-system -oyaml | grep nodePort
Remplacez
ADMIN_CLUSTER_KUBECONFIG
par le chemin d'accès au fichier kubeconfig du cluster d'administrateur.Ajoutez la valeur de la commande précédente au champ
loadBalancer.manualLB.controlPlaneNodePort
, par exemple:loadBalancer: manualLB: controlPlaneNodePort: 30968
Exécutez la commande suivante pour voir s'il existe un module complémentaire
nodePort
:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ get deploy monitoring-operator -n kube-system -oyaml | grep admin-ingress-nodeport
Si la commande précédente génère une valeur, ajoutez-la au champ
loadBalancer.manualLB.addonsNodePort
, par exemple:loadBalancer: manualLB: addonsNodePort: 31405
Supprimez l'intégralité de la section
loadBalancer.f5BigIP
.Exécutez
gkectl diagnose cluster
et corrigez les problèmes détectés par la commande.gkectl diagnose cluster \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG
Mettez à jour le cluster d'administrateur :
Mettez à jour le cluster avec la commande suivante :
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
Remplacez les éléments suivants :
ADMIN_CLUSTER_KUBECONFIG
: chemin d'accès au fichier kubeconfig du cluster d'administrateurADMIN_CLUSTER_CONFIG
: chemin d'accès au fichier de configuration du cluster d'administrateur.
Vérifier que les anciennes ressources F5 existent toujours
Après avoir mis à jour vos clusters pour utiliser l'équilibrage de charge manuel, le trafic vers vos clusters n'est pas interrompu, car les ressources F5 existantes existent toujours, comme vous pouvez le voir en exécutant la commande suivante:
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
Remplacez CLUSTER_KUBECONFIG
par le chemin du fichier kubeconfig du cluster d'administrateur ou du cluster d'utilisateur.
Le résultat ressemble à ce qui suit :
Cluster d'administrateur:
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 d'utilisateur:
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
Vérifier votre équilibreur de charge
Après la migration, vous ne devriez plus avoir besoin de modifier les paramètres de votre équilibreur de charge, car vous avez conservé les mêmes adresses IP virtuelles et valeurs nodePort
. Les tableaux suivants décrivent les mappages des adresses IP virtuelles aux adresses IP des nœuds:nodePort
.
Cluster d'administrateur haute disponibilité
Trafic vers les nœuds du plan de contrôle
Google Distributed Cloud gère automatiquement l'équilibrage de charge du trafic du plan de contrôle pour les clusters d'administrateur haute disponibilité. Bien qu'il ne soit pas nécessaire de configurer un mappage dans l'équilibreur de charge, vous devez spécifier une adresse IP dans le champ loadBalancer.vips.controlPlaneVIP
.
Trafic vers les services dans les nœuds du module complémentaire
Si votre cluster d'administrateur avait une valeur pour addonsNodePort
, vous devriez voir un mappage avec les adresses IP et la valeur nodePort
pour le trafic vers les services des nœuds complémentaires:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Vous devez appliquer ce mappage pour tous les nœuds du cluster d'administrateur, à la fois les nœuds du plan de contrôle et les nœuds du module complémentaire.
Cluster d'administrateur standard
Trafic du plan de contrôle
L'exemple suivant montre le mappage avec l'adresse IP et la valeur nodePort
pour le nœud de plan de contrôle:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
Vous devez appliquer ce mappage pour tous les nœuds du cluster d'administrateur, à la fois le nœud du plan de contrôle et les nœuds du module complémentaire.
Trafic vers les services dans les nœuds du module complémentaire
Si votre cluster d'administrateur possédait une valeur pour addonsNodePort
, vous devriez obtenir le mappage suivant sur les adresses IP et les valeurs nodePort
pour les services exécutés dans des nœuds complémentaires:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
Vous devez appliquer ce mappage pour tous les nœuds du cluster d'administrateur, à la fois le nœud du plan de contrôle et les nœuds du module complémentaire.
Cluster d'utilisateur
Trafic du plan de contrôle
Vous trouverez ci-dessous le mappage sur les adresses IP et les valeurs nodePort
pour le trafic du plan de contrôle:
- (
controlPlaneVIP
:443
) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
) - (
controlPlaneVIP
:8132
) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort
)
Ce mappage doit s'appliquer à tous les nœuds du cluster admin, à la fois le cluster d'administrateur et les nœuds du plan de contrôle du cluster d'utilisateur.
Trafic du plan de données
L'exemple suivant illustre le mappage avec les adresses IP et les valeurs nodePort
pour le trafic du plan de données:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)