Kyverno - K8s 클러스터 관리 단순화

Kubernetes의 목적은 생산에 사용할 수 있는 프로그램을 배치할 때 복잡성을 낮추는 것이다.그러나 용례가 늘어나면서 다른 모든 우수한 기술처럼 Kubernetes 집단을 관리하는 것 자체가 복잡한 임무가 되기 시작했다.나타나는 복잡성 중 하나는 관리 집단의 배치이다.K8s 클러스터 관리를 단순화하기 위해 Kyverno에 대해 말씀드리고 싶습니다.
우리 시작합시다!

케비노가 뭐예요?


Kyverno는 그리스어로'거버넌스'라는 뜻으로, 쿠베르네테스를 위한 정책 엔진이다.
그러나 무엇이 정책 엔진입니까?
Kubernetes는 네 가지 주요 유형policies이 있는데 그것이 바로 제한 범위, 자원 할당액,Pod 보안 정책과 프로세스 ID 제한과 보존이다.
정책 엔진의 기능을 이해하기 위해 Pod 보안 정책이 무엇인지 살펴보겠습니다.Pod 보안 정책은 공식 문서Kubernetes documentation에 다음과 같이 설명되어 있습니다.
"Pod 보안 정책은 클러스터 수준의 리소스로서 Pod 사양의 보안 중요도를 제어하는 데 사용됩니다.Pod 보안 정책은 Pod 생성 및 업데이트에 대한 세분화된 권한 부여를 지원합니다."
정책 엔진은 더 나아가 더 많은 옵션을 제공할 뿐만 아니라, 이 세분화 제어를 다른 Kubernetes 자원 이외의 POD로 확장할 수 있습니다.
간단하게 말하자면, Kyverno는 Kubernetes 자원을 검증하고 변이하며 생성할 수 있는 정책을 정의할 수 있습니다.
뭐가 더 멋있는지 알아요?
Kyverno는 YAML 파일을 작성하는 것과 같은 일반적인 성명 방법을 사용할 수 있습니다. Kubernetes 자원 정의와 비슷한 문법을 사용합니다.이것은 K8s 사용자가 학습 곡선이 거의 존재하지 않는다는 것을 의미한다.

왜 케비노야?


