8장. 빌드 시간 네트워크 정책 툴
빌드 시간 네트워크 정책 툴을 사용하면 roxctl
CLI를 사용하여 개발 및 작업 워크플로우에서 Kubernetes 네트워크 정책 생성 및 검증을 자동화할 수 있습니다. 이러한 툴은 프로젝트의 워크로드 및 네트워크 정책 매니페스트가 포함된 지정된 파일 디렉터리에서 작동하며 RHACS 인증이 필요하지 않습니다.
명령 | 설명 |
---|---|
| 지정된 디렉터리에서 프로젝트의 YAML 매니페스트를 분석하여 Kubernetes 네트워크 정책을 생성합니다. 자세한 내용은 빌드 시간 네트워크 정책 생성기 사용을 참조하십시오. |
|
워크로드 및 Kubernetes 네트워크 정책 매니페스트를 검사하여 프로젝트 디렉터리의 워크로드 간 허용된 연결을 나열합니다. 다양한 텍스트 형식 또는 그래픽 |
|
두 프로젝트 버전 간의 허용된 연결에서 변형 목록을 생성합니다. 이는 각 버전의 디렉터리의 워크로드 및 Kubernetes 네트워크 정책 매니페스트에 따라 결정됩니다. 이 기능은 소스 코드 (syntactic) |
8.1. 빌드 시간 네트워크 정책 생성기
빌드 시간 네트워크 정책 생성기는 애플리케이션 YAML 매니페스트를 기반으로 Kubernetes 네트워크 정책을 자동으로 생성할 수 있습니다. 이를 사용하여 클러스터에 애플리케이션을 배포하기 전에 CI/CD(Continuous Integration/continuous deployment) 파이프라인의 일부로 네트워크 정책을 개발할 수 있습니다.
Red Hat은 NP-Guard 프로젝트 의 개발자와 협력하여 이 기능을 개발했습니다. 먼저 빌드 타임 네트워크 정책 생성기는 서비스 매니페스트, 구성 맵, Pod
,Deployment
,ReplicaSet
,Job
,DaemonSet
, StatefulSet
과 같은 워크로드 매니페스트를 포함하여 로컬 폴더의 Kubernetes 매니페스트를 분석합니다. 그런 다음 필요한 연결을 검색하고 Pod 분리를 달성하는 Kubernetes 네트워크 정책을 생성합니다. 이러한 정책은 필요한 수신 및 송신 트래픽보다 더 많은 것을 허용하지 않습니다.
8.1.1. 빌드 시간 네트워크 정책 생성기 사용
build-time 네트워크 정책 생성기는 roxctl
CLI에 포함되어 있습니다. 빌드 시간 네트워크 정책 생성 기능의 경우 roxctl
CLI는 RHACS Central과 통신할 필요가 없으므로 모든 개발 환경에서 사용할 수 있습니다.
사전 요구 사항
-
빌드 시간 네트워크 정책 생성기는 명령을 실행할 때 지정하는 디렉터리를 재귀적으로 스캔합니다. 따라서 명령을 실행하기 전에
Pod
,Deployment
,ReplicaSet
,Job
,DaemonSet
,StatefulSet
과 같은 서비스 매니페스트, 구성 맵 및 워크로드 매니페스트가 지정된 디렉터리에 YAML 파일로 이미 있어야 합니다. -
kubectl apply -f
명령을 사용하여 이러한 YAML 파일을 적용할 수 있는지 확인합니다. 빌드 시간 네트워크 정책 생성기는 Helm 스타일 템플릿을 사용하는 파일에서는 작동하지 않습니다. 서비스 네트워크 주소가 하드 코딩되지 않았는지 확인합니다. 서비스에 연결해야 하는 모든 워크로드는 서비스 네트워크 주소를 변수로 지정해야 합니다. 워크로드의 리소스 환경 변수 또는 구성 맵을 사용하여 이 변수를 지정할 수 있습니다.
서비스 네트워크 주소는 다음과 같은 공식 정규식 패턴과 일치해야 합니다.
(http(s)?://)?<svc>(.<ns>(.svc.cluster.local)?)?(:<portNum>)? 1
- 1
- 이 패턴에서는,
- <svc>는 서비스 이름입니다.
- <NS>는 서비스를 정의한 네임스페이스입니다.
- <portNum>은 노출된 서비스 포트 번호입니다.
다음은 패턴과 일치하는 몇 가지 예입니다.
-
wordpress-mysql:3306
-
redis-follower.redis.svc.cluster.local:6379
-
redis-leader.redis
-
http://rating-service.
프로세스
help 명령을 실행하여 빌드 시간 네트워크 정책 생성 기능을 사용할 수 있는지 확인합니다.
$ roxctl netpol generate -h
netpol generate
명령을 사용하여 정책을 생성합니다.$ roxctl netpol generate <folder_path> [flags] 1
- 1
- 폴더 경로를 지정합니다. 분석을 위한 YAML 리소스가 포함된 하위 폴더가 포함될 수 있습니다. 명령은 전체 하위 폴더 트리를 검사합니다. 선택적으로 매개변수를 지정하여 명령의 동작을 변경할 수도 있습니다.
추가 리소스
다음 단계
- 정책을 생성한 후에는 YAML 파일에서 관련 네트워크 주소가 예상대로 지정되지 않은 경우 완전성 및 정확성을 검사해야 합니다.
-
가장 중요한 것은 격리 정책에 의해 필요한 연결이 차단되지 않았는지 확인하십시오. 이 검사를 돕기 위해
roxctl netpol 연결 맵
도구를 사용할 수 있습니다.
자동화를 사용하여 워크로드 배포의 일부로 클러스터에 네트워크 정책을 적용하여 시간을 단축하고 정확성을 보장합니다. 가져오기 요청을 사용하여 생성된 정책을 제출하여 GitOps 접근 방식을 따라 파이프라인의 일부로 배포하기 전에 팀에 정책을 검토할 수 있습니다.