Calico for OpenStack
OpenStack에서 Calico를 네트워킹·정책 레이어로 사용할 때 어떤 소프트웨어 컴포넌트들이 어떤 역할을 하는지 소개해요. etcd, Felix, BIRD, Neutron 드라이버, DHCP 에이전트가 유기적으로 동작하는 구조를 이해하면 설치와 운영이 훨씬 쉬워져요.
출처: 문서
본문
Calico의 OpenStack 통합에는 다음 소프트웨어 컴포넌트들이 관련돼요.
-
etcd: 모든 컴퓨트 호스트와 Neutron 서버에서 접근할 수 있는 분산 키/값 데이터베이스를 제공해요.
-
각 컴퓨트 호스트에서 실행되는 Felix (Calico 에이전트). Felix는 etcd에서 워크로드와 그 속성(IP 주소, 보안 등)을 지정하는 정보를 읽어서, 그 연결성과 보안을 구현해요. Felix는 또한 자신의 에이전트 상태와 각 워크로드의 프로그래밍 상태를 etcd를 통해 보고해요.
-
각 컴퓨트 호스트에서 함께 실행되는 BIRD 또는 동등한 라우팅 데몬. 로컬 워크로드 라우트를 다른 컴퓨트 호스트와 인프라 라우터로 전파해요.
-
Neutron을 위한 Calico 드라이버: Neutron 서버가 실행되는 각 머신에서 Neutron 서버의 일부로 실행돼요. (Neutron 서버는 하나만 있을 수도 있지만, 보통 고가용성을 위해 더 많이 둬요.) 이 드라이버는 OpenStack 네트워크, 서브넷, 인스턴스, 보안 작업을 처리하고 이를 Felix가 구현할 수 있는 동등한 etcd 데이터로 번역해요. 또한 Felix가 etcd에 기록하는 에이전트 및 포트별 상태 정보를 읽어서 Neutron DB에 보고해요.
-
각 컴퓨트 호스트에서 실행되는 Calico DHCP 에이전트: 로컬에서 호스팅되는 워크로드에 DHCP를 제공하기 위해 Dnsmasq 인스턴스를 설정하고 띄워요. 아키텍처상으로는 레퍼런스 Neutron DHCP 에이전트와 같은 역할을 하지만, 핵심 차이는 Neutron 서버에서 RPC로 정보를 가져오는 게 아니라 etcd에서 가져온다는 점이에요. 이쪽이 더 확장성이 좋다는 걸 우리는 발견했어요.
이 조각들 중 일부는 Calico의 제공물(deliverable)이에요. 나머지는 별도로 준비해야 하는데, 다음 표에 설명되어 있어요.
| Component | Provisioning |
|---|---|
| etcd | Must be provisioned by the user before installing Calico deliverables. Typically now covered by OpenStack install - see https://docs.openstack.org/install-guide/environment-etcd.html. |
| Felix | Calico deliverable, provided by the calico-felix package. |
| BIRD (or equivalent) | Must be provisioned and configured by the user. See guidance on our install pages. |
| Calico driver for Neutron | Calico deliverable, provided by the calico-control package. |
| Calico DHCP agent | Calico deliverable, provided by the calico-dhcp-agent package. |
OpenStack 입장에서 보면 Calico는 Neutron API가 지정하는 대로 인스턴스(VM) 사이의 연결성을 제공하는 수많은 Neutron 드라이버 중 하나일 뿐이에요. Calico가 제공하는 Neutron API의 부분에 대해 더 자세히 알려면 Calico의 Neutron API 해석을 참고하세요.
더 알아보기 (Learn more)
Calico의 OpenStack 통합은 etcd를 공유 데이터스토어로 삼는 여러 컴포넌트의 협업이에요. 어떤 조각이 직접 제공되고 어떤 조각을 직접 준비해야 하는지 표로 정리되어 있으니 설치 전에 꼭 확인하세요.