containerlab이 이제 network 환경 구성을 도와주는 도구인것 같다.
BGP 통신을 테스트 할 수 있는 환경을 구성해서 테스트 해보려고 하는데 mac 사용자들에게는 강추하는 orbstack을 사용하려고 한다.
virtual box를 사용해서 더 쉽게 테스트 환경을 만들 수도 있지만.. 노트북의 성능 문제로 virtualbox를 2개 이상 실행하면 컴퓨터가 너무 느려지는 저같은 분들은 이렇게 테스트를 진행해보는걸 추천합니다.
linux VM 생성하기
orbstack을 사용하면 컨테이너 생성 뿐만 아니라 빠르게 vm 생성도 가능하다.
ubuntu vm을 생성한다.
orb create ubuntu linux
생성이 완료되었는지 확인해보겠다.
orb list
orbstack을 사용하는 리눅스 커널에선 TCP_MD5SIG 기능을 지원하지 않고 있어서 테스트시 md5password 설정한것을 제외해야 합니다. 참고하세요.
지원하는커널인지 확인방법
# /boot/config-$(uname -r) 여기 파일이 있는 경우
grep "CONFIG_TCP_MD5SIG" /boot/config-$(uname -r)
# 혹은
zgzip "CONFIG_TCP_MD5SIG" /proc/config.gz
위의 명령어 실행 결과 CONFIG_TCP_MD5SIG=y 이면됩니다.
containerlab 설치하기
위에서 생성한 vm에 접속한다.
ssh orb
여기서 이제 다음과 같이 containerlab을 설치한다.
# (Docker+clab 한 번에) 권장
curl -sL https://containerlab.dev/setup | sudo -E bash -s "all"
# 또는 containerlab만
bash -c "$(curl -sL https://get.containerlab.dev)"
clab version
cilium 관련 설치하기
이제 테스트를 위한 쿠버네티스 및 cilium관련 도구들도 설치한다.
# docker (vm내부에는 docker가 없으니 설치해 줍니다.)
sudo apt update
sudo apt install -y docker.io make
sudo usermod -aG docker $USER
newgrp docker
# kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# helm
sudo apt-get install apt-transport-https gpg --yes
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
helm repo add cilium https://helm.cilium.io/
helm repo update
# kind
curl -Lo kind https://kind.sigs.k8s.io/dl/$(curl -Ls https://api.github.com/repos/kubernetes-sigs/kind/releases/latest | grep -Po '"tag_name": "\K.*?(?=")')/kind-linux-$(uname -m | sed 's/aarch64/arm64/;s/x86_64/amd64/')
chmod +x kind && sudo mv kind /usr/local/bin/
# cilium CLI
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
CLI_ARCH=amd64; [ "$(uname -m)" = "aarch64" ] && CLI_ARCH=arm64
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin && rm cilium-linux-*.tar.gz*
테스트 환경 구성하기
cilium github에 가면 다양한 테스트 환경 구성을 위해 제공하는 파일들이 있다.
이 환경을 사용해보도록 하자.
git clone https://github.com/cilium/cilium.git
cd cilium/contrib/containerlab/bgpv2/
이 폴더 아래에서는 bgpv2테스트를 할수 있는데 아무거나 들어가서 환경 구성을 완료해보겠습니다.
cd auto-discovery/default-gateway/service
make deploy
이렇게 하면 orbstack vm에 kind와 containerlab을 사용하여 BGP 테스트 환경 구성을 완료할 수 있습니다.
안에 있는 bgp 설정까지 적용하면 다음과 같이 피어가 잘 적용된걸 볼 수 있다. 여기서 Session 값이 established가 되어야하는데 현재 1.18.0 기준으로는 예제에 오류가 있는지 잘 동작을 하지 않는 것 같습니다.
-> 원인을 찾앗는데 orbstack을 사용하는 리눅스 커널에선 TCP_MD5SIG 기능을 지원하지 않고 있어서 비밀번호를 설정한것을 제외하니 잘 동작했습니다. ! 참고하세요
우선은
2025.08.17 - [K8S/🔥 network study🔥] - [cilium] containerlab으로 lb ippool 테스트 해보기 요걸 참조해서 테스트 해보시는걸 추천합니다.
'K8S > cilium' 카테고리의 다른 글
[발표영상정리] Better Bandwidth Management with eBPF (2) | 2025.08.03 |
---|---|
[발표영상정리] Turning up Performance to 11: Cilium, NetKit Devices, and Going Big with TCP (4) | 2025.08.02 |
cilium 1.18.0 달라진점 정리 (3) | 2025.08.02 |
gce에 cilium native-routing으로 설치하기 (0) | 2025.02.02 |
네트워크 패킷 추적 도구 - PWRU: Packet, Where Are You? (1) | 2024.10.21 |