全部產品
Search
文件中心

Container Service for Kubernetes:gatekeeper組件介紹和發布記錄

更新時間:Sep 26, 2024

gatekeeper組件可以協助您方便地管理和應用叢集內的Open Policy Agent(OPA)策略,實現命名空間標籤管理等功能。本文為您介紹gatekeeper組件的功能、使用說明和變更記錄。

組件介紹

Open Policy Agent(OPA)是一個開源的、通用的策略引擎,可以在整個堆棧中實現統一的、上下文感知的策略實施。gatekeeper組件可以管理和應用叢集內的Open Policy Agent(OPA)策略,實現命名空間標籤管理等功能。有關OPA的介紹,請參見Open Policy Agent。gatekeeper組件架構如下圖所示。

關於如何安裝gatekeeper組件,請參見管理組件

使用說明

本樣本將示範如何通過gatekeeper實現限制指定命名空間下建立的Pod必須包含一個名為gatekeeper-test-label的標籤,藉此展示gatekeeper的基本用法。更多gatekeeper的用法,請參見使用gatekeeper

  1. 執行以下命令,建立一個測試用的命名空間 test-gatekeeper,同時給命名空間增加name=test-gatekeeper標籤。

    kubectl create ns test-gatekeeper
    kubectl label ns test-gatekeeper name=test-gatekeeper
  2. 執行以下命令,建立一個檢查標籤的原則範本。

    kubectl apply -f - <<EOF
    apiVersion: templates.gatekeeper.sh/v1beta1
    kind: ConstraintTemplate
    metadata:
      name: k8srequiredlabels
    spec:
      crd:
        spec:
          names:
            kind: K8sRequiredLabels
          validation:
            openAPIV3Schema:
              properties:
                labels:
                  type: array
                  items:
                    type: 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])
            }
    EOF

    等待10秒左右,待gatekeeper完成原則範本初始化。

  3. 執行以下命令,建立一個原則範本的約束。

    這個約束將限制包含標籤name=test-gatekeeper的命名空間下建立的Pod必須包含名為gatekeeper-test-label的標籤。

    kubectl apply -f - <<EOF
    apiVersion: constraints.gatekeeper.sh/v1beta1
    kind: K8sRequiredLabels
    metadata:
      name: pod-must-have-gatekeeper-test-label
    spec:
      match:
        kinds:
          - apiGroups: [""]
            kinds: ["Pod"]
        namespaceSelector:
          matchExpressions:
          - key: name
            operator: In
            values: ["test-gatekeeper"]
      parameters:
        labels: ["gatekeeper-test-label"]
    
    EOF

    等待10秒左右,待gatekeeper完成約束的初始化。

  4. 驗證命名空間的約束效果。

    • 執行以下命令,在包含標籤name=test-gatekeeper的命名空間test-gatekeeper下建立一個不包含gatekeeper-test-label標籤的Pod。

      kubectl -n test-gatekeeper run test-deny --image=nginx --restart=Never

      預期輸出:

      Error from server ([denied by pod-must-have-gatekeeper-test-label] you must provide labels: {"gatekeeper-test-label"}): admission webhook "validation.gatekeeper.sh" denied the request: [denied by pod-must-have-gatekeeper-test-label] you must provide labels: {"gatekeeper-test-label"}

      可以看到,在包含標籤name=test-gatekeeper的命名空間test-gatekeeper下建立一個不包含gatekeeper-test-label標籤的Pod失敗。

    • 執行以下命令,在包含標籤name=test-gatekeeper的命名空間test-gatekeeper下建立一個包含gatekeeper-test-label標籤的Pod。

      kubectl -n test-gatekeeper run test-pass -l gatekeeper-test-label=pass --image=nginx --restart=Never

      預期輸出:

      pod/test-pass created

      可以看到,在包含標籤name=test-gatekeeper的命名空間test-gatekeeper下建立一個包含gatekeeper-test-label標籤的Pod成功。

    • 執行以下命令,在其他未配置約束的命名空間下建立一個不包含name=test-gatekeeper標籤的Pod。

      kubectl -n default run test-deny --image=nginx --restart=Never

      預期輸出:

      pod/test-deny created

      可以看到,在其他未配置約束的命名空間下建立一個不包含name=test-gatekeeper標籤的Pod成功。

    根據以上驗證,說明通過gatekeeper限制指定命名空間下建立的Pod必須包含一個名為gatekeeper-test-label的標籤成功。