이제 Kyverno가 무엇인지 알게 되었으니, 왜 Kubernetes 집단을 관리하는 도전에 대처할 때, 이것은 매우 효과적인 도구인지 이해하기 시작할 수 있을 것 같다.Kyverno를 만드는 것은 K8s 클러스터에 구성된 유효성 검사 및/또는 모범 사례 구현을 단순화하기 위한 것입니다.
다른 정책 엔진 (예: Open policy Agent (OPA) 에 익숙한 사람들에게는 왜 Kyverno를 사용해야 하는지 알고 싶을 수도 있습니다.이유는 간단하다. 쿠베르네트의 본토 방법이다!
"잠깐만, 뭐?"
좀 더 자세히 설명해 드릴게요.Kubernetes와 합작하는 모든 사람들은 K8s가 YAML 파일을 작성하는 데 사용하는 간단한 성명 방법에 익숙하다. (아마도 좋아할 것이다.)Kyverno도 간단한 생각을 유지하고 YAML 파일을 작성해서 정책을 정의할 수 있다고 믿습니다.이것은 다른 엔진(예를 들어 OPA)과 대비된다. 왜냐하면 OPA는 레고를 배워야 하는데 레고는 상당히 긴 학습 곡선을 가지고 있기 때문이다.
한 마디로 하면, Kyverno는 학습과 사용이 쉽지만, 기능은 강력합니다!

Kyverno의 작동 방식


제가 기술적인 얘기를 해볼게요. Kyverno가 내부에서 어떻게 일을 하는지 보여드릴게요.키비노가 의지하는 것은 Kubernetes Admission Controllers이다.액세스 컨트롤러에 익숙하지 않은 경우 Kubernetes API 요청의 체크포인트로 간주할 수 있습니다.이러한 체크포인트에서 API 요청에 변이 및/또는 검증/차단이 발생할 수 있습니다.
Kubernetes는 몇 개의 내장된 접근 컨트롤러를 가지고 있지만 Kyverno와 관련된 두 개의 컨트롤러는 ValidatingAdmissionWebhooks MutatingAdmissionWebhooks 이다.이 두 접근 컨트롤러는 그룹 내에서 실행되는 서비스의 REST 노드 (즉 Kyverno) 에서 동작을 수신합니다.수신한 작업에 따라 필요에 따라 API 요청을 수정하거나 확인합니다.
전체 화면을 선명하게 하기 위해서 다음과 같이 생각할 수 있습니다. 위에서 언급한 두 개의 접근 컨트롤러가 API 요청을 받은 다음에 이 요청을 Kyverno에 보내고, 후자는 당신이 작성한 정책에 따라 무엇을 할 것인지 결정하고, 이 결정을 응답으로 이 컨트롤러에 보내고, 이 컨트롤러들은 실제적으로 필요한 조작을 실행합니다.

재미있죠?
더 재미있는 것은 네가 Kyreno에서 쓴 이 정책들이 aCustom Resource라는 것이다.익숙하지 않은 사람들에게 맞춤형 자원은 새로운 대상 유형을 도입함으로써 Kubernetes를 확장하는 방법이다.Kyverno가 kubectl explain 명령으로 만든 사용자 정의 자원 모드를 볼 수 있습니다.예를 들어, Kyverno 정책 모드를 보려면 다음을 실행할 수 있습니다.
kubectl explain policy.spec
맨 위에서 보면 Kyverno를 정책의 도움말 아래 Kubernetes 설정을 관리하는 도구로 볼 수 있습니다.이 정책들은 규칙을 설정하고 API 서버가 받은 요청을 검증할 수 있을 뿐만 아니라 요청의 일부분으로 전송된 Kubernetes 대상을 수정할 수 있습니다.이 모든 것은 익숙한 성명성 쿠베르네트스의 방식으로 일어났다.

언제 Kyverno를 사용해야 합니까


Kyverno의 단순성 때문에, 모든 크기의 그룹에서 사용할 수 있으며, 생활을 더욱 수월하게 할 수 있습니다.특히 많은 구성이 필요한 복잡한 클러스터에서 Kyverno가 빛을 발하는 것을 볼 수 있습니다.그룹에서 Kyverno 정책은 설정에 기본값을 제공하거나, 최선의 실천을 따르지 않는 자원을 잘못 만들지 않도록 도와줍니다.
이러한 모범 사례를 검토할 수 있는 정책 집합kyverno/policies이 저장소에 있습니다.이 밖에도 저장소에는 직접 사용할 수 있는 많은 유용한 정책이 있습니다!

누가 키비노를 가능하게 만들었는지


Kyverno는 Nirmata에 의해 개발되었고 클라우드 기반의 Kubernetes 관리 플랫폼을 제공합니다.Kubernetes 도입을 가속화하는 것이 목표입니다. 복잡한 설정을 관리하기 쉬울 때만 가능합니다.Kyverno는 2020년 11월 샌드박스 프로젝트Cloud Native Computing Foundation(CNCF)에 가입했다.CNCF의 일부가 된 것은 커뮤니티의 더 많은 참여와 Kyverno를 Kubernetes 설정을 관리하는 실제 방식으로 활용하는 데 한 걸음 더 나아간 것이다.

어디서 참여할 수 있습니까


Kyverno는 놀라운 점이 많지만, 나는 가장 좋은 것을 언급하는 것을 잊었다고 생각한다.
open-source!
아이디어나 건의가 있으면 Kyverno repo에서 관련 문제를 열 수 있습니다.당신은 Kyverno slack channel에 가입하여 관리자와 다른 Kyverno 커뮤니티 구성원과 채팅을 할 수 있습니다.당신도 우리의 어느 매달Kyverno community meetings에 가입할 수 있습니다!
Kyverno는 rapidly growing입니다. star the projectGitHub에서 다른 유용한 사람들과 공유할 수 있다면 감사하겠습니다:)
코드를 공헌하려면 저장소의 일부분"good first issues"부터 시작할 수 있습니다.Kyverno는 excellent documentation와 관리자와 다른 커뮤니티 구성원의 지원을 덧붙였기 때문에 궁금한 점이 있으면 언제든지 물어보세요!

좋은 웹페이지 즐겨찾기