VXLAN 터널 엔드포인트(VTEP) 통합

VXLAN 터널 엔드포인트(VTEP) 통합 (beta)

VTEP 통합을 사용하면 서드파티 VTEP 장치가 VXLAN을 통해 Cilium이 관리하는 파드와 직접 트래픽을 주고받을 수 있어요. 예를 들어 BIG-IP 같은 외부 로드 밸런서가 VXLAN으로 Cilium 파드에 트래픽을 분산할 수 있습니다.

출처: VXLAN Tunnel Endpoint (VTEP) Integration (beta)

본문

Note

이 기능은 베타 기능입니다. 문제가 발생하면 피드백을 남기고 GitHub 이슈를 등록해 주세요.

VTEP 통합은 서드파티 VTEP 장치가 VXLAN을 이용해 Cilium이 관리하는 파드로 트래픽을 보내고 받을 수 있게 해줘요. 예를 들어 BIG-IP 같은 외부 로드 밸런서가 VXLAN을 사용해 Cilium 파드에 트래픽을 로드 밸런싱할 수 있습니다.

이 문서에서는 VTEP 지원을 활성화하고 Cilium에 VTEP 엔드포인트 IP, CIDR, MAC 주소를 구성하는 방법을 설명해요.

Note

이 가이드는 Cilium이 Kubernetes 클러스터에 올바르게 설치되어 있다고 가정합니다. 자세한 내용은 Cilium 빠른 설치를 참고하세요. 확실하지 않다면 cilium status를 실행해 Cilium이 정상 작동 중인지 확인하세요. 또한 VTEP 장치가 VTEP 엔드포인트 IP, VTEP CIDR, VTEP MAC 주소(VTEP MAC)로 구성되어 있다고 가정해요. VXLAN 네트워크 식별자(VNI)는 반드시 VNI 2로 구성해야 하는데, 이는 VTEP에서 오는 트래픽을 world identity로 나타냅니다. 자세한 내용은 특수 식별자(Special Identities)를 참고하세요.

VXLAN 터널 엔드포인트(VTEP) 통합 활성화

이 기능은 기본적으로 비활성화되어 있어요. VTEP 통합을 활성화할 때는 각 VTEP 장치의 IP, CIDR 범위, MAC을 구성의 일부로 반드시 지정해야 합니다.

Helm

helm install로 Cilium을 설치했다면 다음 명령으로 VTEP 지원을 활성화할 수 있어요.

Helm Repository

helm upgrade cilium cilium/cilium --version 1.20.2 \
   --namespace kube-system \
   --reuse-values \
   --set vtep.enabled="true" \
   --set vtep.endpoint="10.169.72.236 \
   --set 10.169.72.238" \
   --set vtep.cidr="10.1.1.0/24 \
   --set 10.1.2.0/24" \
   --set vtep.mask="255.255.255.0" \
   --set vtep.mac="82:36:4c:98:2e:56 \
   --set 82:36:4c:98:2e:58"

OCI Registry

helm upgrade cilium oci://quay.io/cilium/charts/cilium 1.20.2 \
   --namespace kube-system \
   --reuse-values \
   --set vtep.enabled="true" \
   --set vtep.endpoint="10.169.72.236 \
   --set 10.169.72.238" \
   --set vtep.cidr="10.1.1.0/24 \
   --set 10.1.2.0/24" \
   --set vtep.mask="255.255.255.0" \
   --set vtep.mac="82:36:4c:98:2e:56 \
   --set 82:36:4c:98:2e:58"

ConfigMap

cilium-config ConfigMap에 다음 옵션을 설정하면 VTEP 지원을 활성화할 수 있어요:

enable-vtep:   "true"
vtep-endpoint: "10.169.72.236    10.169.72.238"
vtep-cidr:     "10.1.1.0/24   10.1.2.0/24"
vtep-mask:     "255.255.255.0"
vtep-mac:      "82:36:4c:98:2e:56 82:36:4c:98:2e:58"

Cilium daemonset을 재시작하세요:

kubectl -n $CILIUM_NAMESPACE rollout restart ds/cilium

VXLAN 터널 엔드포인트(VTEP) 통합 테스트하기

Cilium 노드와 네트워크 연결이 가능한 Linux VM을 시작하세요. Linux VM을 구성하려면 root 사용자이거나 아래 명령을 sudo로 실행해야 해요.

 Test VTEP Integration

 Node IP: 10.169.72.233
+--------------------------+            VM IP: 10.169.72.236
|                          |            +------------------+
| CiliumNode               |            |  Linux VM        |
|                          |            |                  |
|  +---------+             |            |                  |
|  | busybox |             |            |                  |
|  |         |           ens192<------>ens192              |
|  +--eth0---+             |            |                  |
|      |                   |            +-----vxlan2-------+
|      |                   |
|   lxcxxx                 |
|      |                   |
+------+-----cilium_vxlan--+
# Create a vxlan device and set the MAC address.
ip link add vxlan2 type vxlan id 2 dstport 8472 local 10.169.72.236 dev ens192
ip link set dev vxlan2 address 82:36:4c:98:2e:56
ip link set vxlan2 up
# Configure the VTEP with IP 10.1.1.236 to handle CIDR 10.1.1.0/24.
ip addr add 10.1.1.236/24 dev vxlan2
# Assume Cilium podCIDR network is 10.0.0.0/16, add route to 10.0.0.0/16
ip route add 10.0.0.0/16 dev vxlan2  proto kernel  scope link  src 10.1.1.236
# Allow Linux VM to send ARP broadcast request to Cilium node for busybox pod
# ARP resolution through vxlan2 device
bridge fdb append 00:00:00:00:00:00 dst 10.169.72.233 dev vxlan2

여러 개의 VTEP를 관리한다면 각 인스턴스에 대해 위 과정을 반복하세요. VTEP가 구성되면 VTEP에 설정한 MAC, IP, CIDR 범위를 사용하도록 Cilium을 구성할 수 있어요. VXLAN 터널 엔드포인트(VTEP) 통합 활성화 지침을 따르세요.

VTEP 네트워크 연결을 테스트하려면:

# ping Cilium-managed busybox pod IP 10.0.1.1 for example from Linux VM
ping 10.0.1.1

제한 사항

  • 이 기능은 Cilium이 관리하는 파드와 VTEP 사이의 ipsec 암호화에서는 동작하지 않아요.

더 알아보기 (Learn more)