5.5. Gatekeeper 제약 조건 및 제약 조건 템플릿 통합
Gatekeeper 정책을 생성하려면 ConstraintTemplates
및 제약 조건을 사용합니다. 정책
리소스의 policy-templates
에 템플릿 및 제약 조건을 추가합니다. Red Hat Advanced Cluster Management 정책에서 Gatekeeper 제약 조건을 사용하는 다음 YAML 예제를 확인합니다.
ConstraintTemplates
및 제약 조건: Gatekeeper 제약 조건 및 Gatekeeper 감사 결과 집계에 Red Hat Advanced Cluster Management 정책을 사용하여 Gatekeeper 통합 기능을 사용합니다. 다음 예제에서는 GatekeeperConstraintTemplate
및 제약 조건(K8sRequiredLabels
)을 정의하여 모든 네임스페이스에gatekeeper
라벨이 설정되어 있는지 확인합니다.apiVersion: policy.open-cluster-management.io/v1 kind: Policy metadata: name: require-gatekeeper-labels-on-ns spec: remediationAction: inform 1 disabled: false policy-templates: - objectDefinition: apiVersion: templates.gatekeeper.sh/v1beta1 kind: ConstraintTemplate metadata: name: k8srequiredlabels annotations: policy.open-cluster-management.io/severity: low 2 spec: crd: spec: names: kind: K8sRequiredLabels validation: openAPIV3Schema: properties: labels: type: array items: string targets: - target: admission.k8s.gatekeeper.sh rego: | package k8srequiredlabels violation[{"msg": msg, "details": {"missing_labels": missing}}] { provided := {label | input.review.object.metadata.labels[label]} required := {label | label := input.parameters.labels[_]} missing := required - provided count(missing) > 0 msg := sprintf("you must provide labels: %v", [missing]) } - objectDefinition: apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sRequiredLabels metadata: name: ns-must-have-gk annotations: policy.open-cluster-management.io/severity: low 3 spec: enforcementAction: dryrun match: kinds: - apiGroups: [""] kinds: ["Namespace"] parameters: labels: ["gatekeeper"]
- 1
remediationAction
이알리는
것으로 설정되어 있으므로 Gatekeeper 제약 조건의enforcementAction
필드가warn
로 재정의됩니다. 즉, Gatekeeper는 게이트키퍼
레이블이 누락된 네임스페이스 생성 또는 업데이트에 대해 탐지하고 경고합니다. 정책수정
을적용하도록 설정된 경우 Gatekeeper 제약 조건
시행
필드를거부하도록 덮어씁니다
. 이 컨텍스트에서 이 구성을 사용하면 모든 사용자가gatekeeper
레이블이 없는 네임스페이스를 생성하거나 업데이트할 수 없습니다.- 2 3
- 선택 사항: 각 Gatekeeper 제약 조건 또는 제약 조건 템플릿에 대해
policy.open-cluster-management.io/severity
주석의 심각도 값을 설정합니다. 유효한 값은 다른 Red Hat Advanced Cluster Management 정책 유형(낮음
,중간
,높음
또는 심각)과동일합니다
.
이전 정책에서는 다음과 같은 정책 상태 메시지를 수신할 수 있습니다.
warn - you must provide labels: {"gatekeeper"} (On Namespace default); warn - you must provide labels: {"gatekeeper"} (on Namespace gatekeeper-system)
. 정책에서 Gatekeeper 제약 조건 또는ConstraintTemplates
를 삭제하면 관리 클러스터에서 제약 조건 및ConstraintTemplates
도 삭제됩니다.콘솔에서 특정 관리 클러스터에 대한 Gatekeeper 감사 결과를 보려면 정책 템플릿 결과 페이지로 이동합니다. search가 활성화된 경우 감사에 실패한 Kubernetes 오브젝트의 YAML을 확인합니다.
참고:
- 관련 리소스 섹션은 Gatekeeper가 감사 결과를 생성하는 경우에만 사용할 수 있습니다.
- Gatekeeper 감사는 기본적으로 1분마다 실행됩니다. 관리 클러스터의 Red Hat Advanced Cluster Management 정책 상태에서 볼 수 있도록 감사 결과가 hub 클러스터로 다시 전송됩니다.
policy-gatekeeper-admission
apiVersion: policy.open-cluster-management.io/v1 kind: ConfigurationPolicy metadata: name: policy-gatekeeper-admission spec: remediationAction: inform 1 severity: low object-templates: - complianceType: mustnothave objectDefinition: apiVersion: v1 kind: Event metadata: namespace: openshift-gatekeeper-system 2 annotations: constraint_action: deny constraint_kind: K8sRequiredLabels constraint_name: ns-must-have-gk event_type: violation
5.5.1. 추가 리소스
자세한 내용은 다음 리소스를 참조하십시오.