K8S之Secret

简介

secret顾名思义,用于存储一些敏感的需要加密的数据。这些数据可能是要保存在pod的定义文件或者docker的镜像中。把这些数据通过加密的方式存放到secrets对象中,可以降低信息泄露的风险。在secret中存储的数据都需要通过base64进行转换加密后存放。

创建secret

1、加密用户名密码

假设有两个敏感数据,分别是用户名breeze,密码:123456。首先需要使用base64来转换数据:

echo -n "breeze"| base64
YnJlZXpl
echo -n "123456"| base64
MTIzNDU2

然后创建一个secret.yml文件,内容如下:

apiVersion: v1
kind: Secret
metadata:
  name: test-secret
data:
  username: YnJlZXpl
  password: MTIzNDU2

创建secret:

kubectl create -f secret.yml

也可以直接使用命令行生成secret:

 kubectl create secret generic test-secret --from-literal=username='breeze',password='123456'

2、加密证书文件

kubectl create secret tls ingress-secret --key server.key --cert ca.crt

使用secret

1、使用volume挂载方式

给出一个pod示例:

apiVersion: v1
kind: Pod
metadata:
  name: secret-test-pod
spec:
  containers:
    - name: test-container
      image: nginx
      volumeMounts:
          - name: secret-volume
            mountPath: /etc/secret-volume
  volumes:
    - name: secret-volume
      secret:
        secretName: test-secret

2、将secret用于env

创建一介secret.yml文件,内容如下:

apiVersion: v1
data:
  data-1: c2ltb25zdQ==
  data-2: c2ltb25zdS5tYWlsQGdtYWlsLmNvbQ==
kind: Secret
metadata:
  name: test-secret
  namespace: default
type: Opaque

与configmap的用法一致,下面直接贴上示例文件:

apiVersion: v1
kind: Pod
metadata:
  name: secret-by-env
spec:
  containers:
  - name: busydayeasylife
    image: gcr.io/google_containers/busybox:1.24
    command:
    - /bin/sh
    - -c
    - --
    args:
    - "while [ true ]; do echo $NAME; echo $EMAIL; sleep 30; done;"
    env:
    - name: NAME
      valueFrom:
        secretKeyRef:
          name: test-secret
          key: data-1
    - name: EMAIL
      valueFrom:
        secretKeyRef:
          name: test-secret
          key: data-2
posted @ 2018-05-28 18:55  breezey  阅读(5523)  评论(0编辑  收藏  举报