K8S之Secret
阿新 • • 發佈:2018-05-28
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