매치 리소스
매치 리소스 (MatchResources)
이 페이지는 객체가 매치 기준을 충족하는지에 따라 admission 제어 정책을 실행할지 여부를 결정하는 MatchResources 객체를 설명해요. 제외 규칙이 포함 규칙보다 우선 적용되는 구조체랍니다.
본문
MatchResources는 객체가 매치 기준을 충족하는지 여부를 기반으로 해당 객체에 admission 제어 정책을 실행할지를 결정합니다. 제외 규칙이 포함 규칙보다 우선합니다(리소스가 둘 다 매치되면 제외됩니다).
apiVersion: admissionregistration.k8s.io/v1
import "k8s.io/api/admissionregistration/v1"
MatchResources
MatchResources는 객체가 매치 기준을 충족하는지 여부를 기반으로 해당 객체에 admission 제어 정책을 실행할지를 결정합니다. 제외 규칙이 포함 규칙보다 우선합니다(리소스가 둘 다 매치되면 제외됩니다).
| Field | Description |
|---|---|
excludeResourceRules |
|
| NamedRuleWithOperations array | excludeResourceRules는 ValidatingAdmissionPolicy가 신경 쓰지 않아야 하는 리소스/하위 리소스에 대한 작업을 설명합니다. 제외 규칙이 포함 규칙보다 우선합니다(리소스가 둘 다 매치되면 제외됩니다). |
matchPolicy |
|
| string | matchPolicy는 "MatchResources" 목록이 들어오는 요청을 매치하는 방법을 정의합니다. 허용되는 값은 "Exact" 또는 "Equivalent"입니다. - Exact: 요청이 지정된 규칙과 정확히 일치하는 경우에만 매치합니다. 예를 들어, deployments가 apps/v1, apps/v1beta1, extensions/v1beta1로 수정될 수 있지만 "rules"에 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]만 포함된 경우, apps/v1beta1나 extensions/v1beta1로의 요청은 ValidatingAdmissionPolicy로 전송되지 않습니다. - Equivalent: 요청이 다른 API 그룹이나 버전을 통해서라도 rules에 나열된 리소스를 수정하면 매치합니다. 예를 들어, deployments가 apps/v1, apps/v1beta1, extensions/v1beta1로 수정될 수 있고 "rules"에 apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]만 포함된 경우, apps/v1beta1나 extensions/v1beta1로의 요청은 apps/v1로 변환되어 ValidatingAdmissionPolicy로 전송됩니다. 기본값은 "Equivalent"입니다. |
가능한 enum 값:
"Equivalent"는 요청이 다른 API 그룹이나 버전을 통해 rules에 나열된 리소스를 수정하면 webhook에 전송되어야 함을 의미합니다."Exact"는 요청이 주어진 규칙과 정확히 일치하는 경우에만 webhook에 전송되어야 함을 의미합니다. | |namespaceSelectorLabelSelector | namespaceSelector는 해당 객체의 네임스페이스가 셀렉터와 일치하는지에 따라 admission 제어 정책을 객체에 실행할지 결정합니다. 객체 자체가 네임스페이스인 경우 일치는 object.metadata.labels에 대해 수행됩니다. 객체가 다른 클러스터 범위 리소스인 경우 정책을 건너뛰지 않습니다. 예를 들어, "runlevel"이 "0" 또는 "1"이 아닌 네임스페이스와 연결되지 않은 모든 객체에 webhook을 실행하려면 셀렉터를 다음과 같이 설정합니다: "namespaceSelector": { "matchExpressions": [ { "key": "runlevel", "operator": "NotIn", "values": [ "0", "1" ] } ] }. 반대로 "environment"가 "prod" 또는 "staging"인 네임스페이스와 연결된 객체에만 정책을 실행하려면 셀렉터를 다음과 같이 설정합니다: "namespaceSelector": { "matchExpressions": [ { "key": "environment", "operator": "In", "values": [ "prod", "staging" ] } ] }. 라벨 셀렉터에 대한 더 많은 예는 https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/를 참조하세요. 기본은 모든 것을 매치하는 빈 LabelSelector입니다. | |objectSelectorLabelSelector | objectSelector는 객체가 일치하는 라벨을 가지고 있는지에 따라 검증을 실행할지 결정합니다. objectSelector는 cel 검증으로 전송될 oldObject와 newObject 모두에 대해 평가되며, 둘 중 하나라도 셀렉터와 일치하면 매치된 것으로 간주합니다. null 객체(create의 경우 oldObject, delete의 경우 newObject) 또는 라벨을 가질 수 없는 객체(예: DeploymentRollback 또는 PodProxyOptions 객체)는 매치된 것으로 간주되지 않습니다. 최종 사용자가 라벨을 설정하여 admission webhook을 건너뛸 수 있으므로 webhook이 옵트인(opt-in)인 경우에만 object selector를 사용하세요. 기본은 모든 것을 매치하는 빈 LabelSelector입니다. | |resourceRulesNamedRuleWithOperations array | resourceRules는 ValidatingAdmissionPolicy가 매치하는 리소스/하위 리소스에 대한 작업을 설명합니다. 정책은 any 규칙과 일치하는 작업에 대해 관심을 가집니다. |