정책 스테이징, 영향 미리보기, 강제하기
정책을 실제로 강제하기 전에 스테이징(staging)해서 트래픽에 미칠 영향을 미리 관찰하는 방법을 다뤄요. 실제 트래픽 흐름을 바꾸지 않으면서 정책 적용 결과를 검증할 수 있다는 점이 핵심이에요. 잘못된 구성과 네트워크 장애를 미리 막는 안전한 정책 배포 절차를 소개해요.
출처: 문서
본문
큰 그림
정책을 강제하기 전에 스테이징하고 트래픽에 미칠 영향을 미리 살펴봐요.
가치
Calico 스테이지드(staged) 네트워크 정책 리소스를 사용하면 실제 트래픽 흐름을 바꾸지 않으면서, 정책이 강제된 것처럼 트래픽 영향을 테스트할 수 있어요. 스테이지드 정책이 기존 트래픽에 미칠 영향을 미리 살펴볼 수도 있어요. 강제하기 전에 올바른 흐름이 허용되고 거부되는지 확인하면 잘못된 구성과 잠재적인 네트워크 장애를 최소화할 수 있어요.
개념
스테이지드 정책 알아보기
스테이지드 정책 리소스는 강제되는 대응 리소스와 같은 구조를 따라요.
| 정책 리소스 이름 | 스테이지드 정책 리소스 이름 |
|---|---|
CalicoNetworkPolicy |
StagedCalicoNetworkPolicy |
GlobalNetworkPolicy |
StagedGlobalNetworkPolicy |
NetworkPolicy |
StagedKubernetesNetworkPolicy |
방법
정책 스테이징하기
프로덕션 환경과 거의 같은 환경에서 정책을 테스트하기 위해 스테이징해요. 다른 네트워크 트래픽을 실수로 노출하거나 차단하는 일을 막으려면, 정책을 강제하기 전에 스테이징하는 것이 모범 사례예요. 커스텀 리소스를 사용해 Kubernetes와 Calico 정책을 스테이징하고 kubectl로 적용할 수 있어요. 다음은 예제 YAML 파일들이에요.
예제: StagedGlobalNetworkPolicy
apiVersion: projectcalico.org/v3
kind: StagedGlobalNetworkPolicy
metadata:
name: default.allow-tcp-6379
spec:
tier: default
selector: role == 'database'
types:
- Ingress
- Egress
ingress:
- action: Allow
protocol: TCP
source:
selector: role == 'frontend'
destination:
ports:
- 6379
egress:
- action: Allow
예제: StagedNetworkPolicy
apiVersion: projectcalico.org/v3
kind: StagedNetworkPolicy
metadata:
name: default.allow-tcp-6379
namespace: default
spec:
tier: default
selector: role == 'database'
types:
- Ingress
- Egress
ingress:
- action: Allow
protocol: TCP
source:
selector: role == 'frontend'
destination:
ports:
- 6379
egress:
- action: Allow
예제: StagedKubernetesNetworkPolicy
apiVersion: projectcalico.org/v3
kind: StagedKubernetesNetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.1.0/24
- namespaceSelector:
matchLabels:
project: myproject
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 6379
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5978
정책 영향 미리보기
스테이지드 정책의 영향은 Calico Whisker 웹 콘솔에서 생성되는 플로우 로그의 policies.pending 필드에 반영돼요. 이 필드는 스테이지드 정책이 강제된다면 트래픽에 어떤 일이 벌어질지 보여 줘요.
스테이지드 정책 강제하기
스테이지드 정책의 결과가 만족스럽다면, 동일한 정책을 만들어 적용해요.
추가 리소스
- Staged global network policy
- Staged network policy
- Staged Kubernetes network policy
- 스테이지드 정책 리소스의 RBAC 구성 방법은 계층형 정책을 위한 RBAC 구성을 참고하세요
- 스테이지드 정책 메트릭에 대한 자세한 내용은 플로우 로그 보기를 참고하세요
더 알아보기 (Learn more)
스테이징은 실제 트래픽을 건드리지 않는 안전한 정책 리허설이에요. Whisker 플로우 로그의 policies.pending 필드를 보면 강제 전에 영향을 미리 확인할 수 있고, 결과가 좋으면 동일한 정책을 그대로 적용하면 돼요.