Reflector 是一個 Kubernetes 插件,旨在監視資源(秘密和配置映射)的變更並反映相同或其他命名空間中鏡像資源的變更。
支援
amd64
、arm
和arm64
如果您需要協助或發現錯誤,請隨時在 GitHub 上提出問題 (https://github.com/emberstack/kubernetes-reflector/issues)。
Reflector 可以手動部署,也可以使用 Helm(建議)部署。
庫伯內特斯 1.14+
Helm 3(如果使用 Helm 部署)
使用 Helm 安裝最新發布的圖表:
$ helm 倉庫新增 emberstack https://emberstack.github.io/helm-charts$ helm 倉庫更新$ helm 升級 --安裝 Reflector emberstack/reflector
您可以使用下列值自訂 helm 部署的值:
範圍 | 描述 | 預設 |
---|---|---|
nameOverride | 覆蓋版本名稱 | "" |
fullnameOverride | 覆蓋版本全名 | "" |
image.repository | 容器鏡像倉庫 | emberstack/kubernetes-reflector |
image.tag | 容器鏡像標籤 | Same as chart version |
image.pullPolicy | 容器鏡像拉取策略 | IfNotPresent |
configuration.logging.minimumLevel | 記錄最低級別 | Information |
configuration.watcher.timeout | 觀察者的最長生命週期(以秒為單位) | `` |
configuration.kubernetes.skipTlsVerify | 連線叢集時跳過 TLS 驗證 | false |
rbac.enabled | 建立和使用 RBAC 資源 | true |
serviceAccount.create | 建立服務帳號 | true |
serviceAccount.name | 服務帳號名稱 | 發布名稱 |
livenessProbe.initialDelaySeconds | livenessProbe 初始延遲 | 5 |
livenessProbe.periodSeconds | livenessProbe 期 | 10 |
readinessProbe.initialDelaySeconds | readinessProbe 初始延遲 | 5 |
readinessProbe.periodSeconds | readinessProbe 期 | 10 |
startupProbe.failureThreshold | startupProbe 失敗閾值 | 10 |
startupProbe.periodSeconds | startupProbe 期 | 5 |
resources | 資源限制 | {} |
nodeSelector | 用於 Pod 指派的節點標籤 | {} |
tolerations | Pod 分配的容忍標籤 | [] |
affinity | Pod 分配的節點關聯性 | {} |
priorityClassName | Pod 的priorityClassName | "" |
在 Artifact Hub 上找到我們
每個版本(可在版本 GitHub 頁面上找到)都包含手動部署檔案 ( reflector.yaml
)。
$ kubectl -n kube-system apply -f https://github.com/emberstack/kubernetes-reflector/releases/latest/download/reflector.yaml
secret
或configmap
將reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
新增至資源註釋中以允許反射到鏡像。
將reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "<list>"
新增至資源註解中,以允許僅從逗號分隔的命名空間或正規表示式清單進行反射。注意:如果此註解被省略或為空,則允許所有名稱空間。
Reflector可以自動在其他命名空間建立同名的鏡像。以下註釋控制是否以及如何建立鏡像:
在資源註解中加入reflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true"
即可自動在其他命名空間建立鏡像。注意:請reflector.v1.k8s.emberstack.com/reflection-allowed
為true
,因為鏡像需要能夠反射來源。
在資源註解中新增reflector.v1.k8s.emberstack.com/reflection-auto-namespaces: "<list>"
,指定在哪些命名空間中自動建立映像。注意:如果此註解被省略或為空,則允許所有名稱空間。此清單中的命名空間也將由reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces
檢查,因為鏡像需要位於允許反射的命名空間中。
重要:如果刪除
source
,自動鏡像也會被刪除。此外,如果關閉反射或自動鏡像,或者自動鏡像的命名空間不再與允許的命名空間有效匹配,則自動鏡像將被刪除。
重要提示:建立自動鏡像時,Reflector 將跳過任何衝突的資源。如果要建立自動鏡像的命名空間中已存在具有來源名稱的資源,則將跳過該命名空間並記錄為警告。
範例來源秘密:
apiVersion:v1kind:Secretmetadata:名稱:來源秘密註釋:reflector.v1.k8s.emberstack.com/reflection-allowed:「true」reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces:「namespace-1 ,命名空間-2,命名空間-[0-9]*"資料: ...
範例來源設定映射:
apiVersion:v1kind:ConfigMapmetadata:名稱:source-config-map註解:reflector.v1.k8s.emberstack.com/reflection-allowed:「true」reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces:「命名空間-1,命名空間-2,命名空間-[0-9]*"資料: ...
將reflector.v1.k8s.emberstack.com/reflects: "<source namespace>/<source name>"
加入鏡像物件中。註解的值是來源物件的全名,採用namespace/name
格式。
注意:在對映像進行任何手動變更時(例如使用
helm
部署或重新套用部署腳本時),請在資源註解中新增reflector.v1.k8s.emberstack.com/reflected-version: ""
。這將重置鏡像的反射版本。
鏡像秘密範例:
apiVersion:v1kind:Secretmetadata:名稱:鏡像秘密註解:reflector.v1.k8s.emberstack.com/reflects:「default/source-secret」資料:...
鏡像配置映射範例:
apiVersion:v1kind:ConfigMapmetadata:名稱:mirror-config-map 註解:reflector.v1.k8s.emberstack.com/reflects:「default/source-config-map」資料:...
Reflector 將監視對來源物件所做的任何變更並複製以下欄位:
秘密data
configmaps 的data
和二binaryData
Reflector 透過使用來源物件版本註解鏡像來追蹤複製的內容。
cert-manager
支持從 cert-manager 1.5 版開始,您可以使用
secretTemplate
註解從憑證建立的機密以進行鏡像(請參閱 https://cert-manager.io/docs/usage/certificate/)。
apiVersion: cert-manager.io/v1 kind: Certificate ... spec: secretTemplate: annotations: reflector.v1.k8s.emberstack.com/reflection-allowed: "true" reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "" ...