1. 说明
reflector 用于在各个 namespace
下同步 ConfigMap
配置。
此文档/项目需要如下镜像:
1
emberstack/kubernetes-reflector:6.1.47
此组件/应用将被部署到 kube-system
命名空间下。
2. 部署
导入以下配置,创建 reflector
相关的资源。
点击展开配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
apiVersion: v1
kind: ServiceAccount
metadata:
name: reflector
namespace: kube-system
labels:
helm.sh/chart: reflector-6.1.47
app.kubernetes.io/name: reflector
app.kubernetes.io/instance: reflector
app.kubernetes.io/version: "6.1.47"
app.kubernetes.io/managed-by: Helm
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: reflector
namespace: kube-system
labels:
helm.sh/chart: reflector-6.1.47
app.kubernetes.io/name: reflector
app.kubernetes.io/instance: reflector
app.kubernetes.io/version: "6.1.47"
app.kubernetes.io/managed-by: Helm
rules:
- apiGroups: [ "" ]
resources: [ "configmaps", "secrets" ]
verbs: [ "*" ]
- apiGroups: [ "" ]
resources: [ "namespaces" ]
verbs: [ "watch", "list" ]
- apiGroups: [ "apiextensions.k8s.io" ]
resources: [ "customresourcedefinitions" ]
verbs: [ "watch", "list" ]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: reflector
namespace: kube-system
labels:
helm.sh/chart: reflector-6.1.47
app.kubernetes.io/name: reflector
app.kubernetes.io/instance: reflector
app.kubernetes.io/version: "6.1.47"
app.kubernetes.io/managed-by: Helm
roleRef:
kind: ClusterRole
name: reflector
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: reflector
namespace: kube-system
---
# Source: reflector/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: reflector
namespace: kube-system
labels:
helm.sh/chart: reflector-6.1.47
app.kubernetes.io/name: reflector
app.kubernetes.io/instance: reflector
app.kubernetes.io/version: "6.1.47"
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: reflector
app.kubernetes.io/instance: reflector
template:
metadata:
labels:
app.kubernetes.io/name: reflector
app.kubernetes.io/instance: reflector
spec:
serviceAccountName: reflector
securityContext:
fsGroup: 2000
containers:
- name: reflector
securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
runAsNonRoot: true
runAsUser: 1000
image: "emberstack/kubernetes-reflector:6.1.47"
imagePullPolicy: IfNotPresent
env:
- name: ES_Serilog__MinimumLevel__Default
value: "Information"
- name: ES_Reflector__Watcher__Timeout
value: ""
ports:
- name: http
containerPort: 25080
protocol: TCP
livenessProbe:
httpGet:
path: /healthz
port: http
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /healthz
port: http
initialDelaySeconds: 5
periodSeconds: 10
startupProbe:
httpGet:
path: /healthz
port: http
failureThreshold: 10
periodSeconds: 5
resources:
{ }
你也可以使用以下命令在线导入资源。
1
kubectl apply -n kube-system -f https://github.com/emberstack/kubernetes-reflector/releases/download/v6.1.47/reflector.yaml
导入完成后,使用以下命令查看导入结果。
1
kubectl get pods -n kube-system -l app.kubernetes.io/name=reflector
3. 验证
在 kubernetes 中导入以下配置.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
apiVersion: v1
kind: Namespace
metadata:
name: test
---
apiVersion: v1
kind: ConfigMap
metadata:
name: test-reflector
namespace: test
annotations:
reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "default"
reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
reflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true"
reflector.v1.k8s.emberstack.com/reflection-auto-namespaces: "default"
data:
test: 'ok'
导入后使用如下命令测试,如果能返回 ok
则表明部署成功。
1
kubectl get configmaps -n default test-reflector -o jsonpath='{.data.test}'