Calico는 컨테이너, 가상 머신 및 기본 호스트 기반 워크로드를 위한 오픈 소스 네트워킹 및 네트워크 보안 솔루션이다.
1 광범위한 플랫폼을 지원한다.
2 클라우드 네이티브 확장성과 함께 놀랍도록 빠른 성능을 제공한다.
3 공용 클라우드나 온프레미스, 단일 노드 또는 수천 개의 노드 클러스터에서 실행되는지 여부에 관계없이 개발자와 클러스터 운영자에게 일관된 경험과 기능 세트를 제공한다.
BGP(Border Gateway Protocol): AS 끼리 서로 라우팅 경로를 주고 받으며 통신을 가능하게 하는 라우팅 프로토콜이다 (Inter-Domain Routing Protocol)
Bird: BGP 관련 컴포넌트이다. (Peer에 라우팅 정보 전파 및 수신 역할을 한다.)
Felix: 인터페이스 관리, 라우팅 정보 관리, ACL 관리, 상태 검사 등 다양한 역할을 담당한다.
Confd: Calico Global 설정과 BGP 설정 변경 시 Bird에 적용해주는 역할이다.
Datastore Plugin: Calico 설정 정보를 저장하는 곳이다. (K8S API Datastore 혹은 ETCD 중 선택)
calico-kube-controllers: calico 동작 관련 감시를 진행한다.
calicoctl: calico 오브젝트를 CRUD 할 수 있다
IPAM(IP Adress Management): IP 주소 및 도메인 네임 관리, 네트워크 관리 등을 관리하기 위해 컴퓨터 소프트웨어에서 구현된 방법이다.
Calico IPAM plugin: 클러스터 내에서 파드에 할당할 IP 대역이다.
일반적으로 IP-in-IP라고 불리우는 Overlay 방식으로, Calico 네트워킹의 기본 모드이다.
*IP-in-IP: 원본 IP Header위에 Outer IP Header를 붙여 네트워크 통과하는 방식
패킷을 캡슐화하지 않고 Pod에서 바로 패킷을 보낸 것처럼 동작한다.
노드 간 같은 네트워크 대역은 Direct 모드로, 노드 간 다른 네트워크 대역은 IPIP 모드로 동작한다
네트워크 패킷앞에 VNI를 붙이고 VTEP의 정보를 기반으로 헤더를 하나 더 덧붙여 통신하는 방식
https://projectcalico.docs.tigera.io/about/about-calico
https://nyyang.tistory.com/139