kubernetes
k8s network policy
misankim
2023. 3. 10. 19:04
network policy
k8s network policy 가이드
https://kubernetes.io/ko/docs/concepts/services-networking/network-policies/
gke network plicy 가이드
https://cloud.google.com/kubernetes-engine/docs/tutorials/network-policy?hl=ko
# 정책 예제
"kubernetes.io/metadata.name: privacy" 레이블을 가진 네임스페이스의 "app: privacy" 레이블을 가진 파드 -> my-flask-app 네임스페이스의 "app: my-flask-app" 레이블을 가진 파드로 액세스 가능하도록 설정
-> 해당 파드에 적용되면서 policyTypes에 "Ingress"가 있는 NetworkPolicy가 존재하는 경우, 파드가 인그레스에 대해 격리된다.(network policy 에 의해 허용된 파드를 제외하고는 통신 불가해짐)
-> 파드는 자신에 대한 접근을 차단할 수 없음
-> 특정 파드의 특정 방향에 대해 하나 또는 여러 개의 폴리시가 적용되면, 해당 파드의 해당 방향에 대해 허용된 연결은 모든 폴리시가 허용하는 연결의 합집합이다.
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: my-flask-app
namespace: my-flask-app
spec:
policyTypes:
- Ingress
podSelector:
matchLabels:
app: my-flask-app
ingress:
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: privacy
podSelector:
matchLabels:
app: privacy
kubectl get networkpolicy
kubectl get netpol
# sentry clickhouse 정책 예제
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: sentry-clickhouse
namespace: sentry
spec:
policyTypes:
- Ingress
podSelector:
matchLabels:
app.kubernetes.io/name: clickhouse
ingress:
- from:
- podSelector:
matchLabels:
app.kubernetes.io/name: clickhouse
- podSelector:
matchLabels:
app.kubernetes.io/name: zookeeper-clickhouse
- podSelector:
matchExpressions:
- key: role
operator: In
values:
- snuba-api
- snuba-consumer
- snuba-transactions-consumer
- snuba-outcomes-consumer
- sessions-consumer
- snuba-replacer
- podSelector:
matchExpressions:
- key: job-name
operator: Exists