5.6.7. Webhook 정의


Operator 작성자는 Webhook를 통해 리소스를 오브젝트 저장소에 저장하고 Operator 컨트롤러에서 이를 처리하기 전에 리소스를 가로채기, 수정, 수락 또는 거부할 수 있습니다. Operator와 함께 webhook 가 제공 될 때 OLM (Operator Lifecycle Manager)은 이러한 Webhook의 라이프 사이클을 관리할 수 있습니다.

Operator의 CSV(클러스터 서비스 버전) 리소스에는 다음 유형의 Webhook를 정의하는 webhookdefinitions 섹션을 포함할 수 있습니다.

  • 승인 Webhook(검증 및 변경)
  • 변환 Webhook

프로세스

  • Operator CSV의 spec 섹션에 webhookdefinitions 섹션을 추가하고 ValidatingAdmissionWebhook, MutatingAdmissionWebhook 또는 ConversionWebhook type을 사용하여 Webhook 정의를 포함합니다. 다음 예제에는 세 가지 유형의 Webhook가 모두 포함되어 있습니다.

    Webhook를 포함하는 CSV

      apiVersion: operators.coreos.com/v1alpha1
      kind: ClusterServiceVersion
      metadata:
        name: webhook-operator.v0.0.1
      spec:
        customresourcedefinitions:
          owned:
          - kind: WebhookTest
            name: webhooktests.webhook.operators.coreos.io 1
            version: v1
        install:
          spec:
            deployments:
            - name: webhook-operator-webhook
              ...
              ...
              ...
          strategy: deployment
        installModes:
        - supported: false
          type: OwnNamespace
        - supported: false
          type: SingleNamespace
        - supported: false
          type: MultiNamespace
        - supported: true
          type: AllNamespaces
        webhookdefinitions:
        - type: ValidatingAdmissionWebhook 2
          admissionReviewVersions:
          - v1beta1
          - v1
          containerPort: 443
          targetPort: 4343
          deploymentName: webhook-operator-webhook
          failurePolicy: Fail
          generateName: vwebhooktest.kb.io
          rules:
          - apiGroups:
            - webhook.operators.coreos.io
            apiVersions:
            - v1
            operations:
            - CREATE
            - UPDATE
            resources:
            - webhooktests
          sideEffects: None
          webhookPath: /validate-webhook-operators-coreos-io-v1-webhooktest
        - type: MutatingAdmissionWebhook 3
          admissionReviewVersions:
          - v1beta1
          - v1
          containerPort: 443
          targetPort: 4343
          deploymentName: webhook-operator-webhook
          failurePolicy: Fail
          generateName: mwebhooktest.kb.io
          rules:
          - apiGroups:
            - webhook.operators.coreos.io
            apiVersions:
            - v1
            operations:
            - CREATE
            - UPDATE
            resources:
            - webhooktests
          sideEffects: None
          webhookPath: /mutate-webhook-operators-coreos-io-v1-webhooktest
        - type: ConversionWebhook 4
          admissionReviewVersions:
          - v1beta1
          - v1
          containerPort: 443
          targetPort: 4343
          deploymentName: webhook-operator-webhook
          generateName: cwebhooktest.kb.io
          sideEffects: None
          webhookPath: /convert
          conversionCRDs:
          - webhooktests.webhook.operators.coreos.io 5
    ...

    1
    변환 Webhook에서 대상으로 하는 CRD는 여기에 있어야 합니다.
    2
    검증 승인 Webhook입니다.
    3
    변경 승인 Webhook.
    4
    변환 Webhook입니다.
    5
    각 CRD의 spec.PreserveUnknownFields 속성을 false 또는 nil로 설정해야 합니다.

5.6.7.1. OLM의 Webhook 고려 사항

OLM(Operator Lifecycle Manager)을 사용하여 Operator를 Webhook와 함께 배포할 때는 다음을 정의해야 합니다.

  • type 필드는 ValidatingAdmissionWebhook, MutatingAdmissionWebhook 또는 ConversionWebhook 중 하나로 설정해야 합니다. 그러지 않으면 CSV가 실패한 단계에 배치됩니다.
  • CSV에는 webhookdefinitiondeploymentName 필드에 제공된 값과 이름이 같은 배포가 포함되어야 합니다.

Webhook가 생성되면 OLM은 Operator가 배포된 Operator group과 일치하는 네임스페이스에서만 Webhook가 작동하는지 확인합니다.

인증 기관 제약 조건

OLM은 각 배포에 하나의 CA(인증 기관)를 제공하도록 구성되어 있습니다. 배포에 CA를 생성하고 마운트하는 논리는 원래 API 서비스 라이프사이클 논리에 사용되었습니다. 결과는 다음과 같습니다.

  • TLS 인증서 파일이 배포에 마운트됩니다(/apiserver.local.config/certificates/apiserver.crt).
  • TLS 키 파일이 배포에 마운트됩니다(/apiserver.local.config/certificates/apiserver.key).
승인 Webhook 규칙 제약 조건

Operator에서 클러스터를 복구할 수 없는 상태로 구성하는 것을 방지하기 위해 OLM은 승인 Webhook에 정의된 규칙에서 다음 요청을 가로채는 경우 CSV를 실패한 단계에 배치합니다.

  • 모든 그룹을 대상으로 하는 요청
  • operators.coreos.com 그룹을 대상으로 하는 요청
  • ValidatingWebhookConfigurations 또는 MutatingWebhookConfigurations 리소스를 대상으로 하는 요청
변환 Webhook 제약 조건

OLM은 변환 Webhook 정의가 다음 제약 조건을 준수하지 않는 경우 CSV를 실패한 단계에 배치합니다.

  • 변환 Webhook가 있는 CSV는 AllNamespaces 설치 모드만 지원할 수 있습니다.
  • 변환 Webhook에서 대상으로 하는 CRD는 spec.preserveUnknownFields 필드가 false 또는 nil로 설정되어 있어야 합니다.
  • CSV에 정의된 변환 Webhook는 고유한 CRD를 대상으로 해야 합니다.
  • 지정된 CRD의 전체 클러스터에는 하나의 변환 Webhook만 있을 수 있습니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.