Pour utiliser NSX Advanced Load Balancer en tant que contrôleur d'entrée dans le cluster Kubernetes, vous devez disposer de la version NSX ALB Enterprise. Vous pouvez également utiliser Contour comme contrôleur d’entrée dans vos clusters Tanzu Kubernetes Grid.
Lorsqu'il est intégré via AKO dans Tanzu Kubernetes Grid, NSX ALB prend en charge trois modes d'entrée : NodePort, ClusterIP et NodePortLocal. Choisissez un type en fonction de vos besoins.
Lorsque vous choisissez d'utiliser le mode NodePort pour l'entrée NSX ALB, le service principal d'entrée doit être en mode NodePort. Dans ce type, le trafic réseau est routé du client vers le moteur de service NSX ALB, puis vers les nœuds de cluster, avant qu'il n'atteigne les espaces. Le moteur de service NSX ALB achemine le trafic vers les nœuds et kube-proxy
permet d'acheminer le trafic des nœuds vers les espaces cibles.
Le diagramme suivant décrit comment le trafic réseau est routé en mode NodePort
:
Le mode NodePort prend en charge le partage d'un moteur de service NSX ALB entre différents clusters. Cependant, ce type de service peut exposer un port dans le cluster, car il nécessite l'utilisation du service principal en mode NodePort. Il nécessite également un tronçon supplémentaire pour kube-proxy
afin d'acheminer le trafic du nœud vers l'espace.
Pour configurer le mode d'entrée NodePort sur le cluster de gestion :
Créez un objet CR AKODeploymentConfig
comme suit :
apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
kind: AKODeploymentConfig
metadata:
name: install-ako-for-l7-node-port
spec:
adminCredentialRef:
name: avi-controller-credentials
namespace: tkg-system-networking
certificateAuthorityRef:
name: avi-controller-ca
namespace: tkg-system-networking
controller: 10.191.192.137
cloudName: Default-Cloud
serviceEngineGroup: Default-Group
clusterSelector:
matchLabels:
nsx-alb-node-port-l7: "true"
controlPlaneNetwork:
cidr: 10.191.192.0/20
name: VM Network
dataNetwork:
cidr: 10.191.192.0/20
name: VM Network
extraConfigs:
cniPlugin: antrea
disableStaticRouteSync: true
ingress:
defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
disableIngressClass: false # required
serviceType: NodePort # required
shardVSSize: SMALL
nodeNetworkList: # required
- networkName: VM Network
cidrs:
- 10.191.192.0/20
Appliquez les modifications sur le cluster de gestion :
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port.yaml
Pour activer le mode d'entrée NodePort sur les clusters de charge de travail, créez un fichier YAML de configuration de cluster de charge de travail et ajoutez le champ suivant :
AVI_LABELS: '{"nsx-alb-node-port-l7":"true"}'
Déployez le cluster de charge de travail au moyen de la commande tanzu cluster create
.
Pour plus d'informations sur le déploiement de clusters de charge de travail sur vSphere, reportez-vous à la section Créer des clusters de charge de travail.
Le fournisseur de services d'entrée NSX ALB est désormais configuré pour utiliser le mode NodePort sur les clusters de charge de travail dont les variables AVI_LABELS
correspondent au sélecteur de cluster dans l'objet AKODeploymentConfig install-ako-l7-node-port
.
En mode ClusterIP, le trafic réseau est acheminé du client vers le moteur de service NSX ALB, puis vers les espaces. Ce mode nécessite ClusterIP comme type de service de serveur principal d'entrée. Le moteur de service NSX ALB achemine le trafic vers les espaces en exploitant les routes statiques.
Le diagramme suivant décrit comment le trafic réseau est routé en mode ClusterIP
:
Le mode ClusterIP simplifie le trafic réseau en l'acheminant directement du moteur de service vers les espaces. Ce mode empêche également l’exposition des ports dans un cluster. Cependant, dans ce mode, les moteurs de service ne peuvent pas être partagés entre les clusters, car un moteur de service doit être attaché à un cluster.
Pour activer cette fonctionnalité :
Créez un objet CR AKODeploymentConfig
comme suit :
apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
kind: AKODeploymentConfig
metadata:
name: install-ako-for-l7-cluster-ip
spec:
adminCredentialRef:
name: avi-controller-credentials
namespace: tkg-system-networking
certificateAuthorityRef:
name: avi-controller-ca
namespace: tkg-system-networking
controller: 10.191.192.137
cloudName: Default-Cloud
serviceEngineGroup: SEG-2 # must be unique, can only be used for one cluster
clusterSelector:
matchLabels:
nsx-alb-cluster-ip-l7: "true"
controlPlaneNetwork:
cidr: 10.191.192.0/20
name: VM Network
dataNetwork:
cidr: 10.191.192.0/20
name: VM Network
extraConfigs:
cniPlugin: antrea
disableStaticRouteSync: false # required
ingress:
defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
disableIngressClass: false # required
serviceType: ClusterIP # required
shardVSSize: SMALL
nodeNetworkList: # required
- networkName: VM Network
cidrs:
- 10.191.192.0/20
Appliquez les modifications sur le cluster de gestion :
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-cluster-ip.yaml
Pour activer le mode d'entrée ClusterIP sur les clusters de charge de travail, créez un fichier YAML de configuration de cluster de charge de travail et ajoutez le champ suivant :
AVI_LABELS: '{"nsx-alb-cluster-ip-l7":"true"}'
Déployez le cluster de charge de travail au moyen de la commande tanzu cluster create
.
Pour plus d'informations sur le déploiement de clusters de charge de travail sur vSphere, reportez-vous à la section Créer des clusters de charge de travail.
Le fournisseur de services d'entrée NSX ALB est désormais configuré pour utiliser le mode ClusterIP sur les clusters de charge de travail dont les variables AVI_LABELS
correspondent au sélecteur de cluster dans l'objet AKODeploymentConfig install-ako-l7-cluster-ip
.
Pour activer le mode d'entrée ClusterIP sur d'autres clusters de charge de travail, vous devez créer un moteur de service dans le contrôleur Avi, puis créer un objet AKODeploymentConfig
spécifiant le nom du nouveau moteur de service avant d'appliquer le fichier sur le cluster de gestion.
Si vous utilisez Antrea comme CNI, vous pouvez activer le mode d'entrée NodePortLocal sur ALB NSX. Il exploite la fonctionnalité NodePortLocal d'Antrea pour acheminer directement le trafic du moteur de service vers l'espace. Dans ce mode, le trafic réseau est routé du client vers le moteur de service NSX ALB, puis vers les espaces. Ce mode nécessite ClusterIP comme type de serveur principal d'entrée. En outre, la variable de configuration ANTREA_NODEPORTLOCAL
doit être définie sur true
dans Tanzu Kubernetes Grid. Pour plus d'informations sur la fonctionnalité NodePortLocal dans Antrea, reportez-vous à la section NodePortLocal (NPL) dans la documentation d'Antrea.
Le diagramme suivant décrit comment le trafic réseau est routé en mode NodePortLocal
:
Le mode NodePortLocal
simplifie le trafic réseau en l'acheminant directement du moteur de service vers les espaces. Ce mode prend en charge les moteurs de services partagés pour les clusters et empêche l'exposition des ports d'un cluster.
Pour configurer le mode d’entrée NodePortLocal sur un cluster de gestion existant :
Créez un objet CR AKODeploymentConfig
comme suit :
apiVersion: networking.tkg.tanzu.vmware.com/v1alpha1
kind: AKODeploymentConfig
metadata:
name: install-ako-for-l7-node-port-local
spec:
adminCredentialRef:
name: avi-controller-credentials
namespace: tkg-system-networking
certificateAuthorityRef:
name: avi-controller-ca
namespace: tkg-system-networking
controller: 10.191.192.137
cloudName: Default-Cloud
serviceEngineGroup: Default-Group
clusterSelector:
matchLabels:
nsx-alb-node-port-local-l7: "true"
controlPlaneNetwork:
cidr: 10.191.192.0/20
name: VM Network
dataNetwork:
cidr: 10.191.192.0/20
name: VM Network
extraConfigs:
cniPlugin: antrea
disableStaticRouteSync: true
ingress:
defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
disableIngressClass: false # required
serviceType: NodePortLocal # required
shardVSSize: SMALL
nodeNetworkList: # required
- networkName: VM Network
cidrs:
- 10.191.192.0/20
Appliquez les modifications sur le cluster de gestion :
kubectl --context=MGMT-CLUSTER-CONTEXT apply -f install-ako-for-l7-node-port-local.yaml
Pour activer le mode d'entrée NodePortLocal sur les clusters de charge de travail, créez un fichier YAML de configuration de cluster de charge de travail et ajoutez le champ suivant :
AVI_LABELS: '{"nsx-alb-node-port-local-l7":"true"}'
ANTREA_NODEPORTLOCAL: "true"
Déployez le cluster de charge de travail au moyen de la commande tanzu cluster create
.
Le fournisseur de services d'entrée NSX ALB est désormais configuré pour utiliser le mode NodePortLocal sur les clusters de charge de travail dont les variables AVI_LABELS
correspondent au sélecteur de cluster dans l'objet AKODeploymentConfig install-ako-l7-node-port-local
.
Seul le mode d'entrée NodePort est pris en charge dans le cluster de gestion si vous utilisez NSX ALB comme fournisseur d'adresses IP virtuelles du point de terminaison du cluster. Si vous n'utilisez pas NSX ALB comme fournisseur d'adresses IP virtuelles de point de terminaison du cluster, les trois modes d'entrée sont pris en charge.
Pour activer l’entrée L7 dans le cluster de gestion :
Modifiez le fichier AKODeploymentConfig
dans le cluster de gestion :
kubectl --context=MGMT-CLUSTER-CONTEXT edit adc install-ako-for-management-cluster
Dans le fichier qui s'ouvre, modifiez le champ spec.extraConfigs.ingress
comme indiqué dans l'exemple suivant :
extraConfigs:
cniPlugin: antrea
disableStaticRouteSync: true
ingress:
defaultIngressController: true # optional, if set to false, you need to specify ingress class in your ingress object
disableIngressClass: false # required
serviceType: NodePort # required
shardVSSize: SMALL
nodeNetworkList: # required
- networkName: VM Network
cidrs:
- 10.191.192.0/20