Secret

Secret是一種加密存儲的資源對象,您能夠將認證信息、證書、私鑰等保存在Secret中,而不須要把這些敏感數據暴露到鏡像或者Pod定義中,從而更加安全和靈活。nginx

Secret與ConfigMap很是像,都是key-value鍵值對形式,使用方式也相同,不一樣的是Secret會加密存儲,因此適用於存儲敏感信息。ubuntu

Base64編碼

Secret與ConfigMap相同,是以鍵值對形式保存數據,所不一樣的是在建立時,Secret的Value必須使用Base64編碼。api

對字符串進行Base64編碼,能夠直接使用「echo -n 要編碼的內容 | base64」命令便可,示例以下:安全

root@ubuntu:~# echo -n "3306" | base64
MzMwNg==

建立Secret

以下示例中定義的Secret中包含兩條Key-Value。ide

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
data:
  key1: aGVsbG8gd29ybGQ=   # "hello world" Base64編碼後的值
  key2: MzMwNg==           # "3306" Base64編碼後的值

在環境變量中引用Secret

Secret最多見的用法是做爲環境變量注入到容器中,以下示例。編碼

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx:alpine
    name: container-0
    resources:
      limits:
        cpu: 100m
        memory: 200Mi
      requests:
        cpu: 100m
        memory: 200Mi
    env:
    - name: key
      valueFrom:
        secretKeyRef:
          name: mysecret
          key: key1
  imagePullSecrets:
  - name: default-secret

在Volume中引用Secret

在Volume中引用Secret,就是經過文件的方式直接將Secret的每條數據填入Volume,每條數據是一個文件,鍵就是文件名,鍵值就是文件內容。加密

以下示例中,建立一個名爲vol-secret的Volume,這個Volume引用名爲「mysecret」的Secret,再將Volume掛載到容器的「/tmp」路徑下。Pod建立成功後,在容器的「/tmp」路徑下,就有兩個文件key1和key2。spa

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx:alpine
    name: container-0
    resources:
      limits:
        cpu: 100m
        memory: 200Mi
      requests:
        cpu: 100m
        memory: 200Mi
    volumeMounts:
    - name: vol-secret              # 掛載名爲vol-secret的Volume
      mountPath: "/tmp"
  imagePullSecrets:
  - name: default-secret
  volumes:
  - name: vol-secret
    secret:                         # 引用Secret
      secretName: mysecret

進入Pod容器中,能夠在/tmp目錄下發現key1和key2兩個文件,並看到文件中的值是base64解碼後的值,分別爲「hello world」和「3306」。code

進入Pod容器中,能夠在/tmp目錄下發現key1和key2兩個文件,並看到文件中的值是base64解碼後的值,分別爲「hello world」和「3306」。對象

相關文章
相關標籤/搜索