4장. MutatingWebhookConfiguration [admissionregistration.k8s.io/v1]
- 설명
- MutatingWebhookConfiguration은 오브젝트를 수락하거나 변경할 수 있는 승인 Webhook 구성을 설명합니다.
- 유형
-
object
4.1. 사양
속성 | 유형 | 설명 |
---|---|---|
|
| APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 표준 오브젝트 메타데이터; 자세한 정보: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. | |
|
| Webhook는 Webhook 목록과 영향을 받는 리소스 및 작업입니다. |
|
| mutatingwebhook는 승인 Webhook와 적용되는 리소스 및 작업을 설명합니다. |
4.1.1. .webhooks
- 설명
- Webhook는 Webhook 목록과 영향을 받는 리소스 및 작업입니다.
- 유형
-
array
4.1.2. .webhooks[]
- 설명
- mutatingwebhook는 승인 Webhook와 적용되는 리소스 및 작업을 설명합니다.
- 유형
-
object
- 필수 항목
-
name
-
clientConfig
-
sideEffects
-
admissionReviewVersions
-
속성 | 유형 | 설명 |
---|---|---|
|
|
admissionReviewVersions는 Webhook에서 예상하는 기본 |
|
| WebhookClientConfig에는 Webhook와 TLS를 연결하는 정보가 포함되어 있습니다. |
|
| failurePolicy는 승인 끝점에서 인식할 수 없는 오류를 처리하는 방법을 정의합니다. 허용되는 값은 Ignore 또는 Fail입니다. 기본값은 Fail입니다.
가능한 enum 값: - |
|
| MatchConditions는 이 Webhook에 요청을 전송하려면 충족해야 하는 조건 목록입니다. 일치 조건은 규칙, namespaceSelector 및 objectSelector와 이미 일치하는 요청을 필터링합니다. 일치하는 matchConditions의 빈 목록은 모든 요청과 일치합니다. 허용되는 최대 64개의 일치 조건이 있습니다. 정확히 일치하는 논리는 (순차로) 1입니다. ANY matchCondition이 Cryostat로 평가되면 Webhook를 건너뜁니다. 2. ALL matchConditions가 TRUE로 평가되면 Webhook가 호출됩니다. 3. matchCondition이 오류로 평가되는 경우(없음) - failurePolicy=Fail이 없으면 요청을 거부합니다. 실패Policy=Ignore인 경우 오류가 무시되고 Webhook는 건너뜁니다. |
|
| MatchCondition은 Webhook로 요청을 전송하려면 충족되어야 하는 조건을 나타냅니다. |
|
| matchPolicy는 "rules" 목록을 사용하여 들어오는 요청과 일치하는 방법을 정의합니다. 허용되는 값은 "Exact" 또는 "Equivalent"입니다.
- exact: 지정된 규칙과 정확히 일치하는 경우에만 요청과 일치합니다. 예를 들어 apps/v1, apps/v1beta1 및 extensions/v1beta1을 통해 배포를 수정할 수 있지만 extensions/v1beta1이 포함되지만
- equivalent: 다른 API 그룹 또는 버전을 통해도 규칙에 나열된 리소스를 수정하는 경우 요청과 일치합니다. 예를 들어, apps/v1beta1을 통해 배포를 수정할 수 있고 extensions/v1beta1 및 extensions/v1beta1이 포함된 경우 기본값은 "Equivalent"입니다.
가능한 enum 값: - |
|
| 승인 Webhook의 이름입니다. name은 정규화된 값(예: imagepolicy.kubernetes.io)이어야 합니다. 여기서 "imagepolicy"는 웹 후크의 이름이며 kubernetes.io는 조직의 이름입니다. 필수 항목입니다. |
| 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는 오브젝트에 일치하는 라벨이 있는지 여부에 따라 Webhook를 실행할지 여부를 결정합니다. objectSelector는 Webhook로 전송되는 oldObject 및 newObject 모두에 대해 평가되며 오브젝트 중 하나와 선택기와 일치하는 경우 일치하는 것으로 간주됩니다. null 오브젝트(삭제의 경우oldObject 또는 newObject) 또는 라벨이 있을 수 없는 오브젝트(예: DeploymentRollback 또는 PodProxyOptions 오브젝트)는 일치하는 것으로 간주되지 않습니다. 최종 사용자는 레이블을 설정하여 승인 Webhook를 건너뛸 수 있으므로 Webhook가 옵트인인 경우에만 오브젝트 선택기를 사용합니다. 기본값은 모든 것과 일치하는 빈 LabelSelector입니다. | |
|
| reinvocationPolicy는 이 Webhook를 단일 승인 평가의 일부로 여러 번 호출해야 하는지 여부를 나타냅니다. 허용되는 값은 "Never" 및 "IfNeed"입니다. Never: Webhook는 단일 승인 평가에서 두 번 이상 호출되지 않습니다. IfNeed: 승인되는 오브젝트가 초기 웹 후크 호출 후 다른 승인 플러그인에 의해 수정되는 경우 Webhook는 승인 평가의 일부로 적어도 한 번 추가로 호출됩니다. 이 옵션을 지정하는 Webhook는 멱등 이어야 하며 이전에 승인한 오브젝트를 처리할 수 있어야 합니다. 참고: * 추가 호출 수는 정확히 1개일 수 없습니다. * 추가 호출으로 인해 오브젝트가 추가로 수정되는 경우 Webhook가 다시 호출되지 않습니다. * 이 옵션을 사용하는 Webhook는 추가 호출 수를 최소화하기 위해 다시 정렬할 수 있습니다. * 모든 변경 사항이 완료된 후 오브젝트를 검증하려면 대신 검증 승인 Webhook를 사용합니다. 기본값은 "Never"입니다.
가능한 enum 값: - |
|
| 규칙은 웹 후크가 관리하는 리소스/하위 리소스에 대한 작업을 설명합니다. Webhook는 규칙과 일치하는 경우 작업을 처리합니다. 그러나 ValidatingAdmissionWebhooks 및 MutatingAdmissionWebhooks가 플러그인을 완전히 비활성화하지 않고 클러스터를 복구할 수 없는 상태로 클러스터를 배치하지 않기 위해, ValidatingAdmissionWebhooks 및 MutatingAdmissionWebhooks는 ValidatingWebhookConfiguration 및 MutatingWebhookConfiguration 오브젝트에 대한 승인 요청 시 호출되지 않습니다. |
|
| RuleWithOperations는 작업 및 리소스의 튜플입니다. 모든 튜플 확장이 유효한지 확인하는 것이 좋습니다. |
|
| SideEffects는 이 Webhook에 부작용이 있는지 여부를 나타냅니다. 허용 가능한 값은 None, NoneOnDryRun (v1beta1을 통해 생성된webhooks도 일부 또는 알 수 없음)입니다. 부작용이 있는 Webhook는 승인 체인의 향후 단계에서 요청이 거부될 수 있으므로 조정 시스템을 구현해야 하며 따라서 해당 부작용은 취소해야 합니다. dryRun 속성이 있는 요청은 sideEffects == Unknown 또는 Some가 있는 Webhook와 일치하는 경우 자동으로 거부됩니다.
가능한 enum 값: - |
|
| timeoutSeconds는 이 Webhook의 시간 초과를 지정합니다. 시간 초과가 통과되면 Webhook 호출이 무시되거나 실패 정책에 따라 API 호출이 실패합니다. 시간 초과 값은 1초에서 30초 사이여야 합니다. 기본값은 10초입니다. |
4.1.3. .webhooks[].clientConfig
- 설명
- WebhookClientConfig에는 Webhook와 TLS를 연결하는 정보가 포함되어 있습니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
| ServiceReference에는 Service.legacy.k8s.io에 대한 참조가 있습니다. |
|
|
호스트로 스키마는 "https"여야 합니다. URL은 "https://"로 시작해야 합니다. 경로는 선택 사항이며, 존재하는 경우 URL에서 허용되는 모든 문자열이 될 수 있습니다. 경로를 사용하여 임의의 문자열을 Webhook에 전달할 수 있습니다(예: 클러스터 식별자). 사용자 또는 기본 인증(예: "user:password@")을 사용하려는 것은 허용되지 않습니다. 조각("#…") 및 쿼리 매개변수("?…")는 허용되지 않습니다. |
4.1.4. .webhooks[].clientConfig.service
- 설명
- ServiceReference에는 Service.legacy.k8s.io에 대한 참조가 있습니다.
- 유형
-
object
- 필수 항목
-
네임스페이스
-
name
-
속성 | 유형 | 설명 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
지정된 경우 Webhook를 호스팅하는 서비스의 포트입니다. 이전 버전과의 호환성을 위해 기본값은 443입니다. |
4.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
4.1.6. .webhooks[].matchConditions[]
- 설명
- MatchCondition은 Webhook로 요청을 전송하려면 충족되어야 하는 조건을 나타냅니다.
- 유형
-
object
- 필수 항목
-
name
-
expression
-
속성 | 유형 | 설명 |
---|---|---|
|
| 표현식은 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은 MatchConditions의 전략적 병합과 로깅 목적으로 식별자를 제공하는 데 사용되는 이 일치 조건의 식별자입니다. 적절한 이름은 관련 표현식을 설명해야 합니다. 이름은 영숫자, '-', '' 또는 '.'로 구성된 정규화된 이름이어야 하며 영숫자 문자로 시작하고 끝나야 합니다. 'MyName' 또는 'my.name' 또는 '123-abc', validation에 사용되는 regex는 '([A-Za-z0-9][-A-Za-z0-9]*)?[A-Za-z0-9]') 선택적 DNS 하위 도메인 접두사 및 '/'(예: 'example.com/MyName')입니다. 필수 항목입니다. |
4.1.7. .webhooks[].rules
- 설명
- 규칙은 웹 후크가 관리하는 리소스/하위 리소스에 대한 작업을 설명합니다. Webhook는 규칙과 일치하는 경우 작업을 처리합니다. 그러나 ValidatingAdmissionWebhooks 및 MutatingAdmissionWebhooks가 플러그인을 완전히 비활성화하지 않고 클러스터를 복구할 수 없는 상태로 클러스터를 배치하지 않기 위해, ValidatingAdmissionWebhooks 및 MutatingAdmissionWebhooks는 ValidatingWebhookConfiguration 및 MutatingWebhookConfiguration 오브젝트에 대한 승인 요청 시 호출되지 않습니다.
- 유형
-
array
4.1.8. .webhooks[].rules[]
- 설명
- RuleWithOperations는 작업 및 리소스의 튜플입니다. 모든 튜플 확장이 유효한지 확인하는 것이 좋습니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| APIGroups는 리소스가 속한 API 그룹입니다. ''는 모든 그룹입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다. |
|
| APIVersions는 리소스가 속한 API 버전입니다. ''는 모든 버전입니다. ''이 있는 경우 슬라이스 길이는 하나여야 합니다. 필수 항목입니다. |
|
| 작업은 승인 후크가 모든 작업 및 추가된 향후 승인 작업에 대해 - CREATE, UPDATE, DELETE, CONNECT 또는 *에 대한 관심 있는 작업입니다. '*'가 있는 경우 슬라이스의 길이는 하나여야 합니다. 필수 항목입니다. |
|
| 리소스는 이 규칙이 적용되는 리소스 목록입니다. 예를 들어 'pods'는 Pod를 의미합니다. 'pods/log'는 Pod의 로그 하위 리소스를의미합니다. 'pods/'는 모든 리소스를 의미하지만 하위 리소스는 아닙니다. 'pods/'는 Pod의 모든 하위 리소스를의미합니다. '/*'는 모든 스케일 하위 리소스를 의미합니다./*는 모든 리소스 및 해당 하위 리소스를 의미합니다. 와일드카드가 있는 경우 검증 규칙은 리소스가 서로 겹치지 않도록 합니다. enclosing 오브젝트에 따라 하위 리소스가 허용되지 않을 수 있습니다. 필수 항목입니다. |
|
| scope는 이 규칙의 범위를 지정합니다. 유효한 값은 "Cluster", "Namespaced", "" "Cluster"는 클러스터 범위 리소스만 이 규칙과 일치함을 의미합니다. 네임스페이스 API 오브젝트는 클러스터 범위입니다. "네임스페이스됨"은 네임스페이스가 지정된 리소스만 이 규칙과 일치함을 의미합니다. ""은 범위 제한이 없음을 의미합니다. 하위 리소스는 상위 리소스의 범위와 일치합니다. 기본값은 "*"입니다. |