Exercise 6.4: Implement a NetworkPolicy

  1. NetworkPolicy 리뷰

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
      - Egress
  2. Deployment 생성

    kubectl create deploy nginx --image=nginx
  3. 생성된 Deployment 및 Pod 확인

    kubectl get deployment,pod -l app=nginx
  4. CURL 명령어를 통해서 생성된 Pod의 IP주소로 HTTP 요청

    curl $(kubectl get pod -l app=nginx -o=jsonpath='{.items[0].status.podIP}')
  5. Deployment에 NodePort 타입의 서비스 생성

    kubectl expose deployment nginx --port=80 --type=NodePort
  6. CURL 명령어를 통해서 생성된 Service의 Cluster IP주소로 HTTP 요청

    curl $(kubectl get svc nginx -o=jsonpath='{.spec.clusterIP}')
  7. 웹브라우저에서 ANY_NODE_IP:SERVICE_NODE_PORT 로 접속되는지 확인 - 아래 명령어로 주소 확인 가능

    echo "$(curl -s ifconfig.io):$(kubectl get service nginx -o=jsonpath='{.spec.ports[0].nodePort}')"
  8. Pod에서 외부 통신이 가능한지 확인

    1. Pod로 Bash 연결

      kubectl exec -it deploy/nginx -- /bin/bash
    2. netcat 설치

      apt update && apt install netcat -y 
    3. localhost로 연결 시도 - 로컬 nginx 서버

      nc -vz 127.0.0.1 80
    4. 외부 사이트로 연결 시도

      nc -vz www.google.com 80
    5. Bash 프로세스 종료

      exit

Last updated