7장. ValidatingWebhookConfiguration [admissionregistration.k8s.io/v1]


설명
ValidatingWebhookConfiguration은 변경하지 않고 개체를 수락하거나 거부하는 승인 Webhook의 구성을 설명합니다.
유형
object

7.1. 사양

속성유형설명

apiVersion

string

APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

string

kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

메타데이터

ObjectMeta

표준 오브젝트 메타데이터; 자세한 정보: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.

Webhook

array

Webhook는 Webhook 목록과 영향을 받는 리소스 및 작업입니다.

webhooks[]

object

validatingwebhook는 승인 Webhook와 적용되는 리소스 및 작업을 설명합니다.

7.1.1. .webhooks

설명
Webhook는 Webhook 목록과 영향을 받는 리소스 및 작업입니다.
유형
array

7.1.2. .webhooks[]

설명
validatingwebhook는 승인 Webhook와 적용되는 리소스 및 작업을 설명합니다.
유형
object
필수 항목
  • name
  • clientConfig
  • sideEffects
  • admissionReviewVersions
속성유형설명

admissionReviewVersions

배열(문자열)

admissionReviewVersions는 Webhook에서 예상하는 기본 AdmissionReview 버전의 정렬된 목록입니다. API 서버는 지원하는 목록에서 첫 번째 버전을 사용하려고 합니다. API 서버에서 지원하는 이 목록에 지정된 버전이 없는 경우 이 오브젝트에 대한 검증이 실패합니다. 저장된 웹 후크 구성이 허용된 버전을 지정하고 API Server에 알려진 버전이 포함되지 않은 경우 Webhook에 대한 호출이 실패하고 실패 정책이 적용됩니다.

clientConfig

object

WebhookClientConfig에는 Webhook와 TLS를 연결하는 정보가 포함되어 있습니다.

failurePolicy

string

failurePolicy는 승인 끝점에서 인식할 수 없는 오류를 처리하는 방법을 정의합니다. 허용되는 값은 Ignore 또는 Fail입니다. 기본값은 Fail입니다.

가능한 enum 값: - "Fail" 은 Webhook를 호출하는 오류가 발생했음을 의미합니다. - "Ignore" 는 Webhook를 호출하는 오류가 무시됨을 의미합니다.

matchConditions

array

MatchConditions는 이 Webhook에 요청을 전송하려면 충족해야 하는 조건 목록입니다. 일치 조건은 규칙, namespaceSelector 및 objectSelector와 이미 일치하는 요청을 필터링합니다. 일치하는 matchConditions의 빈 목록은 모든 요청과 일치합니다. 허용되는 최대 64개의 일치 조건이 있습니다.

정확히 일치하는 논리는 (순차로) 1입니다. ANY matchCondition이 Cryostat로 평가되면 Webhook를 건너뜁니다. 2. ALL matchConditions가 TRUE로 평가되면 Webhook가 호출됩니다. 3. matchCondition이 오류로 평가되는 경우(없음) - failurePolicy=Fail이 없으면 요청을 거부합니다. 실패Policy=Ignore인 경우 오류가 무시되고 Webhook는 건너뜁니다.

matchConditions[]

object

MatchCondition은 Webhook로 요청을 전송하려면 충족되어야 하는 조건을 나타냅니다.

matchPolicy

string

matchPolicy는 "rules" 목록을 사용하여 들어오는 요청과 일치하는 방법을 정의합니다. 허용되는 값은 "Exact" 또는 "Equivalent"입니다.

- exact: 지정된 규칙과 정확히 일치하는 경우에만 요청과 일치합니다. 예를 들어 apps/v1, apps/v1beta1 및 extensions/v1beta1을 통해 배포를 수정할 수 있지만 extensions/v1beta1이 포함되지만 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"] ) 이면 apps/v1beta1 또는 extensions/v1beta1에 전송되지 않습니다.

- equivalent: 다른 API 그룹 또는 버전을 통해도 규칙에 나열된 리소스를 수정하는 경우 요청과 일치합니다. 예를 들어, apps/v1beta1을 통해 배포를 수정할 수 있고 extensions/v1beta1 및 extensions/v1beta1이 포함된 경우 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], apps/v1beta1 또는 extensions/v1beta1이 앱/v1beta1로 변환되고 Webhook로 전송됩니다.

기본값은 "Equivalent"입니다.

가능한 enum 값: - "동일한" 은 다른 API 그룹 또는 버전을 통해 규칙에 나열된 리소스를 수정하는 경우 요청이 Webhook로 전송되어야 함을 의미합니다. - "Exact" 은 지정된 규칙과 정확히 일치하는 경우에만 요청이 웹 후크로 전송되어야 함을 의미합니다.

