EKS Network Policy 분석
목적
AWS에서 제공되는 kubernetes인 EKS 환경에서
Network Policy 동작을 확인해봄.
AWS CNI는 기본적으로
Networking 기능만 제공하고 방화벽기능을 제공하지 않기때문에
kubernetes Network Policy를 지원하지 않음.
Network Policy를 사용하기 위해서는 해당 기능을 지원하는 CNI인
Calico, Cilium, Weave Net 중 1개를 추가로 적용해야함.
이중 Calico를 적용하고 Network Policy 동작을 확인하는 과정을 리서치 해봄.
글을 읽는데 필요한 기초 개념
Kubernetes Network Policy
링크 : Kubernetes Network Policy
AWS CNI만 적용되어있는 환경에서 Network Policy 동작확인
Mysql Pod에서 Tomcat Pod로
curl 명령으로 request를 보낼것임.
이때 Tomcat Pod에 podSelector Network Policy를 적용해서
response를 못받아와야 정상적인 상태가 되야하는데
AWS CNI만 설정되어있는 환경에서 Network Policy가 정상 적용되는지 확인.
[사용한 Tomcat Deployment]
apiVersion: apps/v1 kind: Deployment metadata: name: iksoon-deployment-tomcat labels: app: iksoon-tomcat-test spec: replicas: 1 selector: matchLabels: app: iksoon-pod-tomcat template: metadata: labels: app: iksoon-pod-tomcat spec: containers: - name: iksoon-tomcat image: peksoon/iksoon_tomcat:1.0.5 ports: - containerPort: 8080 |
[사용한 Mysql Deployment]
apiVersion: apps/v1 kind: Deployment metadata: name: iksoon-deployment-mysql labels: app: iksoon-mysql-test spec: replicas: 1 selector: matchLabels: app: iksoon-pod-mysql template: metadata: labels: app: iksoon-pod-mysql spec: containers: - name: iksoon-mysql image: peksoon/iksoon_mysql:1.0.2 ports: - containerPort: 3306 |
[사용한 PodSelector Network Policy]
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: test-network-policy spec: podSelector: matchLabels: app: iksoon-pod-tomcat policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: app: networkpolicy |
해당 Network Policy는 tomcat Pod에 적용이 됨.
tomcat Pod와 통신 가능한 Pod는 app: networkpolicy label을 가지고 있어야함.
test환경의 mysql pod는 해당 label이 없기 때문에 방화벽 정책에 따라 통신이 안되야 함.
[Network Policy 생성 확인]
[Mysql Pod에서 Tomcat으로 curl명령 결과]
[결과]
Network Policy가 정상적으로 적용되지 않음.
EKS에 Calico CNI 적용
EKS에 Calico 배포
[명령어]
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/v1.7/calico.yaml
[배포 확인]
EKS 에 Calico 배포 완료
EKS에 Calico 배포 후 Network Policy 동작 확인
[mysql pod 에서 tomcat pod로 curl 요청]
[결과]
Calico 배포 후 Network Policy가 정상적으로 적용됨.
참고
EKS 에 Calico 설치
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/calico.html
AWS 호환 가능 CNI 목록
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/alternate-cni-plugins.html
'클라우드 > AWS' 카테고리의 다른 글
EKS AWS CNI를 Flannel로 교체 (2) | 2021.05.06 |
---|---|
EKS AWS CNI - Pod 간 통신 (0) | 2021.05.06 |
EKS AWS CNI 분석 (2) | 2021.05.03 |
AWS Kubernetes (EKS) (0) | 2021.02.23 |
AWS API 사용 (Python) (0) | 2020.08.12 |