작성
·
217
0
안녕하세요 강의를 수강중인 수강생입니다.
Kubernetes NetworkPolicy 관련 질문이 있습니다.
강의에서는 NetworkPolicy를 .yaml 파일을 1개로 설정하시고 테스트 하셨는데
NetworkPolicy rule을 2개의 .yaml 파일로 나눠서 적용해도 2개의 rule들이 하나의 pod에서 같이 적용이 가능할까요?
예를 들면) 아래와 같이 적용을 했을 때, role: web pod는 외부로 80과 53의 두가지의 Rule을 모두 적용이 가능 한건지 궁금합니다.
a.yaml -> role: web 이라는 tag를 가진 pod에 egress 0.0.0.0/0 tcp 80
a2.yaml -> role: web 이라는 tag를 가진 pod에 egress 0.0.0.0/0 udp 53
제가 테스트 했을 때는, 안되었는데 혹시 파일을 나눠서 적용 하고 싶다면 다른 방법이 있을까요?
답변 1
1
안녕하세요
정확히 어떤 의도인지 파악하진 못했는데, 아마 CSP 같은 환경을 만들기 위해서 보고 계신거 같습니다.
그리고 UDP까지는 필요하지 않아서 TCP로 아래와 같이 테스트한 결과 위의 내용이 적용 가능합니다.
아마 어딘가 테스트를 다르게 진행하신거 같습니다.
사용 deployment
[root@m-k8s 8.6]# cat 1-1-deploy-deny-all.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
role: sensitive
app: chk-info
name: deploy-deny-all
<생략>
8080 netpol 적용
[root@m-k8s 8.6]# cat 8080.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: 8080port
namespace: default
spec:
podSelector:
matchLabels:
role: sensitive
policyTypes:
- Ingress
- Egress
ingress:
- ports:
- protocol: TCP
port: 8080
egress:
- {}
8080 적용 후 curl 안됨
[root@m-k8s 8.6]# ka 8080.yaml
networkpolicy.networking.k8s.io/8080port created
[root@m-k8s 8.6]# curl 192.168.1.11
^C
80 적용 후 curl이 됨
[root@m-k8s 8.6]# cat 80.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: 80port
namespace: default
spec:
podSelector:
matchLabels:
role: sensitive
policyTypes:
- Ingress
- Egress
ingress:
- ports:
- protocol: TCP
port: 80
egress:
- {}
[root@m-k8s 8.6]# ka 80.yaml
networkpolicy.networking.k8s.io/80port created
[root@m-k8s 8.6]# curl 192.168.1.11
<!DOCTYPE html>
<html>
<head>
<title>Check NGINX Information</title>
<생략>
[root@m-k8s 8.6]# k get netpol
NAME POD-SELECTOR AGE
8080port role=sensitive 2m43s
80port role=sensitive 67s
해당 내용을 참고로 다시 진행해 보시면 좋으실 것 같습니다.
도움이 되시길 바랍니다.
우선 교육 범위가 아니라 구현에 필요한 모든 사항에 답변드리기 어려운 점에 대해서 이해를 구합니다. 연속성이 있고 이미 질의된 질문에 이번에는 예외적으로 답변드리는게 좋을꺼 같아서 드리면...
아마 아시겠지만 networkpolicy에는 TCP UDP 외에는 다른 프로토콜은 아직 구현되어 있지 않습니다. 아마 앞으로도 여기 계속 feature가 추가되기 보다는 CRD로 따로 구현될 것으로 예상됩니다. 주로 CNI쪽에서 제공될꺼 같으며, 다음의 내용을 참고하시면 도움이 되실 것 같습니다.
https://docs.tigera.io/calico/latest/network-policy/policy-rules/icmp-ping
아 제가 테스트를 잘못 한 것 같네요 ^^;; 다시 확인해보니 잘 됩니다. 확인해 주셔서 감사합니다~
아 하나만 더 여쭤 보면,,, TCP or UDP 말고 프로토콜로 ICMP를 허용 할 수 있는 방법은 있을까요? TCP를 Ingress로 열어놓으면 ICMP가 안되더라구요..ㅠㅠ