创建 Secret
学习目标
- 掌握使用 kubectl 创建 Secret 的方法
- 掌握使用 YAML 文件定义 Secret
- 理解 Secret 的数据编码方式
核心概念
创建方式
1. 命令行创建
- kubectl create secret
- 适合快速测试
2. YAML 文件创建
- 声明式定义
- 适合生产环境
命令行创建方式
# 方式 1:从字面量创建
kubectl create secret generic db-secret \
--from-literal=username=admin \
--from-literal=password=MyP@ssw0rd
# 方式 2:从文件创建
kubectl create secret generic tls-secret \
--from-file=tls.crt=server.crt \
--from-file=tls.key=server.key
# 方式 3:从环境变量文件创建
kubectl create secret generic env-secret \
--from-env-file=.env
# 方式 4:创建 TLS Secret
kubectl create secret tls my-tls \
--cert=server.crt \
--key=server.key
# 方式 5:创建 Docker 镜像仓库 Secret
kubectl create secret docker-registry my-registry \
--docker-server=registry.example.com \
--docker-username=admin \
--docker-password=MyP@ssw0rd \
[email protected]
YAML 文件定义
apiVersion: v1
kind: Secret
metadata:
name: db-secret
namespace: default
type: Opaque
data:
# Base64 编码的值
username: YWRtaW4= # echo -n "admin" | base64
password: TXlQQHNzdzByZA== # echo -n "MyP@ssw0rd" | base64
Base64 编码
# 编码
echo -n "admin" | base64
# 输出:YWRtaW4=
echo -n "MyP@ssw0rd" | base64
# 输出:TXlQQHNzdzByZA==
# 解码
echo "YWRtaW4=" | base64 -d
# 输出:admin
不同类型的 Secret
Opaque Secret(通用类型)
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
username: YWRtaW4=
password: TXlQQHNzdzByZA==
TLS Secret
apiVersion: v1
kind: Secret
metadata:
name: tls-secret
type: kubernetes.io/tls
data:
tls.crt: <base64 编码的证书>
tls.key: <base64 编码的私钥>
Docker 镜像仓库 Secret
apiVersion: v1
kind: Secret
metadata:
name: registry-secret
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: <base64 编码的 Docker 配置>
查看 Secret
# 查看所有 Secret
kubectl get secrets
# 查看特定 Secret
kubectl get secret my-secret
# 查看详细信息
kubectl describe secret my-secret
# 查看 YAML 格式(Base64 编码)
kubectl get secret my-secret -o yaml
# 解码查看实际值
kubectl get secret my-secret -o jsonpath='{.data.password}' | base64 -d
删除 Secret
# 删除 Secret
kubectl delete secret my-secret
实践练习
练习 1:创建 Opaque Secret
创建数据库凭证 Secret:
# 命令行创建
kubectl create secret generic db-credentials \
--from-literal=username=admin \
--from-literal=password=MyP@ssw0rd
# 验证
kubectl get secret db-credentials
kubectl describe secret db-credentials
练习 2:YAML 文件创建
创建 Secret 文件 db-secret.yaml:
apiVersion: v1
kind: Secret
metadata:
name: db-secret
type: Opaque
data:
username: YWRtaW4=
password: TXlQQHNzdzByZA==
database: bXlkYg==
先编码数据:
echo -n "admin" | base64
echo -n "MyP@ssw0rd" | base64
echo -n "mydb" | base64
应用配置:
kubectl apply -f db-secret.yaml
练习 3:创建 TLS Secret
准备证书文件(测试用):
# 生成自签名证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout server.key -out server.crt \
-subj "/CN=example.com"
创建 TLS Secret:
kubectl create secret tls my-tls \
--cert=server.crt \
--key=server.key
验证:
kubectl get secret my-tls
kubectl describe secret my-tls
练习 4:解码 Secret
查看 Secret 的实际值:
# 查看所有键
kubectl get secret db-credentials -o jsonpath='{.data}'
# 查看单个值
kubectl get secret db-credentials -o jsonpath='{.data.username}' | base64 -d
kubectl get secret db-credentials -o jsonpath='{.data.password}' | base64 -d
小结
| 要点 | 说明 |
|---|---|
| 命令行创建 | kubectl create secret |
| YAML 创建 | 声明式定义 |
| 数据编码 | Base64 编码 |
| Secret 类型 | Opaque、TLS、Docker 等 |
| 查看命令 | kubectl get/describe secret |
| 解码命令 | base64 -d |
练习编辑器
bash
Loading...