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: "" ...