Secret/Generator

This commit is contained in:
huanqing.shao
2019-09-24 23:28:33 +08:00
parent e733fbc45a
commit 169bcfc8a6
6 changed files with 94 additions and 7 deletions

1
.gitignore vendored
View File

@ -16,6 +16,7 @@ HELP.md
*.iws
*.iml
*.ipr
.push
### NetBeans ###
/nbproject/private/

View File

@ -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',
]
},
]

View File

@ -0,0 +1,85 @@
---
vssueId: 83
layout: LearningLayout
description: Kubernetes教程_在Kubernetes中_使用kubectl创建Secret
---
# 创建Secrets使用Generator
从 kubernetes v1.14 开始kubectl 集成了 [Kustomize](https://kustomize.io/)。通过 Kustomize您可以使用 generatorKustomize 的概念)创建 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 <<EOF >./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: <none>
Annotations: <none>
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 <<EOF >./kustomization.yaml
secretGenerator:
- name: db-user-pass
literals:
- username=admin
- password=secret
EOF
```
* 然后执行指令 `kubectl apply -k .` 创建 Secret 对象,输出结果如下所示:
```
secret/db-user-pass-dddghtt9b5 created
```

View File

@ -4,7 +4,7 @@ layout: LearningLayout
description: Kubernetes教程_在Kubernetes中_使用kubectl创建Secret
---
# 使用 kubectl 创建 Secrets
# 创建Secrets使用kubectl
假设某个 Pod 需要访问数据库。在您执行 kubectl 命令所在机器的当前目录,创建文件 `./username.txt` 文件和 `./password.txt` 暂存数据库的用户名和密码,后续我们根据这两个文件配置 kubernetes secrets。

View File

@ -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 编码的

View File

@ -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
## 解码和编辑