1. 程式人生 > >K8S之Secret

K8S之Secret

bus 可能 mes 使用命令 簡介 gen ont 內容 ID

[toc]

簡介

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

K8S之Secret