Files
kuboard-press/learning/k8s-intermediate/config/secrets/create-generator.md
2019-09-24 23:28:33 +08:00

86 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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
```