NSX ALB kann als externer Load Balancer-Anbieter für Ihre Kubernetes-Cluster in einer Tanzu Kubernetes Grid-Bereitstellung fungieren.
So konfigurieren Sie NSX ALB als Load Balancer-Implementierung für alle Cluster:
Erstellen Sie eine YAML-Datei für die Verwaltungsclusterkonfiguration und fügen Sie die folgenden Felder in der Datei hinzu:
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>
Weitere Informationen zum Erstellen einer Konfigurationsdatei für den Verwaltungscluster finden Sie unter Erstellen einer Konfigurationsdatei für den Verwaltungscluster.
Erstellen Sie den Verwaltungscluster mit dem Befehl tanzu management-cluster create
.
NSX ALB ist jetzt als Lastausgleichsdienst für den Verwaltungscluster und alle Arbeitslastcluster konfiguriert, die von diesem Verwaltungscluster erstellt werden.
Optional können Sie bestimmte erweiterte Lastausgleichsfunktionen von NSX ALB in Tanzu Kubernetes Grid konfigurieren.
So konfigurieren Sie NSX ALB nur auf bestimmten Arbeitslastclustern als Load Balancer:
Erstellen Sie eine YAML-Datei für die Verwaltungsclusterkonfiguration und fügen Sie die folgenden Felder in der Datei hinzu:
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>
Weitere Informationen zum Erstellen einer Konfigurationsdatei für den Verwaltungscluster finden Sie unter Erstellen einer Konfigurationsdatei für den Verwaltungscluster.
Erstellen Sie den Verwaltungscluster mit dem Befehl tanzu management-cluster create
.
Fügen Sie in der YAML-Datei der Konfiguration des Arbeitslastclusters das folgende Feld hinzu:
AVI_LABELS: '{"enable-nsx-alb":"true"}'
Erstellen Sie den Arbeitslastcluster mit dem Befehl tanzu cluster create
.
NSX ALB wird jetzt nur noch als Lastausgleichsdienst für die Arbeitslastcluster konfiguriert, die den entsprechenden AVI_LABELS
-Wert haben.
Diese Funktion nutzt die Avi Kubernetes Operator(AKO)-Anwendung, die in den Clustern bereitgestellt wird. Weitere Informationen finden Sie unter Dienst vom Typ Load Balancer mit bevorzugter IP.
Stellen Sie sicher, dass es sich bei der von Ihnen angegebenen IP-Adresse um eine nicht zugeteilte Adresse im IP-Pool handelt, der in Ihrem AVI-Controller konfiguriert ist.
Um eine externe statische IP-Adresse für den von NSX ALB bereitgestellten Lastausgleichsdienst zu konfigurieren, fügen Sie die externe IP-Adresse im Feld loadbalancerIP
der Konfigurationsdatei für den Diensttyp „Load Balancer“ hinzu, wie in diesem Beispiel ersichtlich:
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
Eine in NSX ALB integrierte Tanzu Kubernetes Grid-Bereitstellung unterstützt die Gateway-APIs v1alpha1. Diese Funktion nutzt die AKO-Anwendung, die in den Clustern bereitgestellt wird. Weitere Informationen zur Gateway-API-Unterstützung finden Sie unter Gateway and Gateway Class.
Um die v1alpha1-API-Gateways für die von NSX ALB bereitgestellten Lastausgleichsdienste zu konfigurieren, setzen Sie das Flag spec.extraConfigs.servicesAPI
im Objekt AKODeploymentConfig
auf true
. Im Folgenden finden Sie ein Beispiel:
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
Alle NSX ALB-Funktionen, die über AKO verfügbar sind, werden in Tanzu Kubernetes Grid unterstützt. Um eine Funktion zu verwenden, legen Sie den entsprechenden Wert im Objekt AKODeploymentConfig.spec.extraConfigs.<FEATURE-KNOB>
fest. Weitere Informationen finden Sie im Avi Kubernetes Operator-Bereitstellungshandbuch.
NSX ALB als Anbieter des Lastausgleichsdiensts wird automatisch im Verwaltungscluster aktiviert, wenn NSX ALB in Ihrer Tanzu Kubernetes Grid-Bereitstellung aktiviert ist.