티어(Tier)
티어(Tier)는 Calico에서 네트워크 정책들을 우선순위가 다른 그룹으로 묶는 리소스예요. 규칙의 Pass 액션이 다음 티어로 평가를 넘기기 때문에 계층적인 정책 설계가 가능해집니다. 이 문서에서는 티어의 개념, 정책 평가 순서, YAML 예제와 스펙 정의를 소개해요.
출처: 문서
본문
티어 리소스(Tier)는 NetworkPolicy와 GlobalNetworkPolicy의 순서 있는 컬렉션을 나타냅니다. 티어는 이런 정책들을 우선순위가 다른 그룹으로 나누는 데 사용해요. 정책들은 티어 안에서 순서대로 평가되고, 티어라는 추가 계층 덕분에 규칙의 Pass action이 다음 티어로 건너뛸 수 있어서 훨씬 유연해집니다. 이 기능의 대표적인 활용 예는 다음과 같아요.
- 특별 권한을 가진 사용자가 다른 사용자보다 우선하는 보안 정책을 정의할 수 있게 하기
- 물리 방화벽의 계층 구조를 Calico 정책으로 그대로 옮기기
kubectl 명령에서는 CLI에서 리소스 타입을 지정할 때 대소문자를 구분하지 않는 다음 별칭을 사용할 수 있어요: tier.projectcalico.org, tiers.projectcalico.org, 그리고 tier.p, tiers.p 같은 약어도 됩니다.
정책이 평가되는 방식
Calico가 새 연결을 처리할 때, 엔드포인트에 적용되는 정책을 담고 있는 각 티어가 패킷을 처리해요. 티어는 order 값을 기준으로 정렬되며, 숫자가 가장 작은 티어부터 처리됩니다.
그다음 각 티어 안의 정책들은 순서대로 처리돼요.
- 티어 안의 NetworkPolicy나 GlobalNetworkPolicy가 패킷을
Allow하거나Deny하면 평가는 거기서 끝나고, 패킷은 그에 맞게 처리됩니다. - 티어 안의 NetworkPolicy나 GlobalNetworkPolicy가 패킷을
Pass하면, 엔드포인트에 적용되는 정책을 담고 있는 다음 티어가 패킷을 이어서 처리해요.
티어가 엔드포인트에 적용되는데 패킷에 대해 아무 조치도 취하지 않으면 패킷은 드롭됩니다. 이 동작은 티어의 defaultAction을 Pass로 설정해서 바꿀 수 있어요.
엔드포인트에 적용되는 마지막 티어가 패킷을 Pass하면, 그 엔드포인트의 프로파일(Profiles)이 평가됩니다.
샘플 YAML
apiVersion: projectcalico.org/v3
kind: Tier
metadata:
name: internal-access
spec:
order: 100
defaultAction: Deny
정의
메타데이터
| Field | Description | Accepted Values | Schema |
|---|---|---|---|
| name | The name of the tier. | string |
스펙
| Field | Description | Accepted Values | Schema | Default |
|---|---|---|---|---|
| order | (Optional) Indicates priority of this Tier, with lower order taking precedence. No value indicates highest order (lowest precedence) | float | nil (highest order) |
|
| defaultAction | (Optional) Indicates the default action, when this Tier applies to an endpoint, but takes no action on the packet | Deny, Pass |
string | Deny |
Calico 오케스트레이터 통합이 생성하는 모든 정책은 기본(마지막) 티어에 만들어져요.
더 알아보기 (Learn more)
티어의 order와 defaultAction을 조합하면 정책 평가 순서를 단계별로 설계할 수 있어요. 실제 정책 작성법은 NetworkPolicy와 GlobalNetworkPolicy 문서를 함께 참고하면 좋습니다.