1、Kubernetes(K8s) Secret
Secret可以定义为Kubernetes对象,用于存储用户名、密码、token和密钥等敏感信息。用户就可以通过在 Pod 的容器里挂载 Volume 的方式,或者环境变量的方式访问到这些 Secret 里保存的信息。
Kubernetes中有多种创建Secret的方法。可以通过从文本文件创建。也可以通过从yaml文件创建。
2、使用文本文件创建Secret
可以将用户和密码等敏感信息存储在一个txt文件中,通过这个文本文件创建Secret。
例如,
$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./.
3、通过Yaml文件创建Secret
1)Yaml文件
apiVersion: v1 kind: Secret metadata: name: tomcat-pass type: Opaque data: password: <User Password> username: <User Name>
2)创建Secret
$ kubectl create –f Secret.yaml
4、使用Secret
创建了Secret,则就可以在pod或RC中使用,通过环境变量或Volume方式。
1)环境变量
为了使用secret作为环境变量,可以在pod yaml文件的spec部分使用env。
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: tomcat-pass例如,
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:
- name: ENV
valueFrom:
configMapKeyRef:
name: appname
key: tomcat-secrets2)Volume
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat:7.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"例如,
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"