이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/AWS

EKS Network Policy 분석

이쿠우우 2021. 5. 6. 14:09
반응형

 

 

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