Calico 네트워크 모드
칼리코는 다양한 네트워크 모드를 제공합니다.
IPIP 모드 (기본설정)
이전 글에서 다뤘던 내용인 만큼 생략하도록 하겠습니다.
https://yeoli-tech.tistory.com/44
- 같은 노드 내에서는 파드간 통신시 직접 통신합니다.
- 다른 노드에서 파드간 통신은 tunl0 인터페이스를 사용하고 IPIP 프로토콜로 통신합니다.
- 다른 노드의 ip 대역은 BGP로 전달 받은 다음 호스트의 라우팅테이블에 업데이트 됩니다.
Direct 모드
- IPIP 모드와 달리 파드 통신이 출발지 노드의 라우팅 정보를 확인해 목적지 노드로 원본 그대로 전달합니다.
- AWS에서 이 모드를 사용하려면 다음과 같이 Source/Destination Check 기능을 Disable 해야합니다.
# IPIP 모드 비활성화
calicoctl get ippool default-ipv4-ippool -o yaml | sed -e "s/ipipMode: Always/ipipMode: Never/" | calicoctl apply -f -
# IPIP 모드 활성화
calicoctl get ippool default-ipv4-ippool -o yaml | sed -e "s/ipipMode: Never/ipipMode: Always/" | calicoctl apply -f -
VXLAN 모드
- Flannel CNI에서 한 번 다뤘습니다. https://yeoli-tech.tistory.com/42#%EB%AA%A8%EB%93%9Cmode
- BGP를 사용하지 않고, VXLAN L3 라우팅을 통해서 동작 합니다.
Pod 패킷 암호화
- 파드간 통신이 암호화되어야 하는 경우에 사용할 수 있습니다.
- 파드간 통신시 wireguard tunnel을 통해 트래픽이 암호화되어 전달됩니다.
네트워크 접근 통제
- 네트워크 정책은 클러스터 내부에서 파드간 통신에 대해 트래픽 규칙을 정의하는 걸 말합니다.
- 네트워크 정책을 정하지 않는 경우, 모든 파드간에는 서로 통신이 가능합니다.
- 네트워크 정책은 기본적으로 차단입니다.
네트워크 정책 대상
- 네트워크 정책이 적용될 대상은 다음과 같이 결정될 수 있습니다.
- 특정 pod, 특정 namespace, 특정 ip block
네트워크 정책 예시
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: sample-networkpolicy
namespace: default # 보안 정책을 생성할 네임스페이스 지정
spec:
podSelector:
# 설정할 대상 파드를 여기에 기입
# 레이블 셀렉터이므로 복수의 파드를 대상으로 할 수 있음.
policyTypes:
- Ingress # 인그레이스 룰을 생성하는 경우 명시
- Egress # 이그레스 룰을 생성할 경우 명시
ingress:
- from:
# 인그레스 룰을 여기에 기입(이그레스 룰과 형식은 동일)
ports:
# 이 인그레스 룰로 허가할 수신 포트 번호와 프로토콜 기입
egress:
- to:
# 이그레스 룰을 여기에 기입(인그레스 룰과 형식은 동일)
ports:
# 이 이그레스 룰로 허가할 송신 포트 번호와 프로토콜 기입
리소스 정리
- 다쓴 리소스는 꼭 삭제해주세요.
- cloudformation에서 리소스를 삭제하면 됩니다.
- 다 쓴 리소스는 반드시 삭제 후 삭제되었는지 확인해보세요.
'스터디' 카테고리의 다른 글
[KANS 3기] 5주차 MetalLB (6) | 2024.10.05 |
---|---|
KCD 참석후기 - 쿠버네티스에서 스케줄링 작동 방식 (0) | 2024.09.28 |
[KANS 3기] 3주차 Calico CNI (2/3) (1) | 2024.09.21 |
[KANS 3기] 3주차 실습환경 구성하기 (1/3) (1) | 2024.09.21 |
[KANS 3기] 2주차 스터디 내용 정리 (2) | 2024.09.07 |