5.5. Gatekeeper 제약 조건 및 제약 조건 템플릿 통합


Gatekeeper 정책을 생성하려면 ConstraintTemplates 및 제약 조건을 사용합니다. 정책 리소스의 policy-templates 에 템플릿 및 제약 조건을 추가합니다. Red Hat Advanced Cluster Management 정책에서 Gatekeeper 제약 조건을 사용하는 다음 YAML 예제를 확인합니다.

  • ConstraintTemplates 및 제약 조건: Gatekeeper 제약 조건 및 Gatekeeper 감사 결과 집계에 Red Hat Advanced Cluster Management 정책을 사용하여 Gatekeeper 통합 기능을 사용합니다. 다음 예제에서는 Gatekeeper ConstraintTemplate 및 제약 조건(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 : Red Hat Advanced Cluster Management 정책 내에서 policy-gatekeeper-admission 구성 정책을 사용하여 Gatekeeper 승인 Webhook에서 거부하는 Kubernetes API 요청을 확인합니다. 다음 예제를 확인합니다.

    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
    1
    ConfigurationPolicy remediationAction 매개변수는 상위 정책의 remediationAction 으로 덮어씁니다.
    2
    Gatekeeper가 다른 경우 실행 중인 실제 네임스페이스로 설정합니다.

5.5.1. 추가 리소스

자세한 내용은 다음 리소스를 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.