NSX ALB は、Tanzu Kubernetes Grid 環境内の Kubernetes クラスタの外部ロード バランサ プロバイダとして機能できます。
すべてのクラスタの NSX ALB ロード バランサの実装を構成するには、次の手順を実行します。
管理クラスタ構成 YAML ファイルを作成し、ファイルに次のフィールドを追加します。
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>
管理クラスタ構成ファイルの作成方法については、「管理クラスタ構成ファイルの作成」を参照してください。
tanzu management-cluster create
コマンドを使用して管理クラスタを作成します。
NSX ALB は、管理クラスタと、この管理クラスタによって作成されたすべてのワークロード クラスタのロード バランサとして構成されるようになりました。
必要に応じて、Tanzu Kubernetes Grid で NSX ALB の特定の高度なロード バランシング機能を構成できます。
NSX ALB をロード バランサとして特定のワークロード クラスタでのみ構成するには、次の手順を実行します。
管理クラスタ構成 YAML ファイルを作成し、ファイルに次のフィールドを追加します。
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>
管理クラスタ構成ファイルの作成方法については、「管理クラスタ構成ファイルの作成」を参照してください。
tanzu management-cluster create
コマンドを使用して管理クラスタを作成します。
ワークロード クラスタ構成 YAML ファイルに、次のフィールドを追加します。
AVI_LABELS: '{"enable-nsx-alb":"true"}'
tanzu cluster create
コマンドを使用してワークロード クラスタを作成します。
NSX ALB は、対応する AVI_LABELS
値を持つワークロード クラスタのロード バランサとしてのみ構成されるようになりました。
この機能は、クラスタに展開されている Avi Kubernetes Operator (AKO) アプリケーションを利用します。詳細については、「優先 IP アドレスを使用したロード バランサ タイプのサービス」を参照してください。
指定する IP アドレスが、Avi Controller で構成されている IP アドレス プール内の未割り当てアドレスであることを確認します。
NSX ALB によって提供されるロード バランサ サービスの外部固定 IP アドレスを構成するには、次の例に示すように、ロード バランサ タイプのサービス構成ファイルの loadbalancerIP
フィールドに外部 IP アドレスを追加します。
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
NSX ALB と統合された Tanzu Kubernetes Grid 環境では、ゲートウェイ API v1alpha1 がサポートされます。この機能は、クラスタに展開された AKO アプリケーションを利用します。ゲートウェイ API のサポートの詳細については、「ゲートウェイおよびゲートウェイ クラス」を参照してください。
NSX ALB によって提供されるロード バランサ サービスの v1alpha1 API ゲートウェイを構成するには、AKODeploymentConfig
オブジェクトの spec.extraConfigs.servicesAPI
をフラグ true
に設定します。次に例を示します。
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
AKO を介して使用可能なすべての NSX ALB 機能は、Tanzu Kubernetes Grid でサポートされています。機能を使用するには、AKODeploymentConfig.spec.extraConfigs.<FEATURE-KNOB>
オブジェクトの対応する値を設定します。詳細については、『Avi Kubernetes Operator デプロイ ガイド』を参照してください。
Tanzu Kubernetes Grid 環境で NSX ALB が有効になっている場合、管理クラスタでは、ロード バランサ サービス プロバイダとして NSX ALB が自動的に有効になります。