6.3.2.2. CLI를 사용하여 네트워크 정책 만들기
클러스터의 네임스페이스에서 허용된 수신 또는 송신 네트워크 트래픽을 설명하는 세분화된 규칙을 정의하기 위해 네트워크 정책을 생성할 수 있습니다.
cluster-admin 역할로 사용자로 로그인하는 경우 클러스터의 모든 네임스페이스에서 네트워크 정책을 생성할 수 있습니다.
사전 요구 사항
-
클러스터는
mode: NetworkPolicy로 설정된 OVN-Kubernetes 네트워크 플러그인 또는 OpenShift SDN 네트워크 플러그인과 같은NetworkPolicy오브젝트를 지원하는 네트워크 플러그인을 사용합니다. 이 모드는 OpenShift SDN의 기본값입니다. -
OpenShift CLI(
oc)를 설치합니다. -
admin권한이 있는 사용자로 클러스터에 로그인했습니다. - 네트워크 정책이 적용되는 네임스페이스에서 작업하고 있습니다.
프로세스
정책 규칙을 생성합니다.
<policy_name>.yaml파일을 생성합니다.$ touch <policy_name>.yaml다음과 같습니다.
<policy_name>- 네트워크 정책 파일 이름을 지정합니다.
생성된 파일에 네트워크 정책을 정의합니다. 다음 예제에서는 모든 네임스페이스에 있는 모든 Pod의 수신 트래픽을 거부합니다. 이는 다른 네트워크 정책 구성에서 허용하는 포드 간 트래픽 이외의 모든 교차 포드 네트워킹을 차단하는 기본 정책입니다.
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 spec: podSelector: {} policyTypes: - Ingress ingress: []다음 예제 구성에서는 동일한 네임스페이스에 있는 모든 Pod의 수신 트래픽을 허용합니다.
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-same-namespace spec: podSelector: ingress: - from: - podSelector: {} # ...다음 예제에서는 특정 네임스페이스에서 하나의 Pod로 들어오는 트래픽을 허용합니다. 이 정책을 사용하면
namespace-y에서 실행되는 Pod의pod-a레이블이 있는 Pod로의 트래픽을 허용합니다.kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-traffic-pod spec: podSelector: matchLabels: pod: pod-a policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: namespace-y # ...다음 예제 구성은 트래픽을 서비스로 제한합니다. 이 정책을 적용하면
app=bookstore및role=api레이블이 모두 있는 모든 Pod는app=bookstore레이블이 있는 Pod에서만 액세스할 수 있습니다. 이 예에서 애플리케이션은app=bookstore및role=api레이블이 있는 REST API 서버일 수 있습니다.이 예제 구성은 다음 사용 사례를 해결합니다.
- 서비스에 대한 트래픽을 사용해야 하는 다른 마이크로 서비스로만 제한합니다.
애플리케이션을 사용하는 애플리케이션만 허용하도록 데이터베이스에 대한 연결을 제한합니다.
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: api-allow spec: podSelector: matchLabels: app: bookstore role: api ingress: - from: - podSelector: matchLabels: app: bookstore # ...
네트워크 정책 오브젝트를 생성하려면 다음 명령을 입력합니다. 성공적인 출력에는 정책 오브젝트의 이름과
생성된상태가 나열됩니다.$ oc apply -f <policy_name>.yaml -n <namespace>다음과 같습니다.
<policy_name>- 네트워크 정책 파일 이름을 지정합니다.
<namespace>- 선택적 매개변수입니다. 현재 네임스페이스와 다른 네임스페이스에 오브젝트를 정의한 경우 매개변수는 네임스페이스를 지정합니다.
성공적인 출력에는 정책 오브젝트의 이름과
생성된상태가 나열됩니다.참고cluster-admin권한을 사용하여 웹 콘솔에 로그인하는 경우 클러스터의 모든 네임스페이스에서 직접 또는 웹 콘솔의 양식에서 네트워크 정책을 생성할 수 있습니다.