4개의 쿠버네티스 정책(Policy) 타입(2023.03.23)
https://www.cncf.io/blog/2023/03/23/the-4-kubernetes-policy-types/
한줄 요약: 4개의 정책을 간략하게 소개했으며, 정확히 이해하게 위해서는 실습이 꼭 필요함
관련 무료 이북: https://info.nirmata.com/guide-kubernetes-policy-governance-management
이 문서는 기계 번역 후에 일부 내용만 다듬었으므로, 보다 정확한 이해를 위해서는 원문을 보는 것이 좋습니다.
2023년 3월 23일에 게시됨 (Link)
짐 부그와디아가 Nirmata 블로그에 처음 게시한 게스트 게시물
소개
쿠버네티스에서 정책은 다른 구성 또는 런타임 동작을 제어하는 특수한 유형의 구성 리소스입니다. 예를 들어, 간단한 정책 선언은 "HTTP(암호화되지 않은) 엔드포인트는 허용되지 않음"일 수 있습니다.
쿠버네티스는 여러 유형의 정책을 구성할 수 있습니다. 이 포스팅에서는 쿠버네티스에서 사용할 수 있는 네 가지 유형의 정책을 소개하고 그 사용 방법에 대한 지침을 제공합니다.
API 오브젝트 (API Objects)
쿠버네티스에는 정책 역할을 하고 다른 구성 및 런타임 동작을 제어하는 NetworkPolicies, Roles, ResourceQuotas, RBAC 구성 등과 같은 여러 API 오브젝트가 있다. 예를 들어 네트워크 정책(NetworkPolicies)은 애플리케이션에 허용되는 트래픽과 애플리케이션에서 허용되는 트래픽을 정의합니다.
어드미션 컨트롤러 (Admission Controllers)
쿠버네티스에는 API 서버에서 직접 작동하고 변경 및 유효성 검사를 위해 API 요청을 가로채는 어드미션 컨트롤러가 내장되어 있다. 예를 들어, 디폴트인그레스클래스 어드미션 컨트롤러는 API 요청을 변경하여 인그레스를 생성하고 지정된 인그레스 클래스가 없는 경우 기본 인그레스 클래스를 구성하는 데 사용할 수 있다. 기본 제공 어드미션 컨트롤러는 API 서버 -enable-admission-plugins 및 -disable-admission-plugins 플래그를 사용하여 활성화 또는 비활성화할 수 있습니다. 일부 기본 제공 입장 컨트롤러는 API 서버에 액세스할 수 있는 파일을 통해 추가 구성을 허용할 수 있습니다.
어드미션 정책 검증 (ValidatingAdmissionPolicy)
쿠버네티스 버전 1.26에는 공통 표현 언어(CEL)라는 언어를 사용하여 보다 유연한 어드미션 컨트롤 검사를 수행할 수 있는 알파 기능이 도입되었다. CEL 유효성 검사는 ValidatingAdmissionPolicy라는 새로운 리소스에 정의되어 있다. 이 기능은 알파 기능이므로 어드미션 정책 검증(validatingadmissionpolicy)을 위한 어드미션 컨트롤러와admissionregistration.k8s.io/v1alpha1 그룹/버전을 모두 사용하도록 설정해야 사용할 수 있습니다.
동적 어드미션 제어 (Dynamic Admission Controls)
쿠버네티스는 기본 제공 어드미션 컨트롤러 외에도 별도의 프로세스에서 어드미션 제어 결정을 실행할 수 있다. 이러한 프로세스를 어드미션 웹훅이라고 한다. 이를 통해 사용자 정의 리소스를 사용하여 정책 아티팩트를 관리하는 Kyverno 및 OPA/Gatekeeper와 같은 CNCF 정책 엔진으로 API 서버를 확장할 수 있습니다.
어떤 쿠버네티스 정책 유형을 사용해야 하나요?
먼저 NetworkPolicies 및 RBAC 리소스와 같은 기본 제공 쿠버네티스 API 오브젝트를 학습하고 올바르게 사용하는 것이 중요하다.
기본 제공 어드미션 컨트롤러에 대해서도 알아두는 것이 중요합니다. 그러나 다양한 유형의 어드미션 컨트롤러를 언제 어떻게 사용해야 하는지 명확하지 않을 수 있다. 관리형 Kubernetes 서비스의 경우, 추가 구성에 필요한 API 서버 구성이나 파일을 변경하지 못할 수 있습니다. 따라서 API 서버를 구성할 수 있는 클러스터로 사용이 제한됩니다. 이러한 경우에도 API 서버를 다시 구성하는 것은 가동 중단 시간을 유발할 수 있는 작업이며 정책을 활성화하고 적용하는 가장 유연한 방법이 아닙니다.
ValidatingAdmissionPolicy는 공통 표현식 언어(CEL)를 사용하여 사용자 지정 검사를 작성할 수 있으므로 더 유연합니다. 이러한 유효성 검사는 API 서버에서 직접 실행되므로 정책 적용을 위해 별도의 고가용성(HA) 워크로드를 유지해야 하는 복잡성을 피할 수 있습니다. 그러나 이 기능은 현재 알파 단계의 기능이며 네임스페이스 레이블과 같은 몇 가지 다른 매개변수에 대한 조회와 함께 API 요청 내의 데이터에 대한 기본적인 유효성 검사만 지원합니다. 추가 API 서버 또는 외부 서비스 호출은 지원되지 않습니다. 또한 현재 돌연변이 규칙, 규칙 생성, 정리 정책과 같은 다른 정책 유형은 지원되지 않습니다. 또한 보고 및 백그라운드 스캔도 지원되지 않습니다.
어드미션 웹훅(Admission webhooks)과 Kyverno 및 OPA/Gatekeeper와 같은 정책 엔진은 API 요청을 가로채고 정책을 적용하기 위해 고가용성 워크로드를 관리해야 하므로 운영상 문제가 될 수 있으며 다른 중요한 워크로드와 마찬가지로 신중한 관리가 필요합니다. 이러한 엔진의 장점은 데이터 기반 정책 결정을 위해 유연한 API 서버 및 외부 서비스 조회를 통해 복잡한 유효성 검사를 수행할 수 있다는 점입니다. 유효성 검사 외에도 Kyverno와 같은 정책 엔진은 변이, 생성, 이미지 검증, 정리 정책도 제공합니다. 또한, 정책 엔진은 승인 제어에서 정책을 실행하는 것 외에도 명령줄 인터페이스를 통해 CI/CD 파이프라인에서 실행할 수 있습니다. 보고를 위해, Kyverno와 같은 엔진은 Kubernetes API 서버 리소스로 쉽게 사용할 수 있는 정책 보고서도 생성합니다.
결론
확장성과 다재다능함으로 인해 Kubernetes는 플랫폼 구축을 위한 플랫폼으로 널리 사용되고 있습니다. 정책은 적절한 Kubernetes 운영을 위해 매우 중요하며, 플랫폼 엔지니어링 팀이 필요한 가드레일을 제공할 수 있도록 해줍니다.
다른 중요한 구성 요소와 마찬가지로, Kubernetes는 정책 관리를 위한 많은 유연성과 선택권을 제공합니다. 미션 크리티컬 워크로드가 있는 프로덕션 클러스터의 경우, 네 가지 Kubernetes 정책 유형이 모두 사용될 가능성이 높습니다.
네 가지 Kubernetes 정책 유형에 대한 심층적인 비교를 포함하여 Kubernetes 정책 및 거버넌스에 대해 자세히 알아보려면 새로운 전자책 무료 사본을 받아보세요: Kubernetes를 위한 정책 기반 거버넌스, 보안 및 규정 준수를 위한 궁극의 가이드.
Last updated
Was this helpful?