NSX ALB puede actuar como proveedor de equilibrador de carga externo para los clústeres de Kubernetes en una implementación de Tanzu Kubernetes Grid.
Para configurar la implementación del equilibrador de carga de NSX ALB para todos los clústeres:
Cree un archivo YAML de configuración del clúster de administración y agregue los siguientes campos al archivo:
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>
Para obtener información sobre cómo crear un archivo de configuración del clúster de administración, consulte Crear un archivo de configuración del clúster de administración.
Cree el clúster de administración mediante el comando tanzu management-cluster create
.
NSX ALB ahora está configurado como el equilibrador de carga para el clúster de administración y todos los clústeres de carga de trabajo creados por este clúster de administración.
De forma opcional, puede configurar algunas funciones avanzadas de equilibrio de carga de NSX ALB en Tanzu Kubernetes Grid.
Para configurar NSX ALB como equilibrador de carga solo en clústeres de carga de trabajo específicos:
Cree un archivo YAML de configuración del clúster de administración y agregue los siguientes campos al archivo:
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>
Para obtener información sobre cómo crear un archivo de configuración del clúster de administración, consulte Crear un archivo de configuración del clúster de administración.
Cree el clúster de administración mediante el comando tanzu management-cluster create
.
En el archivo YAML de configuración del clúster de carga de trabajo, agregue el siguiente campo:
AVI_LABELS: '{"enable-nsx-alb":"true"}'
Cree el clúster de carga de trabajo mediante el comando tanzu cluster create
.
NSX ALB ahora está configurado como equilibrador de carga solo para los clústeres de carga de trabajo que tengan el valor AVI_LABELS
correspondiente.
Esta función aprovecha la aplicación Avi Kubernetes Operator (AKO) que se implementa en los clústeres. Para obtener información, consulte Servicio de tipo Equilibrador de carga con IP preferida.
Asegúrese de que la dirección IP que especifique sea una dirección no asignada en el grupo de direcciones IP que está configurado en el controlador AVI.
Para configurar la dirección IP estática externa para el servicio del equilibrador de carga proporcionado por NSX ALB, agregue la dirección IP externa en el campo loadbalancerIP
en el tipo de equilibrador de carga del archivo de configuración del servicio, como se muestra en este ejemplo:
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
Una implementación de Tanzu Kubernetes Grid integrada con NSX ALB admite las API de puerta de enlace v1alpha1. Esta función aprovecha la aplicación AKO implementada en los clústeres. Para obtener más información sobre la compatibilidad de la API de puerta de enlace, consulte Puerta de enlace y clase de puerta de enlace.
Para configurar las puertas de enlace de API v1alpha1 para los servicios de equilibrador de carga proporcionados por NSX ALB, establezca la marca spec.extraConfigs.servicesAPI
en el objeto AKODeploymentConfig
en true
. A continuación se muestra un ejemplo:
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
Todas las funciones de NSX ALB que se pueden utilizar a través de AKO son compatibles con Tanzu Kubernetes Grid. Para utilizar una función, establezca el valor correspondiente en el objeto AKODeploymentConfig.spec.extraConfigs.<FEATURE-KNOB>
. Para obtener más información, consulte la Guía de implementación del operador de AVI Kubernetes.
NSX ALB como proveedor de servicios del equilibrador de carga se habilita automáticamente en el clúster de administración si NSX ALB está habilitado en la implementación de Tanzu Kubernetes Grid.