Kubernetes 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 定义下,我们使用机密作为复制控制器中的环境变量。
作为卷挂载的秘密
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"