diff --git a/.gitignore b/.gitignore index 1ad6cf5..575ce35 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ HELP.md *.iws *.iml *.ipr +.push ### NetBeans ### /nbproject/private/ diff --git a/.vuepress/config.js b/.vuepress/config.js index 479c192..257524f 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -288,7 +288,7 @@ module.exports = { 'k8s-intermediate/config/secrets/', 'k8s-intermediate/config/secrets/create-kubectl', 'k8s-intermediate/config/secrets/create-manually', - // 'k8s-intermediate/config/secrets/create-generator', + 'k8s-intermediate/config/secrets/create-generator', // 'k8s-intermediate/config/secrets/create-kuboard', 'k8s-intermediate/config/secrets/decode-edit', // 'k8s-intermediate/config/secrets/use-scenarios', @@ -335,8 +335,9 @@ module.exports = { title: 'Open Capacity Platform', collapsable: false, children: [ - 'k8s-practice/ocp/', - 'k8s-practice/ocp/prepare.html', + ['k8s-practice/ocp/', 'OCP介绍'], + 'k8s-practice/ocp/prepare', + 'k8s-practice/ocp/build', ] }, ] diff --git a/learning/k8s-intermediate/config/secrets/create-generator.md b/learning/k8s-intermediate/config/secrets/create-generator.md new file mode 100644 index 0000000..33919a2 --- /dev/null +++ b/learning/k8s-intermediate/config/secrets/create-generator.md @@ -0,0 +1,85 @@ +--- +vssueId: 83 +layout: LearningLayout +description: Kubernetes教程_在Kubernetes中_使用kubectl创建Secret +--- + +# 创建Secrets(使用Generator) + +从 kubernetes v1.14 开始,kubectl 集成了 [Kustomize](https://kustomize.io/)。通过 Kustomize,您可以使用 generator(Kustomize 的概念)创建 Secret,并保存到 API Server。Generator 必须在 `kustomization.yaml` 文件中指定。 + +::: tip +需要结合 [Kustomize](https://kustomize.io/) 一起使用,在您决定采纳 Kustomize 之前,可以暂时不看这篇文章的内容 +::: + +## 从文件生成 Secret + +例如,如果想从 `./username.txt` 和 `./password.txt` 文件生成(generate)一个 Secret,则可以: + +* 执行如下指令创建 `kustomization.yaml` 文件 + +``` sh +# Create a kustomization.yaml file with SecretGenerator +cat <./kustomization.yaml +secretGenerator: +- name: db-user-pass + files: + - username.txt + - password.txt +EOF +``` + +* 执行指令 `kubectl apply -k .` 以创建 Secret 对象,输出结果如下所示: + + ``` + secret/db-user-pass-96mffmfh4k created + ``` + +* 执行指令 `kubectl get secrets` 以检查创建结果,输出结果如下所示: + + ``` + NAME TYPE DATA AGE + db-user-pass-96mffmfh4k Opaque 2 51s + ``` + +* 执行指令 `kubectl describe secrets/db-user-pass-96mffmfh4k` 以查看 Secret 详情(请使用您自己的 Secret 名字),输出结果如下所示: + + ``` + Name: db-user-pass + Namespace: default + Labels: + Annotations: + + Type: Opaque + + Data + ==== + password.txt: 12 bytes + username.txt: 5 bytes + ``` + ::: tip + 生成的 Secret 的名字包含一个 hash 值(Secret 内容的 hash)做为后缀,这种做法可以确保每次修改 Secret 的内容时,都将产生新的 Secret 对象 + ::: + +## 从明文生成 Secret + +例如,如果要从明文 `username=admin` 和 `password=secret`,您可以: + +* 通过如下指令创建 secret generator 的 `kustomization.yaml` 文件: + + ``` sh + # Create a kustomization.yaml file with SecretGenerator + cat <./kustomization.yaml + secretGenerator: + - name: db-user-pass + literals: + - username=admin + - password=secret + EOF + ``` + +* 然后执行指令 `kubectl apply -k .` 创建 Secret 对象,输出结果如下所示: + + ``` + secret/db-user-pass-dddghtt9b5 created + ``` diff --git a/learning/k8s-intermediate/config/secrets/create-kubectl.md b/learning/k8s-intermediate/config/secrets/create-kubectl.md index 0e020c9..3134c9f 100644 --- a/learning/k8s-intermediate/config/secrets/create-kubectl.md +++ b/learning/k8s-intermediate/config/secrets/create-kubectl.md @@ -4,7 +4,7 @@ layout: LearningLayout description: Kubernetes教程_在Kubernetes中_使用kubectl创建Secret --- -# 使用 kubectl 创建 Secrets +# 创建Secrets(使用kubectl) 假设某个 Pod 需要访问数据库。在您执行 kubectl 命令所在机器的当前目录,创建文件 `./username.txt` 文件和 `./password.txt` 暂存数据库的用户名和密码,后续我们根据这两个文件配置 kubernetes secrets。 diff --git a/learning/k8s-intermediate/config/secrets/create-manually.md b/learning/k8s-intermediate/config/secrets/create-manually.md index ef78616..454e91e 100644 --- a/learning/k8s-intermediate/config/secrets/create-manually.md +++ b/learning/k8s-intermediate/config/secrets/create-manually.md @@ -4,7 +4,7 @@ layout: LearningLayout description: Kubernetes教程_在Kubernetes中_使用kubectl创建Secret --- -# 手动创建 Secrets +# 创建Secrets(手动) 和创建其他类型的 API 对象(Pod、Deployment、StatefulSet、ConfigMap 等)一样,您也可以先在 yaml 文件中定义好 Secret,然后通过 `kubectl apply -f` 命令创建。此时,您可以通过如下两种方式在 yaml 文件中定义 Secret: * **data**:使用 data 字段时,取值的内容必须是 base64 编码的 diff --git a/learning/k8s-intermediate/config/secrets/index.md b/learning/k8s-intermediate/config/secrets/index.md index e22229e..1aa44dc 100644 --- a/learning/k8s-intermediate/config/secrets/index.md +++ b/learning/k8s-intermediate/config/secrets/index.md @@ -36,8 +36,8 @@ Kubernetes 自动创建包含访问 Kubernetes APIServer 身份信息的 Secret 您可以使用如下方式创建自己的 Secret: * [使用 kubectl 创建 Secret](./create-kubectl.html) -* 手动创建 Secret -* 使用 Generator 创建 Secret +* [手动创建 Secret](./create-manually.html) +* [使用 Generator 创建 Secret](./create-generator.html) * 使用 Kuboard 创建 Secret ## 解码和编辑