21.2. 네트워크 정책 생성
admin 역할이 있는 사용자는 네임스페이스에 대한 네트워크 정책을 생성할 수 있습니다.
21.2.1. NetworkPolicy 오브젝트 예 링크 복사링크가 클립보드에 복사되었습니다!
다음은 예제 NetworkPolicy 오브젝트에 대한 주석입니다.
21.2.2. CLI를 사용하여 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터의 네임스페이스에서 허용된 수신 또는 송신 네트워크 트래픽을 설명하는 세분화된 규칙을 정의하기 위해 네트워크 정책을 생성할 수 있습니다.
cluster-admin 역할로 사용자로 로그인하는 경우 클러스터의 모든 네임스페이스에서 네트워크 정책을 생성할 수 있습니다.
사전 요구 사항
-
클러스터는
mode:로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy -
OpenShift CLI(
oc)를 설치합니다. -
admin권한이 있는 사용자로 클러스터에 로그인합니다. - 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
다음과 같이 정책 규칙을 생성합니다.
<policy_name>.yaml파일을 생성합니다.touch <policy_name>.yaml
$ touch <policy_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<policy_name>- 네트워크 정책 파일 이름을 지정합니다.
방금 만든 파일에서 다음 예와 같이 네트워크 정책을 정의합니다.
모든 네임스페이스의 모든 Pod에서 수신 거부
이는 다른 네트워크 정책 구성에서 허용하는 포드 간 트래픽 이외의 모든 교차 포드 네트워킹을 차단하는 기본 정책입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 동일한 네임 스페이스에 있는 모든 Pod의 수신 허용
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 특정 네임스페이스에서 하나의 Pod로 수신 트래픽 허용
이 정책을 사용하면
namespace-y에서 실행되는 Pod에서pod-a레이블이 지정된 Pod로의 트래픽을 허용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 네트워크 정책 오브젝트를 생성합니다.
oc apply -f <policy_name>.yaml -n <namespace>
$ oc apply -f <policy_name>.yaml -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<policy_name>- 네트워크 정책 파일 이름을 지정합니다.
<namespace>- 선택 사항: 오브젝트가 현재 네임스페이스와 다른 네임스페이스에 정의된 경우 이를 사용하여 네임스페이스를 지정합니다.
출력 예
networkpolicy.networking.k8s.io/deny-by-default created
networkpolicy.networking.k8s.io/deny-by-default createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
cluster-admin 권한을 사용하여 웹 콘솔에 로그인하는 경우 클러스터의 모든 네임스페이스에서 직접 또는 웹 콘솔의 양식에서 네트워크 정책을 생성할 수 있습니다.
21.2.3. 기본 거부 모든 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 정책은 배포된 다른 네트워크 정책의 구성에서 허용하는 네트워크 트래픽 이외의 모든 포드 간 네트워킹을 차단하는 기본 정책입니다. 이 절차에서는 기본 거부 정책을 적용합니다.
cluster-admin 역할로 사용자로 로그인하는 경우 클러스터의 모든 네임스페이스에서 네트워크 정책을 생성할 수 있습니다.
사전 요구 사항
-
클러스터는
mode:로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy -
OpenShift CLI(
oc)를 설치합니다. -
admin권한이 있는 사용자로 클러스터에 로그인합니다. - 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
모든 네임스페이스의 모든 포드의 수신을
거부하도록 기본거부 정책을 정의하는 다음 YAML을 생성합니다. YAML을deny-by-default.yaml파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 정책을 적용합니다.
oc apply -f deny-by-default.yaml
$ oc apply -f deny-by-default.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
networkpolicy.networking.k8s.io/deny-by-default created
networkpolicy.networking.k8s.io/deny-by-default createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.2.4. 외부 클라이언트의 트래픽을 허용하는 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
기본 거부 정책을 배치하면 app=web 레이블이 있는 외부 클라이언트에서 Pod로의 트래픽을 허용하는 정책을 구성할 수 있습니다.
cluster-admin 역할로 사용자로 로그인하는 경우 클러스터의 모든 네임스페이스에서 네트워크 정책을 생성할 수 있습니다.
다음 절차에 따라 공용 인터넷의 외부 서비스를 직접 또는 Load Balancer를 사용하여 Pod에 액세스하는 방식으로 허용하는 정책을 구성합니다. app=web 레이블이 있는 Pod에만 트래픽이 허용됩니다.
사전 요구 사항
-
클러스터는
mode:로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy -
OpenShift CLI(
oc)를 설치합니다. -
admin권한이 있는 사용자로 클러스터에 로그인합니다. - 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
직접 또는 로드 밸런서를 사용하여 pod에 액세스하여 공용 인터넷의 트래픽을 허용하는 정책을 생성합니다. YAML을
web-allow-external.yaml파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 정책을 적용합니다.
oc apply -f web-allow-external.yaml
$ oc apply -f web-allow-external.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
networkpolicy.networking.k8s.io/web-allow-external created
networkpolicy.networking.k8s.io/web-allow-external createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 정책은 다음 다이어그램에 설명된 대로 외부 트래픽을 포함하여 모든 리소스의 트래픽을 허용합니다.
21.2.5. 모든 네임스페이스에서 애플리케이션에 대한 트래픽을 허용하는 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
cluster-admin 역할로 사용자로 로그인하는 경우 클러스터의 모든 네임스페이스에서 네트워크 정책을 생성할 수 있습니다.
다음 절차에 따라 모든 네임스페이스의 모든 Pod에서 특정 애플리케이션으로의 트래픽을 허용하는 정책을 구성합니다.
사전 요구 사항
-
클러스터는
mode:로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy -
OpenShift CLI(
oc)를 설치합니다. -
admin권한이 있는 사용자로 클러스터에 로그인합니다. - 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
모든 네임스페이스의 모든 Pod에서 특정 애플리케이션으로의 트래픽을 허용하는 정책을 생성합니다. YAML을
web-allow-all-namespaces.yaml파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고기본적으로
namespaceSelector를 지정하는 것을 생략하면 네임스페이스를 선택하지 않으므로 정책에서 네트워크 정책이 배포된 네임스페이스의 트래픽만 허용합니다.다음 명령을 입력하여 정책을 적용합니다.
oc apply -f web-allow-all-namespaces.yaml
$ oc apply -f web-allow-all-namespaces.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
networkpolicy.networking.k8s.io/web-allow-all-namespaces created
networkpolicy.networking.k8s.io/web-allow-all-namespaces createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 입력하여
기본네임스페이스에서 웹 서비스를 시작합니다.oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80
$ oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
보조네임스페이스에alpine이미지를 배포하고 쉘을 시작합니다.oc run test-$RANDOM --namespace=secondary --rm -i -t --image=alpine -- sh
$ oc run test-$RANDOM --namespace=secondary --rm -i -t --image=alpine -- shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 쉘에서 다음 명령을 실행하고 요청이 허용되는지 확인합니다.
wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.2.6. 네임스페이스에서 애플리케이션에 대한 트래픽을 허용하는 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
cluster-admin 역할로 사용자로 로그인하는 경우 클러스터의 모든 네임스페이스에서 네트워크 정책을 생성할 수 있습니다.
다음 절차에 따라 특정 네임스페이스의 app=web 레이블을 사용하여 Pod로의 트래픽을 허용하는 정책을 구성합니다. 다음을 위해 이 작업을 수행할 수 있습니다.
- 프로덕션 데이터베이스가 프로덕션 워크로드가 배포된 네임스페이스로만 트래픽을 제한합니다.
- 특정 네임스페이스에 배포된 모니터링 툴을 활성화하여 현재 네임스페이스에서 메트릭을 스크랩할 수 있습니다.
사전 요구 사항
-
클러스터는
mode:로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy -
OpenShift CLI(
oc)를 설치합니다. -
admin권한이 있는 사용자로 클러스터에 로그인합니다. - 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
purpose=production레이블이 있는 특정 네임스페이스의 모든 Pod의 트래픽을 허용하는 정책을 생성합니다. YAML을web-allow-prod.yaml파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 입력하여 정책을 적용합니다.
oc apply -f web-allow-prod.yaml
$ oc apply -f web-allow-prod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
networkpolicy.networking.k8s.io/web-allow-prod created
networkpolicy.networking.k8s.io/web-allow-prod createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 입력하여
기본네임스페이스에서 웹 서비스를 시작합니다.oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80
$ oc run web --namespace=default --image=nginx --labels="app=web" --expose --port=80Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
prod네임스페이스를 생성합니다.oc create namespace prod
$ oc create namespace prodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
prod네임스페이스에 레이블을 지정합니다.oc label namespace/prod purpose=production
$ oc label namespace/prod purpose=productionCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
dev네임스페이스를 생성합니다.oc create namespace dev
$ oc create namespace devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
dev네임스페이스에 레이블을 지정합니다.oc label namespace/dev purpose=testing
$ oc label namespace/dev purpose=testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
dev네임스페이스에alpine이미지를 배포하고 쉘을 시작합니다.oc run test-$RANDOM --namespace=dev --rm -i -t --image=alpine -- sh
$ oc run test-$RANDOM --namespace=dev --rm -i -t --image=alpine -- shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 쉘에서 다음 명령을 실행하고 요청이 차단되었는지 확인합니다.
wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력
wget: download timed out
wget: download timed outCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
prod네임스페이스에alpine이미지를 배포하고 쉘을 시작합니다.oc run test-$RANDOM --namespace=prod --rm -i -t --image=alpine -- sh
$ oc run test-$RANDOM --namespace=prod --rm -i -t --image=alpine -- shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 쉘에서 다음 명령을 실행하고 요청이 허용되는지 확인합니다.
wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력
Copy to Clipboard Copied! Toggle word wrap Toggle overflow