Kubernetes Secret 是 Kubernetes 系统中用来存储和管理敏感信息的一个对象。这些敏感信息可能包括密码、OAuth tokens、SSH 密钥等。使用 Secret 可以更安全地管理敏感数据,因为它们不是以明文存储在 Pod 的定义中或者容器镜像中,而是以加密形式存放在 Kubernetes API 服务器上。
假设你有一个需要连接到 MySQL 数据库的应用程序,你可以创建一个 Secret 来存储数据库的用户名和密码。
创建 Secret使用以下命令创建一个名为 mysql-secret
的 Secret:
apiVersion: v1
kind: Secret
metadata:
name: mysql-secret
type: Opaque
data:
username: [base64 encoded username]
password: [base64 encoded password]
其中,[base64 encoded username]
和 [base64 encoded password]
分别是经过 base64 编码的用户名和密码。
在 Pod 中使用 Secret在 Pod 定义中,你可以通过环境变量或卷的方式来使用这个 Secret:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: myapp
env:
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-secret
key: username
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: password
在这个案例中,Pod myapp-pod
将会从 mysql-secret
中获取数据库用户名和密码,并设置为环境变量 MYSQL_USER
和 MYSQL_PASSWORD
。