From 3bc14789ada38f5d0151be9bcc66ef671346eb71 Mon Sep 17 00:00:00 2001 From: yuanhao Date: Sat, 19 Sep 2020 20:19:23 +0800 Subject: [PATCH 1/2] fix redirect to en link in chinese page --- .../tasks/configmap-secret/managing-secret-using-kubectl.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl.md b/content/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl.md index 09e7c6fc21..c03ca5510e 100644 --- a/content/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl.md +++ b/content/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl.md @@ -206,6 +206,6 @@ kubectl delete secret db-user-pass - Learn how to [manage Secret using config file](/docs/tasks/configmap-secret/managing-secret-using-config-file/) - Learn how to [manage Secret using kustomize](/docs/tasks/configmap-secret/managing-secret-using-kustomize/) --> -- 阅读更多有关 [Secret 概念](/docs/concepts/configuration/secret/) -- 了解如何 [使用配置文件管理 Secret](/docs/tasks/configmap-secret/managing-secret-using-config-file/) -- 了解如何 [使用 kustomize 管理 Secret](/docs/tasks/configmap-secret/managing-secret-using-kustomize/) +- 阅读更多有关 [Secret 概念](/zh/docs/concepts/configuration/secret/) +- 了解如何 [使用配置文件管理 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-config-file/) +- 了解如何 [使用 kustomize 管理 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-kustomize/) From 7ad80f090dbf1c7406d78ed499518c4abb597783 Mon Sep 17 00:00:00 2001 From: yuanhao Date: Sat, 19 Sep 2020 20:19:53 +0800 Subject: [PATCH 2/2] translate zh/docs/tasks/configmap-secret/managing-secret-using-config-file.md --- .../managing-secret-using-config-file.md | 268 ++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 content/zh/docs/tasks/configmap-secret/managing-secret-using-config-file.md diff --git a/content/zh/docs/tasks/configmap-secret/managing-secret-using-config-file.md b/content/zh/docs/tasks/configmap-secret/managing-secret-using-config-file.md new file mode 100644 index 0000000000..5557742d47 --- /dev/null +++ b/content/zh/docs/tasks/configmap-secret/managing-secret-using-config-file.md @@ -0,0 +1,268 @@ +--- +title: 使用配置文件管理 Secret +content_type: task +weight: 20 +description: 使用资源配置文件创建 Secret 对象 +--- + + + + +## {{% heading "prerequisites" %}} + +{{< include "task-tutorial-prereqs.md" >}} + + + + +## 创建配置文件 {#create-the-config-file} + + +你可以先用 JSON 或 YAML 格式在文件中创建 Secret,然后创建该对象。 +[Secret](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#secret-v1-core) +资源包含2个键值对: `data` 和 `stringData`。 +`data` 字段用来存储 base64 编码的任意数据。 +提供 `stringData` 字段是为了方便,它允许 Secret 使用未编码的字符串。 +`data` 和 `stringData` 的键必须由字母、数字、`-`,`_` 或 `.` 组成。 + + +例如,要使用 Secret 的 `data` 字段存储两个字符串,请将字符串转换为 base64 ,如下所示: + +```shell +echo -n 'admin' | base64 +``` + + +输出类似于: + +``` +YWRtaW4= +``` + +```shell +echo -n '1f2d1e2e67df' | base64 +``` + + +输出类似于: + +``` +MWYyZDFlMmU2N2Rm +``` + + +编写一个 Secret 配置文件,如下所示: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: mysecret +type: Opaque +data: + username: YWRtaW4= + password: MWYyZDFlMmU2N2Rm +``` + + +注意,Secret 对象的名称必须是有效的 [DNS 子域名](/zh/docs/concepts/overview/working-with-objects/names#dns-subdomain-names). + +{{< note >}} + +Secret 数据的 JSON 和 YAML 序列化结果是以 base64 编码的。 +换行符在这些字符串中无效,必须省略。 +在 Darwin/macOS 上使用 `base64` 工具时,用户不应该使用 `-b` 选项分割长行。 +相反地,Linux 用户 *应该* 在 `base64` 地命令中添加 `-w 0` 选项, +或者在 `-w` 选项不可用的情况下,输入 `base64 | tr -d '\n'`。 +{{< /note >}} + + +对于某些场景,你可能希望使用 `stringData` 字段。 +这字段可以将一个非 base64 编码的字符串直接放入 Secret 中, +当创建或更新该 Secret 时,此字段将被编码。 + + +上述用例的实际场景可能是这样:当你部署应用时,使用 Secret 存储配置文件, +你希望在部署过程中,填入部分内容到该配置文件。 + + +例如,如果你的应用程序使用以下配置文件: + +```yaml +apiUrl: "https://my.api.com/api/v1" +username: "" +password: "" +``` + + +你可以使用以下定义将其存储在 Secret 中: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: mysecret +type: Opaque +stringData: + config.yaml: | + apiUrl: "https://my.api.com/api/v1" + username: + password: +``` + + +## 创建 Secret 对象 {#create-the-secret-object} + + +现在使用 [`kubectl apply`](/zh/docs/reference/generated/kubectl/kubectl-commands#apply) 创建 Secret: + +```shell +kubectl apply -f ./secret.yaml +``` + + +输出类似于: + +``` +secret/mysecret created +``` + + +## 检查 Secret {#check-the-secret} + + +`stringData` 字段是只写的。获取 Secret 时,此字段永远不会输出。 +例如,如果你运行以下命令: + + +```shell +kubectl get secret mysecret -o yaml +``` + + +输出类似于: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + creationTimestamp: 2018-11-15T20:40:59Z + name: mysecret + namespace: default + resourceVersion: "7225" + uid: c280ad2e-e916-11e8-98f2-025000000001 +type: Opaque +data: + config.yaml: YXBpVXJsOiAiaHR0cHM6Ly9teS5hcGkuY29tL2FwaS92MSIKdXNlcm5hbWU6IHt7dXNlcm5hbWV9fQpwYXNzd29yZDoge3twYXNzd29yZH19 +``` + + +命令 `kubectl get` 和 `kubectl describe` 默认情况不显示 `Secret` 的内容。 +这是为了防止 `Secret` 意外地暴露给旁观者,或者保存在终端日志中。 +检查编码数据的实际内容,请参考 [解码 secret](/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl/#decoding-secret). + + +如果在 `data` 和 `stringData` 中都指定了一个字段,比如 `username`,字段值来自 `stringData`。 +例如,下面的 Secret 定义: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: mysecret +type: Opaque +data: + username: YWRtaW4= +stringData: + username: administrator +``` + + +结果有以下 Secret: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + creationTimestamp: 2018-11-15T20:46:46Z + name: mysecret + namespace: default + resourceVersion: "7579" + uid: 91460ecb-e917-11e8-98f2-025000000001 +type: Opaque +data: + username: YWRtaW5pc3RyYXRvcg== +``` + + +其中 `YWRtaW5pc3RyYXRvcg==` 解码成 `administrator`。 + + +## 清理 {#clean-up} + + +删除你刚才创建的 Secret: + +```shell +kubectl delete secret db-user-pass +``` + +## {{% heading "whatsnext" %}} + + +- 阅读更多有关于 [Secret 概念](/zh/docs/concepts/configuration/secret/) +- 了解如何 [使用 `kubectl` 命令管理 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-kubectl/) +- 了解如何 [使用 kustomize 管理 Secret](/zh/docs/tasks/configmap-secret/managing-secret-using-kustomize/) +