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-secrets
2)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"