name

string

승인 Webhook의 이름입니다. name은 정규화된 값(예: imagepolicy.kubernetes.io)이어야 합니다. 여기서 "imagepolicy"는 웹 후크의 이름이며 kubernetes.io는 조직의 이름입니다. 필수 항목입니다.

namespaceSelector

LabelSelector

namespaceSelector는 해당 오브젝트의 네임스페이스가 선택기와 일치하는지 여부에 따라 오브젝트에서 Webhook를 실행할지 여부를 결정합니다. 오브젝트 자체가 네임스페이스인 경우 object.metadata.labels에서 일치가 수행됩니다. 오브젝트가 다른 클러스터 범위 리소스인 경우 Webhook를 건너뛰지 않습니다.

예를 들어, 네임스페이스가 "0" 또는 "1"의 "runlevel" 또는 "1"과 연결되어 있지 않은 모든 오브젝트에 Webhook를 실행하려면 다음과 같이 선택기를 설정합니다. "namespaceSelector": { "matchExpressions": [ { "key": "runlevel", "operator": "NotIn", "NotIn", "values": [ "0", "1" ] }}

대신 네임스페이스가 "prod" 또는 "staging"의 "environment" 또는 "staging"과 연결된 오브젝트에서만 Webhook를 실행하려면 다음과 같이 선택기를 설정합니다. "namespaceSelector": { "matchExpressions": [ { "key": "environment", "operator": "In", "values": [ "prod", "staging" ] }}

라벨 선택기에 대한 자세한 내용은 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels 을 참조하십시오.

기본값은 모든 것과 일치하는 빈 LabelSelector입니다.

objectSelector

LabelSelector

ObjectSelector는 오브젝트에 일치하는 라벨이 있는지 여부에 따라 Webhook를 실행할지 여부를 결정합니다. objectSelector는 Webhook로 전송되는 oldObject 및 newObject 모두에 대해 평가되며 오브젝트 중 하나와 선택기와 일치하는 경우 일치하는 것으로 간주됩니다. null 오브젝트(삭제의 경우oldObject 또는 newObject) 또는 라벨이 있을 수 없는 오브젝트(예: DeploymentRollback 또는 PodProxyOptions 오브젝트)는 일치하는 것으로 간주되지 않습니다. 최종 사용자는 레이블을 설정하여 승인 Webhook를 건너뛸 수 있으므로 Webhook가 옵트인인 경우에만 오브젝트 선택기를 사용합니다. 기본값은 모든 것과 일치하는 빈 LabelSelector입니다.

규칙

array

규칙은 웹 후크가 관리하는 리소스/하위 리소스에 대한 작업을 설명합니다. Webhook는 규칙과 일치하는 경우 작업을 처리합니다. 그러나 ValidatingAdmissionWebhooks 및 MutatingAdmissionWebhooks가 플러그인을 완전히 비활성화하지 않고 클러스터를 복구할 수 없는 상태로 클러스터를 배치하지 않기 위해, ValidatingAdmissionWebhooks 및 MutatingAdmissionWebhooks는 ValidatingWebhookConfiguration 및 MutatingWebhookConfiguration 오브젝트에 대한 승인 요청 시 호출되지 않습니다.

rules[]

object

RuleWithOperations는 작업 및 리소스의 튜플입니다. 모든 튜플 확장이 유효한지 확인하는 것이 좋습니다.

sideEffects

string

SideEffects는 이 Webhook에 부작용이 있는지 여부를 나타냅니다. 허용 가능한 값은 None, NoneOnDryRun (v1beta1을 통해 생성된webhooks도 일부 또는 알 수 없음)입니다. 부작용이 있는 Webhook는 승인 체인의 향후 단계에서 요청이 거부될 수 있으므로 조정 시스템을 구현해야 하며 따라서 해당 부작용은 취소해야 합니다. dryRun 속성이 있는 요청은 sideEffects == Unknown 또는 Some가 있는 Webhook와 일치하는 경우 자동으로 거부됩니다.

가능한 enum 값: - "없음" 은 Webhook 호출에 부작용이 없음을 의미합니다. - "NoneOnDryRun" 은 웹 후크 호출에 부작용이 있을 수 있음을 의미합니다. 그러나 검토 중인 요청에 시험 실행 속성이 있는 경우 부작용이 비활성화됩니다. - "일부" 는 웹 후크를 호출하면 부작용이 발생할 수 있음을 의미합니다. 시험 실행 특성이 있는 요청이 이 Webhook에 대한 호출을 트리거하는 경우 요청이 대신 실패합니다. - "알 수 없음" 은 Webhook 호출의 부작용에 대해 알 수 없음을 의미합니다. 시험 실행 속성이 있는 요청이 이 웹 후크에 대한 호출을 트리거하면 대신 요청이 실패합니다.

timeoutSeconds

integer

timeoutSeconds는 이 Webhook의 시간 초과를 지정합니다. 시간 초과가 통과되면 Webhook 호출이 무시되거나 실패 정책에 따라 API 호출이 실패합니다. 시간 초과 값은 1초에서 30초 사이여야 합니다. 기본값은 10초입니다.

7.1.3. .webhooks[].clientConfig

설명
WebhookClientConfig에는 Webhook와 TLS를 연결하는 정보가 포함되어 있습니다.
유형
object
속성유형설명

cabundle

string

ca bundle은 웹 후크의 서버 인증서의 유효성을 검사하는 데 사용할 PEM 인코딩 CA 번들입니다. 지정되지 않은 경우 apiserver의 시스템 신뢰 루트가 사용됩니다.

서비스

object

ServiceReference에는 Service.legacy.k8s.io에 대한 참조가 있습니다.

url

string

URL 은 표준 URL 양식(scheme://host:port/path)으로 Webhook의 위치를 제공합니다. 정확히 하나의 URL 또는 서비스 중 하나를 지정해야 합니다.

호스트 는 클러스터에서 실행 중인 서비스를 참조해서는 안 됩니다. 대신 service 필드를 사용합니다. 호스트는 일부 apiserver에서 외부 DNS를 통해 확인될 수 있습니다(예: kube-apiserver 는 계층 위반이므로 클러스터 내 DNS를 확인할 수 없습니다). 호스트 는 IP 주소일 수도 있습니다.

호스트로 localhost 또는 127.0.0.1 을 사용하는 것은 이 Webhook에 호출해야 하는 apiserver를 실행하는 모든 호스트에서 이 Webhook를 제대로 실행하지 않는 한 위험할 수 있습니다. 이러한 설치는 부팅할 수 없습니다. 즉, 새 클러스터에서 쉽게 설치할 수 없습니다.

스키마는 "https"여야 합니다. URL은 "https://"로 시작해야 합니다.

경로는 선택 사항이며, 존재하는 경우 URL에서 허용되는 모든 문자열이 될 수 있습니다. 경로를 사용하여 임의의 문자열을 Webhook에 전달할 수 있습니다(예: 클러스터 식별자).

사용자 또는 기본 인증(예: "user:password@")을 사용하려는 것은 허용되지 않습니다. 조각("#…​") 및 쿼리 매개변수("?…​")는 허용되지 않습니다.

7.1.4. .webhooks[].clientConfig.service

설명
ServiceReference에는 Service.legacy.k8s.io에 대한 참조가 있습니다.
유형
object
필수 항목
  • 네임스페이스
  • name
속성유형설명

name

string

name 은 서비스의 이름입니다. 필수 항목

네임스페이스

string

네임스페이스 는 서비스의 네임스페이스입니다. 필수 항목

path

string

path 는 이 서비스에 대한 요청으로 전송되는 선택적 URL 경로입니다.

port

integer

지정된 경우 Webhook를 호스팅하는 서비스의 포트입니다. 이전 버전과의 호환성을 위해 기본값은 443입니다. 포트 는 유효한 포트 번호 (1-65535, 포함)여야 합니다.

7.1.5. .webhooks[].matchConditions

설명

MatchConditions는 이 Webhook에 요청을 전송하려면 충족해야 하는 조건 목록입니다. 일치 조건은 규칙, namespaceSelector 및 objectSelector와 이미 일치하는 요청을 필터링합니다. 일치하는 matchConditions의 빈 목록은 모든 요청과 일치합니다. 허용되는 최대 64개의 일치 조건이 있습니다.

정확히 일치하는 논리는 (순차로) 1입니다. ANY matchCondition이 Cryostat로 평가되면 Webhook를 건너뜁니다. 2. ALL matchConditions가 TRUE로 평가되면 Webhook가 호출됩니다. 3. matchCondition이 오류로 평가되는 경우(없음) - failurePolicy=Fail이 없으면 요청을 거부합니다. 실패Policy=Ignore인 경우 오류가 무시되고 Webhook는 건너뜁니다.

유형
array

7.1.6. .webhooks[].matchConditions[]

설명
MatchCondition은 Webhook로 요청을 전송하려면 충족되어야 하는 조건을 나타냅니다.
유형
object
필수 항목
  • name
  • expression
속성유형설명

expression

string

표현식은 CEL에 의해 평가될 표현식을 나타냅니다. bool로 평가해야 합니다. CEL 표현식은 CEL 변수로 구성된 AdmissionRequest 및 Authorizer의 콘텐츠에 액세스할 수 있습니다.

'object' - 들어오는 요청에서 오브젝트입니다. 값은 DELETE 요청에 대해 null입니다. 'oldObject' - 기존 오브젝트입니다. 값은 CREATE 요청에 대해 null입니다. 'request' - 승인 요청의 속성(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. 를 사용하여 요청의 주체(사용자 또는 서비스 계정)에 대한 권한 부여 검사를 수행할 수 있습니다. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' - 'authorizer'에서 구성하고 요청 리소스로 구성된 CEL 리소스Check를 참조하십시오. CEL에 대한 문서: https://kubernetes.io/docs/reference/using-api/cel/

필수 항목입니다.

name

string

name은 MatchConditions의 전략적 병합과 로깅 목적으로 식별자를 제공하는 데 사용되는 이 일치 조건의 식별자입니다. 적절한 이름은 관련 표현식을 설명해야 합니다. 이름은 영숫자, '-', '' 또는 '.'로 구성된 정규화된 이름이어야 하며 영숫자 문자로 시작하고 끝나야 합니다. 'MyName' 또는 'my.name' 또는 '123-abc', validation에 사용되는 regex는 '([A-Za-z0-9][-A-Za-z0-9]*)?[A-Za-z0-9]') 선택적 DNS 하위 도메인 접두사 및 '/'(예: 'example.com/MyName')입니다.

필수 항목입니다.

7.1.7. .webhooks[].rules

설명
규칙은 웹 후크가 관리하는 리소스/하위 리소스에 대한 작업을 설명합니다. Webhook는 규칙과 일치하는 경우 작업을 처리합니다. 그러나 ValidatingAdmissionWebhooks 및 MutatingAdmissionWebhooks가 플러그인을 완전히 비활성화하지 않고 클러스터를 복구할 수 없는 상태로 클러스터를 배치하지 않기 위해, ValidatingAdmissionWebhooks 및 MutatingAdmissionWebhooks는 ValidatingWebhookConfiguration 및 MutatingWebhookConfiguration 오브젝트에 대한 승인 요청 시 호출되지 않습니다.
유형
array

7.1.8. .webhooks[].rules[]

설명
RuleWithOperations는 작업 및 리소스의 튜플입니다. 모든 튜플 확장이 유효한지 확인하는 것이 좋습니다.
유형
object
속성유형설명

apiGroups

배열(문자열)

APIGroups는 리소스가 속한 API 그룹입니다. ''는 모든 그룹입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다.

apiVersions

배열(문자열)

APIVersions는 리소스가 속한 API 버전입니다. ''는 모든 버전입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다.

작업

배열(문자열)

작업은 승인 후크가 모든 작업 및 추가된 향후 승인 작업에 대해 - CREATE, UPDATE, DELETE, CONNECT 또는 *에 대한 관심 있는 작업입니다. '*'가 있는 경우 슬라이스의 길이는 하나여야 합니다. 필수 항목입니다.

resources

배열(문자열)

리소스는 이 규칙이 적용되는 리소스 목록입니다.

예를 들어 'pods'는 Pod를 의미합니다. 'pods/log'는 Pod의 로그 하위 리소스를의미합니다. 'pods/'는 모든 리소스를 의미하지만 하위 리소스는 아닙니다. 'pods/'는 Pod의 모든 하위 리소스를의미합니다. '/*'는 모든 스케일 하위 리소스를 의미합니다./*는 모든 리소스 및 해당 하위 리소스를 의미합니다.

와일드카드가 있는 경우 검증 규칙은 리소스가 서로 겹치지 않도록 합니다.

enclosing 오브젝트에 따라 하위 리소스가 허용되지 않을 수 있습니다. 필수 항목입니다.

scope

string

scope는 이 규칙의 범위를 지정합니다. 유효한 값은 "Cluster", "Namespaced", "" "Cluster"는 클러스터 범위 리소스만 이 규칙과 일치함을 의미합니다. 네임스페이스 API 오브젝트는 클러스터 범위입니다. "네임스페이스됨"은 네임스페이스가 지정된 리소스만 이 규칙과 일치함을 의미합니다. ""은 범위 제한이 없음을 의미합니다. 하위 리소스는 상위 리소스의 범위와 일치합니다. 기본값은 "*"입니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.