Exercise 6.5: Testing the Policy

  1. NetworkPolicy 생성

    cat <<EOF | kubectl apply -f -
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
      - Egress
    EOF
  2. CURL 명령어를 통해서 생성된 Pod의 IP주소로 HTTP 요청

    curl --connect-timeout 3 $(kubectl get pod -l app=nginx -o=jsonpath='{.items[0].status.podIP}')
  3. CURL 명령어를 통해서 생성된 Service의 Cluster IP주소로 HTTP 요청

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

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

    kubectl exec -it deploy/nginx -- nc -vz www.google.com 80
  6. NetworkPolicy 업데이트

    cat <<EOF | kubectl apply -f -
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
    EOF
  7. Pod에서 외부 통신이 가능한지 확인

    kubectl exec -it deploy/nginx -- nc -vz www.google.com 80
  8. NetworkPolicy 업데이트

    cat <<EOF | kubectl apply -f -
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
      ingress:
      - from:
        - ipBlock:
            cidr: 192.168.0.0/16
    EOF
  9. CURL 명령어를 통해서 생성된 Pod의 IP주소로 HTTP 요청

    curl --connect-timeout 3 $(kubectl get pod -l app=nginx -o=jsonpath='{.items[0].status.podIP}')
  10. CURL 명령어를 통해서 생성된 Service의 Cluster IP주소로 HTTP 요청

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

    echo "$(curl -s ifconfig.io):$(kubectl get service nginx -o=jsonpath='{.spec.ports[0].nodePort}')"
  12. ping 명령어를 통해서 생성된 Pod의 IP주소로 ICMP 요청

    ping -c5 $(kubectl get pod -l app=nginx -o=jsonpath='{.items[0].status.podIP}')
  13. NetworkPolicy 업데이트

    cat <<EOF | kubectl apply -f -
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
      ingress:
      - from:
        - ipBlock:
            cidr: 192.168.0.0/16
        ports:
        - port: 80
          protocol: TCP 
    EOF
  14. ping 명령어를 통해서 생성된 Pod의 IP주소로 ICMP 요청

    ping -c5 $(kubectl get pod -l app=nginx -o=jsonpath='{.items[0].status.podIP}')
  15. 리소스 삭제

    {
        kubectl delete networkpolicy default
        kubectl delete svc nginx
        kubectl delete deploy nginx
    }

Last updated