gatekeeper組件介紹和發(fā)布記錄
gatekeeper組件可以幫助您方便地管理和應(yīng)用集群內(nèi)的Open Policy Agent(OPA)策略,實現(xiàn)命名空間標(biāo)簽管理等功能。本文為您介紹gatekeeper組件的功能、使用說明和變更記錄。
組件介紹
Open Policy Agent(OPA)是一個開源的、通用的策略引擎,可以在整個堆棧中實現(xiàn)統(tǒng)一的、上下文感知的策略實施。gatekeeper組件可以管理和應(yīng)用集群內(nèi)的Open Policy Agent(OPA)策略,實現(xiàn)命名空間標(biāo)簽管理等功能。有關(guān)OPA的介紹,請參見Open Policy Agent。gatekeeper組件架構(gòu)如下圖所示。
關(guān)于如何安裝gatekeeper組件,請參見管理組件。
使用說明
本示例將演示如何通過gatekeeper實現(xiàn)限制指定命名空間下創(chuàng)建的Pod必須包含一個名為gatekeeper-test-label的標(biāo)簽,借此展示gatekeeper的基本用法。更多gatekeeper的用法,請參見使用gatekeeper。
執(zhí)行以下命令,創(chuàng)建一個測試用的命名空間 test-gatekeeper,同時給命名空間增加name=test-gatekeeper標(biāo)簽。
kubectl create ns test-gatekeeper kubectl label ns test-gatekeeper name=test-gatekeeper
執(zhí)行以下命令,創(chuàng)建一個檢查標(biāo)簽的策略模板。
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完成策略模板初始化。
執(zhí)行以下命令,創(chuàng)建一個策略模板的約束。
這個約束將限制包含標(biāo)簽name=test-gatekeeper的命名空間下創(chuàng)建的Pod必須包含名為gatekeeper-test-label的標(biāo)簽。
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完成約束的初始化。
驗證命名空間的約束效果。
執(zhí)行以下命令,在包含標(biāo)簽
name=test-gatekeeper
的命名空間test-gatekeeper下創(chuàng)建一個不包含gatekeeper-test-label
標(biāo)簽的Pod。kubectl -n test-gatekeeper run test-deny --image=nginx --restart=Never
預(yù)期輸出:
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"}
可以看到,在包含標(biāo)簽
name=test-gatekeeper
的命名空間test-gatekeeper下創(chuàng)建一個不包含gatekeeper-test-label
標(biāo)簽的Pod失敗。執(zhí)行以下命令,在包含標(biāo)簽
name=test-gatekeeper
的命名空間test-gatekeeper下創(chuàng)建一個包含gatekeeper-test-label
標(biāo)簽的Pod。kubectl -n test-gatekeeper run test-pass -l gatekeeper-test-label=pass --image=nginx --restart=Never
預(yù)期輸出:
pod/test-pass created
可以看到,在包含標(biāo)簽
name=test-gatekeeper
的命名空間test-gatekeeper下創(chuàng)建一個包含gatekeeper-test-label
標(biāo)簽的Pod成功。執(zhí)行以下命令,在其他未配置約束的命名空間下創(chuàng)建一個不包含
name=test-gatekeeper
標(biāo)簽的Pod。kubectl -n default run test-deny --image=nginx --restart=Never
預(yù)期輸出:
pod/test-deny created
可以看到,在其他未配置約束的命名空間下創(chuàng)建一個不包含
name=test-gatekeeper
標(biāo)簽的Pod成功。
根據(jù)以上驗證,說明通過gatekeeper限制指定命名空間下創(chuàng)建的Pod必須包含一個名為
gatekeeper-test-label
的標(biāo)簽成功。
變更記錄
2024年12月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.17.1.174-g6383c639-aliyun | registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.17.1.174-g6383c639-aliyun | 2024年12月09日 | 當(dāng)前處于灰度發(fā)布中。 升級組件依賴的OPA gatekeeper軟件版本至v3.17.1。關(guān)于v3.17.1 OPA gatekeeper的更多信息,請參見Releases v3.17.1。 | 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2024年09月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
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。關(guān)于v3.16.3 OPA gatekeeper的更多信息,請參見Releases v3.16.3。 | 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2024年03月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
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。關(guān)于v3.15.1的OPA gatekeeper更多信息,請參見Releases v3.15.1。 | 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2023年10月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.12.0.138-g1ee37e37-aliyun | registry-cn-hangzhou.ack.aliyuncs.com/acs/gatekeeper:v3.12.0.138-g1ee37e37-aliyun | 2023年10月09日 |
| 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2023年04月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.10.0.130-g0e79597d-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.10.0.130-g0e79597d-aliyun | 2023年04月18日 |
| 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2022年06月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.8.1.113-geb7947ef-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.8.1.113-geb7947ef-aliyun | 2022年06月08日 |
| 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2022年04月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.7.1.93-gaf375989-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.1.93-gaf375989-aliyun | 2022年04月02日 | 支持在組件管理頁面自助開啟Mutation功能(默認禁用該功能)。關(guān)于Mutation更多信息,請參見Mutation功能。 | 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2022年02月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.7.0.84-gf5fd3ffd-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.84-gf5fd3ffd-aliyun | 2022年02月15日 | 優(yōu)化程序性能,修復(fù)極端情況下可能會出現(xiàn)CPU占用異常的問題。 | 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2022年01月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.7.0.82-gafe4391b-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.7.0.82-gafe4391b-aliyun | 2022年01月14日 |
| 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2021年09月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.6.0.62-g156146d-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.6.0.62-g156146d-aliyun | 2021年09月20日 |
| 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2021年03月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
v3.3.0.24-8e68abc-aliyun | registry.cn-hangzhou.aliyuncs.com/acs/gatekeeper:v3.3.0.24-8e68abc-aliyun | 2021年03月16日 |
| 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |
2020年08月
版本號 | 鏡像地址 | 變更時間 | 變更內(nèi)容 | 變更影響 |
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組件使用的一個開源軟件。 | 組件升級異常可能會導(dǎo)致集群資源變更失敗,建議在業(yè)務(wù)低谷期進行升級操作。 |