OpenStack 시스템 요구 사항
OpenStack 노드에 Calico를 설치하기 전에 충족해야 하는 컴퓨트 노드, OS, 네트워크, 권한, OpenStack 버전 요구 사항을 정리한 문서예요. 커널 모듈 의존성 목록까지 포함돼요. 권장 배포판을 쓴다면 대부분의 요구 사항은 이미 충족된 상태일 거예요.
출처: 문서
본문
노드 요구 사항
- x86-64, arm64, ppc64le, 또는 s390x 프로세서
- Calico가 호스트의
tap*인터페이스를 관리할 수 있어야 해요.
-
필요한 의존성을 갖춘 Linux 커널 5.10 이상. 다음 배포판은 필요한 커널과 의존성을 갖추고 있고 Calico와 잘 동작하는 것으로 알려져 있어요.
- Ubuntu 20.04 이상
- RHEL 8 이상
SECONDARY: 위 배포판 대부분을 포함해 많은 Linux 배포판에는 NetworkManager가 들어 있어요. 기본적으로 NetworkManager는 Calico가 인터페이스를 관리하는 것을 허용하지 않아요. 노드에 NetworkManager가 있다면 Calico를 설치하기 전에 NetworkManager가 Calico 인터페이스를 제어하지 못하게 하기 단계를 완료하세요.
- 사용 중인 Linux 배포판에 Firewalld나 다른 iptables 관리 도구가 설치된 상태로 들어 있다면 비활성화해야 해요. 이런 도구는 Calico가 추가한 규칙을 방해해서 예상치 못한 동작을 일으킬 수 있어요.
SECONDARY: 호스트 방화벽이 필요하다면 Calico HostEndpoint와 GlobalNetworkPolicy로 구성할 수 있어요. 구성에 대한 자세한 내용은 호스트와 VM을 위한 정책을 참고하세요.
키/값 저장소
Calico에는 모든 Calico 컴포넌트가 접근할 수 있는 키/값 저장소가 필요해요. 프로덕션에서는 더 나은 성능과 신뢰성을 위해 노드 여러 개를 원할 거예요. 연결할 etcdv3 클러스터가 아직 없다면 상세한 조언과 설정 방법을 upstream etcd 문서에서 참고하세요.
네트워크 요구 사항
구성에 따라 필요한 트래픽을 호스트와 방화벽이 허용하도록 하세요.
| 구성 | 호스트 | 연결 유형 | 포트/프로토콜 |
|---|---|---|---|
| Calico 네트워킹 (BGP) | 전체 | 양방향 | TCP 179 |
| IP-in-IP를 켠 Calico 네트워킹 (기본) | 전체 | 양방향 | IP-in-IP, 흔히 프로토콜 번호 4로 표현해요 |
| 전체 | etcd 호스트 | 인바운드 | 공식적으로TCP 2379이지만 달라질 수 있어요 |
* 컴퓨트 호스트가 직접 연결되고 IP-in-IP를 사용하지 않는다면 IP-in-IP 트래픽을 허용할 필요가 없어요.
권한
Calico에 CAP_SYS_ADMIN 권한이 있는지 확인하세요.
필요한 권한을 주는 가장 간단한 방법은 Calico를 root로 또는 특권(privileged) 컨테이너에서 실행하는 거예요.
OpenStack 요구 사항
OpenStack Caracal 사용을 권해요. Calico v3.33과 OpenStack에 대한 우리의 활성 지원과 테스트도 Caracal 기준이에요.
과거를 보면, Calico는 Python 3에서 동작할 수 있는 더 오래된 OpenStack 릴리스에서도 동작해야 해요.
미래를 보면, Calico가 더 새로운 OpenStack 릴리스에서 동작할 수도 있지만 우리도 확신하지 못해요.
우리는 일반적으로 권장 OpenStack 버전을 OpenStack 릴리스 네 번마다 갱신해요. 따라서 우리의 코드와 테스트에서 다음으로 지원을 확대할 버전은 OpenStack Gazpacho예요.
커널 의존성
SUCCESS: 권장 배포판 중 하나를 사용 중이라면 이미 이 요구 사항들을 충족하고 있어요.
세상에 배포판과 커널 버전이 너무 많아서, Calico를 실행하는 데 필요한 특정 커널 모듈 이름을 정확히 말하기는 어려워요. 하지만 일반적으로 다음이 필요해요.
-
iptables모듈("legacy"와 "nft" 변형 모두 지원해요). 이것들은 보통 매치 기준(match criteria)마다 하나씩, 동작(action)마다 하나씩인 수많은 작은 모듈로 나뉘어 있어요. Calico에는 다음이 필요해요.- "base" 모듈(클러스터에서 IPv6를 켰다면 IPv6 버전 포함).
- 최소한 다음 매치 기준:
set,rpfilter,addrtype,comment,conntrack,icmp,tcp,udp,ipvs,icmpv6(커널에서 IPv6를 켰다면),mark,multiport,rpfilter,sctp,ipvs(IPVS 모드의kube-proxy를 사용한다면). - 최소한 다음 동작:
REJECT,ACCEPT,DROP,LOG.
-
IP sets 지원.
-
(SCTP를 사용한다면 SCTP 지원을 포함해) 컴파일에 들어 있는 Netfilter Conntrack 지원.
-
IPVS 모드의
kube-proxy를 사용한다면 IPVS 지원. -
그 모드 중 하나로 Calico 네트워킹을 사용한다면 IPIP, VXLAN, WireGuard 지원.
-
eBPF(
tc훅 지원 포함)와 XDP (eBPF 데이터 플레인을 사용하고 싶다면).
더 알아보기 (Learn more)
핵심 요건은 커널 5.10+, CAP_SYS_ADMIN, 그리고 BGP(179)/IP-in-IP/etcd(2379) 트래픽 허용이에요. NetworkManager와 Firewalld 충돌은 설치 전에 미리 처리하는 것이 안전해요. 권장 배포판(Ubuntu 20.04+, RHEL 8+)이라면 커널 의존성 고민은 대부분 생략할 수 있어요.