NSX ALB peut agir comme fournisseur d'équilibrage de charge externe pour vos clusters Kubernetes dans un déploiement Tanzu Kubernetes Grid.
Pour configurer l'implémentation de l'équilibrage de charge NSX ALB pour tous les clusters :
Créez un fichier YAML de configuration de cluster de gestion et ajoutez les champs suivants dans le fichier :
AVI_ENABLE: true
AVI_CONTROLLER: <avi controller IP address or FQDN>
AVI_USERNAME: <avi admin username>
AVI_PASSWORD: <avi admin password>
AVI_CA_DATA_B64: <base64 encoded certificate>
AVI_CLOUD_NAME: <cloud you configured to deploy virtual services>
AVI_SERVICE_ENGINE_GROUP: <SEG you configured to host virtual services>
AVI_DATA_NETWORK: <VIP Network you want to use for your load balancer external IP>
AVI_DATA_NETWORK_CIDR: <above VIP Network's CIDR>
#### only for NSX-T cloud ####
AVI_NSXT_T1LR: <NSX-T Tier 1 path used for NSX Advanced Loader Balancer backend network>
Pour plus d'informations sur la création d'un fichier de configuration de cluster de gestion, reportez-vous à la section Créer un fichier de configuration de cluster de gestion.
Créez le cluster de gestion au moyen de la commande tanzu management-cluster create
.
NSX ALB est désormais configuré comme équilibrage de charge pour le cluster de gestion et tous les clusters de charge de travail créés par ce cluster de gestion.
Vous pouvez éventuellement configurer certaines fonctionnalités d'équilibrage de charge avancées de NSX ALB dans Tanzu Kubernetes Grid.
Pour configurer NSX ALB en tant qu'équilibrage de charge uniquement sur des clusters de charge de travail spécifiques :
Créez un fichier YAML de configuration de cluster de gestion et ajoutez les champs suivants dans le fichier :
AVI_ENABLE: true
AVI_LABELS: '{"enable-nsx-alb":"true"}'
AVI_CONTROLLER: <avi controller IP address or FQDN>
AVI_USERNAME: <avi admin username>
AVI_PASSWORD: <avi admin password>
AVI_CA_DATA_B64: <base64 encoded certificate>
AVI_CLOUD_NAME: <cloud you configured to deploy virtual services>
AVI_SERVICE_ENGINE_GROUP: <SEG you configured to host virtual services>
AVI_DATA_NETWORK: <VIP Network you want to use for your load balancer external IP>
AVI_DATA_NETWORK_CIDR: <above VIP Network's CIDR>
#### only for NSX-T cloud ####
AVI_NSXT_T1LR: <NSX-T Tier 1 path used for NSX Advanced Loader Balancer backend network>
Pour plus d'informations sur la création d'un fichier de configuration de cluster de gestion, reportez-vous à la section Créer un fichier de configuration de cluster de gestion.
Créez le cluster de gestion au moyen de la commande tanzu management-cluster create
.
Dans le fichier YAML de configuration du cluster de charge de travail, ajoutez le champ suivant :
AVI_LABELS: '{"enable-nsx-alb":"true"}'
Créez le cluster de charge de travail au moyen de la commande tanzu cluster create
.
NSX ALB est désormais configuré comme équilibrage de charge uniquement pour les clusters de charge de travail avec la variable AVI_LABELS
correspondante.
Cette fonctionnalité exploite l'application Avi Kubernetes Operator (AKO) qui est déployée dans les clusters. Pour plus d'informations, reportez-vous à la section Service de type équilibrage de charge avec l'adresse IP préférée.
Assurez-vous que l'adresse IP que vous spécifiez est une adresse non allouée dans le pool d'adresses IP configuré dans votre contrôleur AVI.
Pour configurer l'adresse IP statique externe pour le service d'équilibrage de charge fourni par NSX ALB, ajoutez l'adresse IP externe dans le champ loadbalancerIP
dans le type d'équilibrage de charge du fichier de configuration de service, comme indiqué dans cet exemple :
apiVersion: v1
kind: Service
metadata:
name: corgi-test
spec:
type: LoadBalancer
selector:
corgi: test
ports:
- nodePort: 30008
port: 80
targetPort: 80
loadBalancerIP: 1.1.1.1
Un déploiement Tanzu Kubernetes Grid intégré à NSX ALB prend en charge les API de passerelle v1alpha1. Cette fonctionnalité exploite l'application AKO déployée dans les clusters. Pour plus d'informations sur la prise en charge de l'API de passerelle, reportez-vous à la section Passerelle et classe de passerelle.
Pour configurer les passerelles d'API v1alpha1 pour les services d'équilibrage de charge fournis par NSX ALB, définissez l'indicateur spec.extraConfigs.servicesAPI
dans l'objet AKODeploymentConfig
sur true
. Vous en trouverez un exemple ci-dessous :
apiVersion: ako.vmware.com/v1alpha1
kind: AviInfraSetting
metadata:
name: sample-infrasetting
spec:
seGroup:
name: Default-Group
---
apiVersion: networking.x-k8s.io/v1alpha1
kind: GatewayClass
metadata:
name: sample-gateway-class
spec:
controller: ako.vmware.com/avi-lb
parametersRef:
group: ako.vmware.com
kind: AviInfraSetting
name: sample-infrasetting
---
kind: Gateway
apiVersion: networking.x-k8s.io/v1alpha1
metadata:
name: sample-gateway
spec:
gatewayClassName: sample-gateway-class
listeners:
- protocol: TCP
port: 80
routes:
selector:
matchLabels:
ako.vmware.com/gateway-namespace: default
ako.vmware.com/gateway-name: sample-gateway
group: v1
kind: Service
- protocol: TCP
port: 81
routes:
selector:
matchLabels:
ako.vmware.com/gateway-namespace: default
ako.vmware.com/gateway-name: sample-gateway
group: v1
kind: Service
---
apiVersion: v1
kind: Service
metadata:
name: coffee-svc
labels:
app: coffee
ako.vmware.com/gateway-name: sample-gateway
ako.vmware.com/gateway-namespace: default
spec:
ports:
- port: 81
targetPort: 80
protocol: TCP
selector:
app: coffee
type: NodePort # <== service type should be aligned with AKODeploymentConfig.spec.extraConfigs.ingress.serviceType, NodePort is the default value.
---
apiVersion: v1
kind: Service
metadata:
name: tea-svc
labels:
app: tea
ako.vmware.com/gateway-name: sample-gateway
ako.vmware.com/gateway-namespace: default
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: tea
type: NodePort # <== service type should be aligned with AKODeploymentConfig.spec.extraConfigs.ingress.serviceType, NodePort is the default value.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-coffee
spec:
selector:
matchLabels:
app: coffee
replicas: 1
template:
metadata:
labels:
app: coffee
spec:
containers:
- name: nginx
image: harbor-repo.vmware.com/dockerhub-proxy-cache/library/nginx
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-tea
spec:
selector:
matchLabels:
app: tea
replicas: 1
template:
metadata:
labels:
app: tea
spec:
containers:
- name: nginx
image: harbor-repo.vmware.com/dockerhub-proxy-cache/library/nginx
ports:
- containerPort: 80
Toutes les fonctionnalités de NSX ALB qui peuvent être disponibles via AKO sont prises en charge dans Tanzu Kubernetes Grid. Pour utiliser une fonctionnalité, définissez la valeur correspondante dans l'objet AKODeploymentConfig.spec.extraConfigs.<FEATURE-KNOB>
. Pour plus d'informations, reportez-vous à la section Guide de déploiement d'Avi Kubernetes Operator.
NSX ALB en tant que fournisseur de services d'équilibrage de charge est activé automatiquement dans le cluster de gestion si NSX ALB est activé dans votre déploiement Tanzu Kubernetes Grid.