Kubernetes(k8s) 密钥 Secret

Secret 可以定义为 Kubernetes 对象,用于存储敏感数据,例如用户名和密码,并进行加密。

在 Kubernetes 中有多种创建密钥的方法。

  • 从 txt 文件创建。
  • 从 yaml 文件创建。

从文本文件创建

为了从文本文件(例如用户名和密码)创建密钥,我们首先需要将它们存储在 txt 文件中并使用以下命令。

$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./.
password.txt

从 Yaml 文件创建

apiVersion: v1
kind: Secret
metadata:
name: tomcat-pass
type: Opaque
data:
password: <User Password>
username: <User Name>

创建 密钥

$ kubectl create –f Secret.yaml
secrets/tomcat-pass

使用密钥

一旦我们创建了密钥,它就可以在 pod 或复制控制器中被使用为

  • 环境变量

作为环境变量

为了使用 secret 作为环境变量,我们将在 pod yaml 文件的 spec 部分下使用 env。

env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: tomcat-pass

作为卷

spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat:7.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"

密钥配置作为环境变量

apiVersion: v1
kind: ReplicationController
metadata:
name: appname
spec:
replicas: replica_count
template:
metadata:
name: appname
spec:
nodeSelector:
resource-group:
containers:
- name: appname
image:
imagePullPolicy: Always
ports:
- containerPort: 3000
env: -----------------------------> 1
- name: ENV
valueFrom:
configMapKeyRef:
name: appname
key: tomcat-secrets

在上面的代码中,在 env 定义下,我们使用 secrets 作为复制控制器中的环境变量。

作为卷挂载的密钥

apiVersion: v1
kind: pod
metadata:
name: appname
spec:
metadata:
name: appname
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat: 8.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"

查看笔记

扫码一下
查看教程更方便