變更記錄

2024年09月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.16.3.158-g5e73c0ad-aliyun

registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.16.3.158-g5e73c0ad-aliyun

2024年09月25日

當前處於灰階發布中。

升級組件依賴的OPA gatekeeper軟體版本至v3.16.3。關於v3.16.3 OPA gatekeeper的更多資訊,請參見Releases v3.16.3

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2024年03月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.15.1.150-g29b8b2a8-aliyun

registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.15.1.150-g29b8b2a8-aliyun

2024年03月27日

升級組件依賴的OPA gatekeeper軟體版本至v3.15.1。關於v3.15.1的OPA gatekeeper更多資訊,請參見Releases v3.15.1

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2023年10月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.12.0.138-g1ee37e37-aliyun

registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.12.0.138-g1ee37e37-aliyun

2023年10月09日

  • 升級組件依賴的OPA gatekeeper軟體版本至v3.12.0。關於v3.12.0的OPA gatekeeper更多資訊,請參見Releases v3.12.0

  • 新增支援對Service刪除事件編寫相應的策略。

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2023年04月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.10.0.130-g0e79597d-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.10.0.130-g0e79597d-aliyun

2023年04月18日

  • 升級組件依賴的OPA gatekeeper軟體版本至v3.10.0。關於v3.10.0的OPA gatekeeper更多資訊,請參見Releases v3.10.0

  • 預設禁用資料複製功能,您可以在組件管理頁面自助啟用。關於資料複製功能的更多資訊,請參見Replicating Data

  • 新增支援對命名空間刪除事件編寫相應的策略。

  • 新增支援Kubernetes 1.26。

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2022年06月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.8.1.113-geb7947ef-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.8.1.113-geb7947ef-aliyun

2022年06月08日

  • 升級組件依賴的OPA gatekeeper軟體版本至v3.8.1。關於v3.8.1的OPA gatekeeper更多資訊,請參見Releases v3.8.1

  • 預設禁用審計Pod,您可以在組件管理頁面自助啟用。

  • 支援在組件管理頁面自助調整組件的記憶體、CPU資源配置和Pod的副本數。

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2022年04月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.7.1.93-gaf375989-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.1.93-gaf375989-aliyun

2022年04月02日

支援在組件管理頁面自助開啟Mutation功能(預設禁用該功能)。關於Mutation更多資訊,請參見Mutation功能

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2022年02月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.7.0.84-gf5fd3ffd-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.84-gf5fd3ffd-aliyun

2022年02月15日

最佳化程式效能,修複極端情況下可能會出現CPU佔用異常的問題。

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2022年01月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.7.0.82-gafe4391b-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.82-gafe4391b-aliyun

2022年01月14日

  • 升級組件依賴的OPA gatekeeper軟體版本至v3.7.0。關於v3.7.0的OPA gatekeeper更多資訊,請參見Releases v3.7.0

  • 支援ARM 64架構。

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2021年09月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.6.0.62-g156146d-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.6.0.62-g156146d-aliyun

2021年09月20日

  • 從v3.6.0.62版本開始,gatekeeper組件將只支援v1.16.9及以上版本的Kubernetes叢集。

  • 升級組件依賴的OPA gatekeeper軟體版本至v3.6.0。關於v3.6.0的OPA gatekeeper更多資訊,請參見Releases v3.6.0

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2021年03月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.3.0.24-8e68abc-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.3.0.24-8e68abc-aliyun

2021年03月16日

  • 支援註冊叢集安裝gatekeeper組件。

  • 升級組件依賴的OPA gatekeeper軟體版本至v3.3.0。

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。

2020年08月

版本號碼

鏡像地址

變更時間

變更內容

變更影響

v3.1.0.11-24bab09-aliyun

registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.1.0.11-24bab09-aliyun

2020年08月20日

升級依賴的OPA gatekeeper軟體版本至v3.1.0-beta.12。

說明

opa gatekeeper是gatekeeper組件使用的一個開源軟體。

組件升級異常可能會導致叢集資源變更失敗,建議在業務低穀期進行升級操作。