📜  Kubernetes-秘密

📅  最后修改于: 2020-11-01 04:14:37             🧑  作者: Mango


可以将机密定义为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: 
   username: 

创造秘密

$ 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"