@@ -36,7 +36,7 @@ The configuration is provided as an API named
36
36
[`EncryptionConfiguration`](/docs/reference/config-api/apiserver-encryption.v1/).
37
37
An example configuration is provided below.
38
38
-->
39
- ## 配置并确定是否已启用静态数据加密
39
+ ## 配置并确定是否已启用静态数据加密 {#configuration-and-determing-wheter-encryption-at-rest-is-already-enabled}
40
40
41
41
` kube-apiserver ` 的参数 ` --encryption-provider-config ` 控制 API 数据在 etcd 中的加密方式。
42
42
该配置作为一个名为 [ ` EncryptionConfiguration ` ] ( /zh-cn/docs/reference/config-api/apiserver-encryption.v1/ ) 的 API 提供。
@@ -55,7 +55,7 @@ decrypt data stored in the etcd.
55
55
<!--
56
56
## Understanding the encryption at rest configuration.
57
57
-->
58
- ## 理解静态数据加密
58
+ ## 理解静态数据加密 {#understanding-the-encryption-at-rest-configuration}
59
59
60
60
``` yaml
61
61
apiVersion : apiserver.config.k8s.io/v1
@@ -184,7 +184,7 @@ retrieve the plaintext values, providing a higher level of security than locally
184
184
185
185
Create a new encryption config file :
186
186
-->
187
- # # 加密你的数据
187
+ # # 加密你的数据 {#encrypting-you-data}
188
188
189
189
创建一个新的加密配置文件:
190
190
@@ -219,19 +219,67 @@ To create a new Secret, perform the following steps:
219
219
1. Place that value in the `secret` field of the `EncryptionConfiguration` struct.
220
220
1. Set the `--encryption-provider-config` flag on the `kube-apiserver` to point to
221
221
the location of the config file.
222
- 1. Restart your API server.
222
+
223
+ You will need to mount the new encryption config file to the `kube-apiserver` static pod. Here is an example on how to do that :
223
224
-->
224
225
2. 将这个值放入到 `EncryptionConfiguration` 结构体的 `secret` 字段中。
225
226
3. 设置 `kube-apiserver` 的 `--encryption-provider-config` 参数,将其指向配置文件所在位置。
227
+
228
+ 你将需要把新的加密配置文件挂载到 `kube-apiserver` 静态 Pod。以下是这个操作的示例:
229
+
230
+ <!--
231
+ 1. Save the new encryption config file to `/etc/kubernetes/enc/enc.yaml` on the control-plane node.
232
+ 1. Edit the manifest for the `kube-apiserver` static pod : ` /etc/kubernetes/manifests/kube-apiserver.yaml` similarly to this:
233
+ -->
234
+ 1. 将新的加密配置文件保存到控制平面节点上的 `/etc/kubernetes/enc/enc.yaml`。
235
+ 2. 编辑 `kube-apiserver` 静态 Pod 的清单:`/etc/kubernetes/manifests/kube-apiserver.yaml`,
236
+ 代码范例如下:
237
+
238
+ ` ` ` yaml
239
+ apiVersion: v1
240
+ kind: Pod
241
+ metadata:
242
+ annotations:
243
+ kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: 10.10.30.4:6443
244
+ creationTimestamp: null
245
+ labels:
246
+ component: kube-apiserver
247
+ tier: control-plane
248
+ name: kube-apiserver
249
+ namespace: kube-system
250
+ spec:
251
+ containers:
252
+ - command:
253
+ - kube-apiserver
254
+ ...
255
+ - --encryption-provider-config=/etc/kubernetes/enc/enc.yaml # <-- 增加这一行
256
+ volumeMounts:
257
+ ...
258
+ - name: enc # <-- 增加这一行
259
+ mountPath: /etc/kubernetes/enc # <-- 增加这一行
260
+ readonly: true # <-- 增加这一行
261
+ ...
262
+ volumes:
263
+ ...
264
+ - name: enc # <-- 增加这一行
265
+ hostPath: # <-- 增加这一行
266
+ path: /etc/kubernetes/enc # <-- 增加这一行
267
+ type: DirectoryOrCreate # <-- 增加这一行
268
+ ...
269
+ ` ` `
270
+
271
+ <!--
272
+ 1. Restart your API server.
273
+ -->
226
274
4. 重启你的 API 服务器。
227
275
276
+ {{< caution >}}
228
277
<!--
229
278
Your config file contains keys that can decrypt the contents in etcd, so you must properly restrict
230
279
permissions on your control-plane nodes so only the user who runs the `kube-apiserver` can read it.
231
280
-->
232
- {{< caution >}}
233
- 你的配置文件包含可以解密 etcd 内容的密钥,因此你必须正确限制主控节点的访问权限,
234
- 以便只有能运行 kube-apiserver 的用户才能读取它。
281
+ 你的配置文件包含可以解密 etcd 内容的密钥,因此你必须正确限制控制平面节点的访问权限,
282
+ 以便只有能运行 `kube-apiserver` 的用户才能读取它。
235
283
{{< /caution >}}
236
284
237
285
<!--
@@ -243,7 +291,7 @@ program to retrieve the contents of your Secret.
243
291
244
292
1. Create a new Secret called `secret1` in the `default` namespace :
245
293
-->
246
- # # 验证数据已被加密
294
+ # # 验证数据已被加密 {#verifying-that-data-is-encryped}
247
295
248
296
数据在写入 etcd 时会被加密。重新启动你的 `kube-apiserver` 后,任何新创建或更新的密码在存储时都应该被加密。
249
297
如果想要检查,你可以使用 `etcdctl` 命令行程序来检索你的加密内容。
@@ -268,6 +316,38 @@ program to retrieve the contents of your Secret.
268
316
-->
269
317
这里的 `[...]` 是用来连接 etcd 服务的额外参数。
270
318
319
+ <!--
320
+ For example :
321
+ -->
322
+ 例如:
323
+
324
+ ` ` ` shell
325
+ ETCDCTL_API=3 etcdctl \
326
+ --cacert=/etc/kubernetes/pki/etcd/ca.crt \
327
+ --cert=/etc/kubernetes/pki/etcd/server.crt \
328
+ --key=/etc/kubernetes/pki/etcd/server.key \
329
+ get /registry/secrets/default/secret1 | hexdump -C
330
+ ` ` `
331
+
332
+ <!--
333
+ The output is similar to this (abbreviated) :
334
+ -->
335
+ 输出类似于(有删减):
336
+
337
+ ` ` ` hexdump
338
+ 00000000 2f 72 65 67 69 73 74 72 79 2f 73 65 63 72 65 74 |/registry/secret|
339
+ 00000010 73 2f 64 65 66 61 75 6c 74 2f 73 65 63 72 65 74 |s/default/secret|
340
+ 00000020 31 0a 6b 38 73 3a 65 6e 63 3a 61 65 73 63 62 63 |1.k8s:enc:aescbc|
341
+ 00000030 3a 76 31 3a 6b 65 79 31 3a c7 6c e7 d3 09 bc 06 |:v1:key1:.l.....|
342
+ 00000040 25 51 91 e4 e0 6c e5 b1 4d 7a 8b 3d b9 c2 7c 6e |%Q...l..Mz.=..|n|
343
+ 00000050 b4 79 df 05 28 ae 0d 8e 5f 35 13 2c c0 18 99 3e |.y..(..._5.,...>|
344
+ [...]
345
+ 00000110 23 3a 0d fc 28 ca 48 2d 6b 2d 46 cc 72 0b 70 4c |#:..(.H-k-F.r.pL|
346
+ 00000120 a5 fc 35 43 12 4e 60 ef bf 6f fe cf df 0b ad 1f |..5C.N` ..o......|
347
+ 00000130 82 c4 88 53 02 da 3e 66 ff 0a |...S..>f..|
348
+ 0000013a
349
+ ```
350
+
271
351
<!--
272
352
1. Verify the stored Secret is prefixed with `k8s:enc:aescbc:v1:` which indicates
273
353
the `aescbc` provider has encrypted the resulting data.
@@ -296,7 +376,7 @@ program to retrieve the contents of your Secret.
296
376
297
377
Since Secrets are encrypted on write, performing an update on a Secret will encrypt that content.
298
378
-->
299
- # # 确保所有 Secret 都被加密
379
+ ## 确保所有 Secret 都被加密 {#ensure-all-secrets-are-encrypted}
300
380
301
381
由于 Secret 是在写入时被加密,因此对 Secret 执行更新也会加密该内容。
302
382
@@ -335,10 +415,10 @@ the presence of a highly-available deployment where multiple `kube-apiserver` pr
335
415
336
416
When running a single `kube-apiserver` instance, step 2 may be skipped.
337
417
-->
338
- # # 轮换解密密钥
418
+ ## 轮换解密密钥 {#rotating-a-decryption-key}
339
419
340
- 在不发生停机的情况下更改 Secret 需要多步操作,特别是在有多个 `kube-apiserver` 进程正在运行的
341
- 高可用环境中 。
420
+ 在不发生停机的情况下更改 Secret 需要多步操作,特别是在有多个 ` kube-apiserver `
421
+ 进程正在运行的高可用环境中 。
342
422
343
423
1 . 生成一个新密钥并将其添加为所有服务器上当前提供程序的第二个密钥条目
344
424
1 . 重新启动所有 ` kube-apiserver ` 进程以确保每台服务器都可以使用新密钥进行解密
@@ -356,7 +436,7 @@ When running a single `kube-apiserver` instance, step 2 may be skipped.
356
436
To disable encryption at rest, place the `identity` provider as the first entry in the config
357
437
and restart all `kube-apiserver` processes.
358
438
-->
359
- # # 解密所有数据
439
+ ## 解密所有数据 {#decrypting-all-data}
360
440
361
441
要禁用静态加密,请将 ` identity ` provider
362
442
作为配置中的第一个条目并重新启动所有 ` kube-apiserver ` 进程。
0 commit comments