DevOps/CKA Test 준비

10.CAK-Newtork Policy

치킨맛코드 2023. 2. 8. 08:40


network policy는 cni가 지원해줘야 사용할 수 있다.


문제


default namespace에 다음과 같은 pod를 생성하세요. 이 후 "partition=customaera"를 사용하는 namespace에서만 poc의 80 port로 연결할 수 있도록 default namespace에 'allow-web-from-customera'라는 network policy를 설정하세요. 보안 정책상 다른 namespace의 접근은 제한합니다.

작업 클러스터 : hk8s
name: poc
image: ngix
port : 80
label : app=poc


1. 작업 클러스터 확인하기
==> kubectl config use-context hk8s

2.poc라는 이름을 가진 pod생성하기
==> kubectl run poc --image=nginx --port=80 --labels=app=poc

3. pod ip 확인하기(test용)
==> kubectl get pod poc -o wide

4. namespace/partition 확인하기
==> kubectl get namespaces -L partition

5.네트워크 정책 생성하기
==> vi allow-web-from-customera.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
    name: allow-web-from-customera
==> 문제에서 지정한 이름을 기입한다.
    namespace: default
spec:
    podSelector:
       matchLabels:
          app: popc
==> app=poc라는 label 값을 지정한다. 
    policyTypes:
    - Ingress
    ingress:
    - from:
       - namespaceSelector:
           matchLabels:
              partition: customera
==> matchLabels에 문제에서 지정한 partion과 값을 추가한다.
       ports:
       - protocal: TCP
         port: 80
==> 문제에서 지정한 port를 사용한다.

6. 생성한 yaml파일을 실행하기
==> kubectl apply -f allow-web-from-customera.yaml

7. 테스트 시도해 보기, 이때 ip 는 step3에서 확인한 ip를 사용한다.
==> kubectl run test --image=nginx -it --rm -n customera -- /bin/bash
==> curl "ip"