Secret管理

最近更新时间:2020-10-21 15:38:57

密码、令牌、密钥等敏感信息,可以使用Secret来管理和配置。Secret 是key-value 类型的键值对,可以通过控制台创建对应的Secret对象,也可以通过挂载数据卷、环境变量或在容器的运行命令中使用 Secret。

容器服务控制台操作说明

创建Secret

1、进入容器服务控制台,点击左侧导航栏中的【配置管理】-【Secret】,进入Secret列表页,如下图所示:

Secret管理

2、点击【新建】,进入“创建 Secret”页面,根据以下提示进行配置,如下图所示:

Secret管理

  • 名称:输入要创建Secret的名称。
  • 所在地域:请根据实际需求进行选择。
  • 部署集群:请根据实际需求进行选择。
  • 命名空间:请根据实际需求进行选择。
  • 密钥类型:有【Opaque】和【kubernetes.io/dockerconfigjson】两种类型,请根据实际需求进行选择。
    • Opaque:base64编码格式的Secret,用来存储密码、密钥等。
    • kubernetes.io/dockerconfigjson:用于保存私有Docker Registry的认证信息。
  • 当密钥类型选择Opaque时:
    • 内容:请根据实际需求定义变量名和变量值。
  • 当密钥类型选择kubernetes.io/dockerconfigjson时:
    • 镜像仓库地址:请根据实际需求输入镜像仓库名或 ip。
    • 用户名:请根据实际需求输入镜像仓库登录用户名。
    • 密码:请根据实际需求输入镜像仓库登录密码。

3、点击【创建】,完成Secret创建。

使用Secret

方式一:通过挂载Secret类型数据卷

1、进入容器服务控制台,点击左侧导航栏中的【工作负载】,选择任意类型,进入相应列表页。 例如选择【工作负载】-【Deployment】,进入Deployment列表页。

2、点击【新建】,进入“创建Deployment”页面,在存储卷配置中,选择“使用Secret”类型,输入存储卷名称,如下图所示:

Secret管理

3、点击【选择Secret】,在“设置Secret”弹窗中进行配置,如下图所示:

Secret管理

  • 选择Secret:请根据实际需求进行选择。
  • 挂载选项:有【全部挂载】以及【指定key挂载】两种方式,请根据实际需求进行选择。 注:当选择指定key挂载时,可以通过Items向特定路径挂载,如挂载路径是 /etc/config,子路径是dev,最终会存储在/etc/config/dev下。

4、点击【创建】,完成创建。

方式二:通过定义容器环境变量

1、进入容器服务控制台,点击左侧导航栏中的【工作负载】,选择任意类型,进入相应列表页。 例如选择【工作负载】-【Deployment】,进入Deployment列表页。

2、点击【新建】,进入“创建Deployment”页面,进行容器配置时,在环境变量项单击【添加环境变量】,如下图所示:

Secret管理

3、在环境变量配置中,选择“引用Secret”方式添加,输入变量名以及选择变量值/变量引用,如下图所示:

Secret管理

4、点击【创建】,完成创建。

更新ConfigMap

1、进入容器服务控制台,点击左侧导航栏中的【配置管理】-【Secret】,进入Secret列表页,点击【编辑YAML】,如下图所示:

Secret管理

2、在“更新 Secret”页面,根据实际需求进行配置,单击【更新】完成更新。

删除ConfigMap

1、进入Secret列表页,点击【删除】,如下图所示:

Secret管理

2、在出现的弹窗中,点击【确认】即可删除Secret。

Kubectl 命令操作说明

创建Secret

方式一:通过YAML文件创建Secret

首先将Secret的data进行Base64转码

# echo -n 'admin' | base64 
YWRtaW4= 
# echo -n '12345' | base64 
MTIzNDU=

secret-test.yaml示例:

apiVersion: v1
kind: Secret
metadata:
   name: secret-test
type: Opaque
data:
   username: YWRtaW4=
   password: MTIzNDU=

创建secret-test.yaml

# kubectl apply -f secret-test.yaml

方式二:通过kubectl create secret命令直接创建Secret

将用户名和密码保存在本地的./username.txt和./password.txt 文件里。

# echo -n 'admin' > ./username.txt
# echo -n '12345' > ./password.txt

创建secret

# kubectl create secret generic secret-test --from-file=./username.txt --from-file=./password.txt

使用Secret

方式一:通过挂载Secret类型数据卷

secret-volume.yaml示例:

apiVersion: v1
kind: Pod
metadata:
   name: pod1-test
spec:
   containers:
     - name: container-test
       image: ksyun/nginx:latest
       volumeMounts:                             #数据卷的挂载点
         - name: secret-volume
           mountPath: /etc/config
   volumes:                                      #在pod级别设置卷,然后将其挂载到pod内的容器中
     - name: secret-volume
       secret:
         secretName: secret-test                       #挂载的Secret名称
   restartPolicy: Never

方式二:通过定义容器环境变量

secret-env.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod2-test
spec:
  containers:
    - name: container-test
      image: ksyun/nainx:latest
      env:
        - name: SECRET_USERNAME
          valueFrom:
            secretKeyRef:
              name: secret-test
              key: username
        - name: SECRET_PASSWORD
          valueFrom:
            secretKeyRef:
              name: secret-test
              key: password
  restartPolicy: Never

金山云,开启您的云计算之旅

免费注册