17.4. 다중 네트워크 정책 구성
클러스터 관리자는 SR-IOV(Single-Root I/O Virtualization), MAC Virtual Local Area Network(MacVLAN) 또는 OVN-Kubernetes 추가 네트워크에 대한 다중 네트워크 정책을 구성할 수 있습니다. macvlan 추가 네트워크가 완전히 지원됩니다. IPVLAN(Virtual Local Area Network)과 같은 기타 유형의 추가 네트워크는 지원되지 않습니다.
SR-IOV 추가 네트워크에 대한 다중 네트워크 정책 구성 지원은 커널 NIC(네트워크 인터페이스 컨트롤러)에서만 지원됩니다. DPDK(Data Plane Development Kit) 애플리케이션에는 SR-IOV가 지원되지 않습니다.
17.4.1. 다중 네트워크 정책과 네트워크 정책의 차이점 링크 복사링크가 클립보드에 복사되었습니다!
MultiNetworkPolicy
API는 NetworkPolicy
API를 구현하지만 다음과 같은 몇 가지 중요한 차이점이 있습니다.
MultiNetworkPolicy
API를 사용해야 합니다.apiVersion: k8s.cni.cncf.io/v1beta1 kind: MultiNetworkPolicy
apiVersion: k8s.cni.cncf.io/v1beta1 kind: MultiNetworkPolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
CLI를 사용하여 다중 네트워크 정책과 상호 작용할 때
multi-networkpolicy
리소스 이름을 사용해야 합니다. 예를 들어oc get multi-networkpolicy <name>
명령을 사용하여 다중 네트워크 정책 오브젝트를 볼 수 있습니다. 여기서<name>
은 다중 네트워크 정책의 이름입니다. MultiNetworkPolicy
오브젝트에서k8s.v1.cni.cncf.io/policy-for
주석을 사용하여NetworkAttachmentDefinition
(NAD) 사용자 정의 리소스(CR)를 가리킬 수 있습니다. CryostatD CR은 정책이 적용되는 네트워크를 정의합니다.k8s.v1.cni.cncf.io/policy-for
주석을 포함하는 다중 네트워크 정책의 예apiVersion: k8s.cni.cncf.io/v1beta1 kind: MultiNetworkPolicy metadata: annotations: k8s.v1.cni.cncf.io/policy-for:<namespace_name>/<network_name>
apiVersion: k8s.cni.cncf.io/v1beta1 kind: MultiNetworkPolicy metadata: annotations: k8s.v1.cni.cncf.io/policy-for:<namespace_name>/<network_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<namespace_name>
- 네임스페이스 이름을 지정합니다.
<network_name>
- 네트워크 연결 정의의 이름을 지정합니다.
17.4.2. 클러스터의 다중 네트워크 정책 활성화 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 클러스터에서 다중 네트워크 정책 지원을 활성화할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인합니다.
프로세스
다음 YAML을 사용하여
multinetwork-enable-patch.yaml
파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다중 네트워크 정책을 활성화하도록 클러스터를 구성합니다. 성공적인 출력에는 정책 오브젝트의 이름과
패치
된 상태가 나열됩니다.oc patch network.operator.openshift.io cluster --type=merge --patch-file=multinetwork-enable-patch.yaml
$ oc patch network.operator.openshift.io cluster --type=merge --patch-file=multinetwork-enable-patch.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.3. IPv6 네트워크에서 다중 네트워크 정책 지원 링크 복사링크가 클립보드에 복사되었습니다!
ICMPv6 NDP( Neighbor Discovery Protocol)는 장치가 주변 노드에 대한 정보를 검색하고 유지할 수 있도록 하는 메시지 및 프로세스 집합입니다. NDP는 IPv6 네트워크에서 중요한 역할을 하며 동일한 링크의 장치 간 상호 작용을 지원합니다.
CNO(Cluster Network Operator)는 useMultiNetworkPolicy
매개변수가 true
로 설정된 경우 다중 네트워크 정책의 iptables 구현을 배포합니다.
IPv6 네트워크에서 다중 네트워크 정책을 지원하기 위해 Cluster Network Operator는 다중 네트워크 정책의 영향을 받는 모든 Pod에 다음 규칙 세트를 배포합니다.
다중 네트워크 정책 사용자 정의 규칙
사전 정의된 규칙은 편집할 수 없습니다.
이러한 규칙은 IPv6 환경의 주소 확인 및 라우터 통신을 포함하여 올바른 네트워크 기능을 위해 필수 ICMPv6 트래픽을 집합적으로 활성화합니다. 이러한 규칙과 트래픽을 거부하는 다중 네트워크 정책에서는 애플리케이션에 연결 문제가 발생하지 않습니다.
17.4.4. 다중 네트워크 정책 작업 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 다중 네트워크 정책을 생성, 편집, 보기 및 삭제할 수 있습니다.
17.4.4.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 클러스터에 대한 다중 네트워크 정책 지원을 활성화했습니다.
17.4.4.2. CLI를 사용하여 다중 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터의 네임스페이스에서 허용된 수신 또는 송신 네트워크 트래픽을 설명하는 세분화된 규칙을 정의하기 위해 다중 네트워크 정책을 생성할 수 있습니다.
사전 요구 사항
-
클러스터는
mode:
로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인했습니다. - 다중 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
다음과 같이 정책 규칙을 생성합니다.
<policy_name>.yaml
파일을 생성합니다.touch <policy_name>.yaml
$ touch <policy_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<policy_name>
- 다중 네트워크 정책 파일 이름을 지정합니다.
방금 만든 파일에서 다음 예와 같이 다중 네트워크 정책을 정의합니다.
모든 네임스페이스의 모든 Pod에서 수신 거부
이는 다른 네트워크 정책 구성에서 허용하는 포드 간 트래픽 이외의 모든 교차 포드 네트워킹을 차단하는 기본 정책입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<network_name>
- 네트워크 연결 정의의 이름을 지정합니다.
동일한 네임 스페이스에 있는 모든 Pod의 수신 허용
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<network_name>
- 네트워크 연결 정의의 이름을 지정합니다.
특정 네임스페이스에서 하나의 Pod로 수신 트래픽 허용
이 정책을 사용하면
namespace-y
에서 실행되는 Pod의pod-a
레이블이 있는 Pod로의 트래픽을 허용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<network_name>
- 네트워크 연결 정의의 이름을 지정합니다.
서비스로 트래픽 제한
이 정책을 적용하면
app=bookstore
및role=api
레이블이 모두 있는 모든 Pod는app=bookstore
레이블이 있는 Pod에서만 액세스할 수 있습니다. 이 예에서 애플리케이션은app=bookstore
및role=api
레이블이 있는 REST API 서버일 수 있습니다.이 예제에서는 다음 사용 사례를 해결합니다.
- 서비스에 대한 트래픽을 사용해야 하는 다른 마이크로 서비스로만 제한합니다.
애플리케이션을 사용하는 애플리케이션만 허용하도록 데이터베이스에 대한 연결을 제한합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<network_name>
- 네트워크 연결 정의의 이름을 지정합니다.
다중 네트워크 정책 오브젝트를 생성하려면 다음 명령을 입력합니다. 성공적인 출력에는 정책 오브젝트의 이름과
생성된
상태가 나열됩니다.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>
- 선택적 매개변수입니다. 현재 네임스페이스와 다른 네임스페이스에 오브젝트를 정의한 경우 매개변수는 네임스페이스를 지정합니다.
성공적인 출력에는 정책 오브젝트의 이름과
생성된
상태가 나열됩니다.
cluster-admin
권한을 사용하여 웹 콘솔에 로그인하는 경우 클러스터의 모든 네임스페이스에서 직접 또는 웹 콘솔의 양식에서 네트워크 정책을 생성할 수 있습니다.
17.4.4.3. 다중 네트워크 정책 편집 링크 복사링크가 클립보드에 복사되었습니다!
네임스페이스에서 다중 네트워크 정책을 편집할 수 있습니다.
사전 요구 사항
-
클러스터는
mode:
로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인합니다. - 다중 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
선택 사항: 네임스페이스의 다중 네트워크 정책 오브젝트를 나열하려면 다음 명령을 입력합니다.
oc get multi-networkpolicy
$ oc get multi-networkpolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<namespace>
- 선택 사항: 오브젝트가 현재 네임스페이스와 다른 네임스페이스에 정의된 경우 이를 사용하여 네임스페이스를 지정합니다.
다중 네트워크 정책 오브젝트를 편집합니다.
다중 네트워크 정책 정의를 파일에 저장한 경우 파일을 편집하고 필요한 사항을 변경한 후 다음 명령을 입력합니다.
oc apply -n <namespace> -f <policy_file>.yaml
$ oc apply -n <namespace> -f <policy_file>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<namespace>
- 선택 사항: 오브젝트가 현재 네임스페이스와 다른 네임스페이스에 정의된 경우 이를 사용하여 네임스페이스를 지정합니다.
<policy_file>
- 네트워크 정책이 포함된 파일의 이름을 지정합니다.
다중 네트워크 정책 오브젝트를 직접 업데이트해야 하는 경우 다음 명령을 입력합니다.
oc edit multi-networkpolicy <policy_name> -n <namespace>
$ oc edit multi-networkpolicy <policy_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<policy_name>
- 네트워크 정책의 이름을 지정합니다.
<namespace>
- 선택 사항: 오브젝트가 현재 네임스페이스와 다른 네임스페이스에 정의된 경우 이를 사용하여 네임스페이스를 지정합니다.
다중 네트워크 정책 오브젝트가 업데이트되었는지 확인합니다.
oc describe multi-networkpolicy <policy_name> -n <namespace>
$ oc describe multi-networkpolicy <policy_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<policy_name>
- 다중 네트워크 정책의 이름을 지정합니다.
<namespace>
- 선택 사항: 오브젝트가 현재 네임스페이스와 다른 네임스페이스에 정의된 경우 이를 사용하여 네임스페이스를 지정합니다.
cluster-admin
권한을 사용하여 웹 콘솔에 로그인하는 경우 Actions 메뉴를 통해 클러스터의 모든 네임스페이스에서 직접 또는 웹 콘솔의 정책에서 네트워크 정책을 편집할 수 있습니다.
17.4.4.4. CLI를 사용하여 다중 네트워크 정책 보기 링크 복사링크가 클립보드에 복사되었습니다!
네임스페이스에서 다중 네트워크 정책을 검사할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인합니다. - 다중 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
네임스페이스의 다중 네트워크 정책을 나열합니다.
네임스페이스에 정의된 다중 네트워크 정책 오브젝트를 보려면 다음 명령을 입력합니다.
oc get multi-networkpolicy
$ oc get multi-networkpolicy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 특정 다중 네트워크 정책을 검사하려면 다음 명령을 입력합니다.
oc describe multi-networkpolicy <policy_name> -n <namespace>
$ oc describe multi-networkpolicy <policy_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<policy_name>
- 검사할 다중 네트워크 정책의 이름을 지정합니다.
<namespace>
- 선택 사항: 오브젝트가 현재 네임스페이스와 다른 네임스페이스에 정의된 경우 이를 사용하여 네임스페이스를 지정합니다.
cluster-admin
권한을 사용하여 웹 콘솔에 로그인하는 경우 YAML 또는 웹 콘솔의 양식에서 클러스터의 모든 네임스페이스에서 네트워크 정책을 직접 볼 수 있습니다.
17.4.4.5. CLI를 사용하여 다중 네트워크 정책 삭제 링크 복사링크가 클립보드에 복사되었습니다!
네임스페이스에서 다중 네트워크 정책을 삭제할 수 있습니다.
사전 요구 사항
-
클러스터는
mode:
로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인했습니다. - 다중 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
다중 네트워크 정책 오브젝트를 삭제하려면 다음 명령을 입력합니다. 성공적인 출력에는 정책 오브젝트의 이름과
삭제된
상태가 나열됩니다.oc delete multi-networkpolicy <policy_name> -n <namespace>
$ oc delete multi-networkpolicy <policy_name> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<policy_name>
- 다중 네트워크 정책의 이름을 지정합니다.
<namespace>
- 선택적 매개변수입니다. 현재 네임스페이스와 다른 네임스페이스에 오브젝트를 정의한 경우 매개변수는 네임스페이스를 지정합니다.
성공적인 출력에는 정책 오브젝트의 이름과
삭제된
상태가 나열됩니다.
cluster-admin
권한을 사용하여 웹 콘솔에 로그인하는 경우, YAML에서 직접 또는 Actions 메뉴를 통해 웹 콘솔의 정책에서 클러스터의 모든 네임스페이스에서 네트워크 정책을 삭제할 수 있습니다.
17.4.4.6. 기본 거부 모든 다중 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 정책은 다른 배포된 네트워크 정책 및 호스트 네트워크 Pod 간 트래픽에서 허용하는 네트워크 트래픽 이외의 모든 포드 간 네트워킹을 차단합니다. 이 절차에서는 my
정책을 적용합니다.
-project
네임스페이스에 기본 거부 정책을 적용하여 강력한 거부
트래픽 통신을 허용하는 NetworkPolicy
CR(사용자 정의 리소스)을 구성하지 않으면 다음 정책으로 클러스터 전체에서 통신 문제가 발생할 수 있습니다.
사전 요구 사항
-
클러스터는
mode:
로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인했습니다. - 다중 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
모든 네임스페이스의 모든 포드의 수신을
거부하도록 기본
거부 정책을 정의하는 다음 YAML을 생성합니다. YAML을deny-by-default.yaml
파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 정책을 배포할 네임스페이스를 지정합니다. 예를 들어
my-project
네임스페이스는 다음과 같습니다. - 2
- 네임스페이스 프로젝트 이름 뒤에 네트워크 연결 정의 이름을 지정합니다.
- 3
- 이 필드가 비어 있으면 구성이 모든 Pod와 일치합니다. 따라서 정책은
my-project
네임스페이스의 모든 pod에 적용됩니다. - 4
NetworkPolicy
와 관련된 규칙 유형 목록을 지정합니다.- 5
Ingress
는policyTypes
만 지정합니다.- 6
수신
규칙을 지정합니다. 지정하지 않으면 들어오는 모든 트래픽이 모든 Pod로 삭제됩니다.
다음 명령을 입력하여 정책을 적용합니다. 성공적인 출력에는 정책 오브젝트의 이름과
생성된
상태가 나열됩니다.oc apply -f deny-by-default.yaml
$ oc apply -f deny-by-default.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공적인 출력에는 정책 오브젝트의 이름과
생성된
상태가 나열됩니다.
17.4.4.7. 외부 클라이언트의 트래픽을 허용하는 다중 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
기본 거부
정책을 배치하면 app=web
레이블이 있는 외부 클라이언트에서 Pod로의 트래픽을 허용하는 정책을 구성할 수 있습니다.
cluster-admin
역할을 가진 사용자로 로그인하면 클러스터의 모든 네임스페이스에 네트워크 정책을 생성할 수 있습니다.
다음 절차에 따라 공용 인터넷의 외부 서비스를 직접 또는 Load Balancer를 사용하여 Pod에 액세스하는 방식으로 허용하는 정책을 구성합니다. app=web
레이블이 있는 Pod에만 트래픽이 허용됩니다.
사전 요구 사항
-
클러스터는
mode:
로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공적인 출력에는 정책 오브젝트의 이름과
생성된
상태가 나열됩니다. 이 정책은 다음 다이어그램에 설명된 대로 외부 트래픽을 포함하여 모든 리소스의 트래픽을 허용합니다.
17.4.4.8. 모든 네임스페이스에서 애플리케이션으로의 트래픽을 허용하는 다중 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
cluster-admin
역할을 가진 사용자로 로그인하면 클러스터의 모든 네임스페이스에 네트워크 정책을 생성할 수 있습니다.
다음 절차에 따라 모든 네임스페이스의 모든 Pod에서 특정 애플리케이션으로의 트래픽을 허용하는 정책을 구성합니다.
사전 요구 사항
-
클러스터는
mode:
로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-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.yaml
Copy 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=80
Copy 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 -- sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 쉘에서 다음 명령을 실행하고 서비스에서 요청을 허용하는지 확인합니다.
wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.4.9. 네임스페이스에서 애플리케이션으로의 트래픽을 허용하는 다중 네트워크 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
cluster-admin
역할을 가진 사용자로 로그인하면 클러스터의 모든 네임스페이스에 네트워크 정책을 생성할 수 있습니다.
다음 절차에 따라 특정 네임스페이스의 app=web
레이블을 사용하여 Pod로의 트래픽을 허용하는 정책을 구성합니다. 다음을 위해 이 작업을 수행할 수 있습니다.
- 프로덕션 워크로드가 배포된 네임스페이스로만 트래픽을 프로덕션 데이터베이스로 제한합니다.
- 특정 네임스페이스에 배포된 모니터링 툴을 활성화하여 현재 네임스페이스에서 메트릭을 스크랩할 수 있습니다.
사전 요구 사항
-
클러스터는
mode:
로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은 NetworkPolicy 오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다.NetworkPolicy
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-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.yaml
Copy 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=80
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
prod
네임스페이스를 생성합니다.oc create namespace prod
$ oc create namespace prod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
prod
네임스페이스에 레이블을 지정합니다.oc label namespace/prod purpose=production
$ oc label namespace/prod purpose=production
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
dev
네임스페이스를 생성합니다.oc create namespace dev
$ oc create namespace dev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
dev
네임스페이스에 레이블을 지정합니다.oc label namespace/dev purpose=testing
$ oc label namespace/dev purpose=testing
Copy 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 -- sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 쉘에서 다음 명령을 실행하고 차단된 요청 이유를 확인합니다. 예를 들어 예상되는 출력 상태는
wget: download timed out
입니다.wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.default
Copy 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 -- sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 쉘에서 다음 명령을 실행하고 요청이 허용되는지 확인합니다.
wget -qO- --timeout=2 http://web.default
# wget -qO- --timeout=2 http://web.default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력
Copy to Clipboard Copied! Toggle word wrap Toggle overflow