본문 바로가기

VMware/AVI

(DK) AVI GATEWAYCLASS with Tanzu

728x90

K8S에서 LoadBalancer 구성시 동일한 IP로 여러개의 Port를 지정하기 위해 사용

Gateway 연계

구성을 하기 위해서는 클러스터에서 servicesAPI: true 를 True로 변경 필요

AviInfrasetting을 구성

## AVIInfraSetting

kubectl apply -f - << EOF
apiVersion: ako.vmware.com/v1alpha1
kind: AviInfraSetting
metadata:
  name: other-infra
spec:
  seGroup:
    name: Default-Group
  network:
    vipNetworks:
      - networkName: pg-dk-10.253.107.x
        cidr: 10.253.107.0/24
    enableRhi: false
  l7Settings:
    shardSize: MEDIUM
EOF

GATEWAYCLASS 생성

cat <<EOF | kubectl apply -f -
apiVersion: networking.x-k8s.io/v1alpha1
kind: GatewayClass
metadata:
  name: critical-gwc
spec:
  controller: ako.vmware.com/avi-lb
  parametersRef:
    group: ako.vmware.com
    kind: AviInfraSetting
    name: other-infra
EOF

GATEWAY 생성 

※ 여러개의 포트가 필요 할 경우 포트를 늘리면 됨

cat <<EOF | kubectl apply -f -
apiVersion: networking.x-k8s.io/v1alpha1
kind: Gateway
metadata:
  name: avi-alb-gw
  namespace: default
spec: 
  gatewayClassName: critical-gwc    
  listeners: 
  - protocol: TCP 
    port: 8080 
    routes: 
      selector: 
       matchLabels: 
        ako.vmware.com/gateway-namespace: default 
        ako.vmware.com/gateway-name: avi-alb-gw
      group: v1 
      kind: Service
  - protocol: TCP 
    port: 80 
    routes: 
      selector: 
       matchLabels: 
        ako.vmware.com/gateway-namespace: default 
        ako.vmware.com/gateway-name: avi-alb-gw
      group: v1 
      kind: Service
EOF

만약 LB의 IP를 지정 하고 싶다면 IP를 지정

cat <<EOF | kubectl apply -f -
apiVersion: networking.x-k8s.io/v1alpha1
kind: Gateway
metadata:
  name: avi-alb-gw
  namespace: default
spec: 
  gatewayClassName: critical-gwc
  addresses:
  - type: IPAddress
    value: 10.253.107.203
  listeners: 
  - protocol: TCP 
    port: 8080 
    routes: 
      selector: 
       matchLabels: 
        ako.vmware.com/gateway-namespace: default 
        ako.vmware.com/gateway-name: avi-alb-gw
      group: v1 
      kind: Service
  - protocol: TCP 
    port: 80 
    routes: 
      selector: 
       matchLabels: 
        ako.vmware.com/gateway-namespace: default 
        ako.vmware.com/gateway-name: avi-alb-gw
      group: v1 
      kind: Service
EOF

테스트

kubectl create deploy hello --image=paulbouwer/hello-kubernetes:1.7 --replicas=3 --port=8080
kubectl expose deployment hello --type=LoadBalancer --port=80 --target-port=8080 -l 'ako.vmware.com/gateway-namespace=default','ako.vmware.com/gateway-name=avi-alb-gw'

반응형

'VMware > AVI' 카테고리의 다른 글

(DK) AVI BGP with Tanzu  (0) 2022.04.08
(DK) AVI Autosaclling with Tanzu  (0) 2022.04.08
(DK) AVIINFRASETTING with Tanzu  (0) 2022.04.08