두 클러스터 간 대상 그룹 공유하기
두 클러스터 간 대상 그룹 공유하기
다음 예시는 하나의 대상 그룹을 두 클러스터 간에 공유합니다. 첫 번째 클러스터는 Ingress를 통해 Application Load Balancer를 소유하고, 두 번째 클러스터는 수동으로 만든 TargetGroupBinding을 통해 공유 대상 그룹에 합류합니다. 시작하기 전에 Configure multi-cluster target groups를 검토해 MultiCluster 지원이 어떻게 작동하고 활성화하는지 이해하세요.
출처: 문서
본문
클러스터 1 — Ingress를 통해 로드 밸런서 소유
애플리케이션(예: NodePort Service가 있는 Deployment)을 배포한 다음 multi-cluster 어노테이션이 있는 IngressClass와 Ingress를 만듭니다.
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: alb-mc
spec:
controller: eks.amazonaws.com/alb
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: echoserver
namespace: echoserver
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
alb.ingress.kubernetes.io/multi-cluster-target-group: "true"
spec:
ingressClassName: alb-mc
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: echoserver
port:
number: 80
컨트롤러는 로드 밸런서를 프로비저닝하고 spec.multiClusterTargetGroup: true가 있는 TargetGroupBinding을 생성합니다. 생성된 TargetGroupBinding과 Service에서 다음 값을 기록하세요 — 두 번째 클러스터는 세 값 모두가 필요해요.
targetGroupARN- Service
nodePort spec.networking.ingress[].from[].securityGroup.groupID의 로드 밸런서 보안 그룹 ID
클러스터 2 — TargetGroupBinding을 통해 공유 대상 그룹에 합류
동일한 애플리케이션을 배포하고 Service를 클러스터 1의 nodePort에 고정한 다음, 클러스터 1의 대상 그룹 ARN과 보안 그룹 ID를 참조하는 TargetGroupBinding을 만듭니다.
apiVersion: eks.amazonaws.com/v1
kind: TargetGroupBinding
metadata:
name: mc-echoserver
namespace: echoserver
spec:
multiClusterTargetGroup: true
serviceRef:
name: echoserver
port: 80
targetGroupARN:
targetType: instance
networking:
ingress:
- from:
- securityGroup:
groupID:
ports:
- port:
protocol: TCP
두 바인딩 모두에서 MultiCluster 지원이 활성화되면 각 클러스터는 자신의 대상만 등록·등록 해제합니다. 두 클러스터의 노드는 단일 공유 대상 그룹에서 정상 상태를 유지하며, 로드 밸런서는 모든 노드에 트래픽을 분산합니다.