Kubernetes - 金鑰



金鑰可以定義為用於儲存敏感資料(如使用者名稱和密碼)的 Kubernetes 物件,並對其加密。

在 Kubernetes 中建立金鑰有許多方法。

  • 從 txt 檔案中建立。
  • 從 yaml 檔案中建立。

從文字檔案中建立

要從文字檔案(例如使用者名稱和密碼)建立金鑰,我們首先需要將它們儲存在一個 txt 檔案中,然後使用以下命令。

$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./.
password.txt

從 Yaml 檔案中建立

apiVersion: v1
kind: Secret
metadata:
name: tomcat-pass
type: Opaque
data:
   password: <User Password>
   username: <User Name>

建立金鑰

$ kubectl create –f Secret.yaml
secrets/tomcat-pass

使用金鑰

一旦我們建立了金鑰,就可以在 Pod 或副本控制器中引用該金鑰,如下所示 −

  • 環境變數

作為環境變數

要將金鑰用作環境變數,我們將在 Pod Yaml 檔案的 spec 部分下使用 env

env:
- name: SECRET_USERNAME
   valueFrom:
      secretKeyRef:
         name: mysecret
         key: tomcat-pass

作為卷

spec:
   volumes:
      - name: "secretstest"
         secret:
            secretName: tomcat-pass
   containers:
      - image: tomcat:7.0
         name: awebserver
         volumeMounts:
            - mountPath: "/tmp/mysec"
            name: "secretstest"

作為環境變數的金鑰配置

apiVersion: v1
kind: ReplicationController
metadata:
   name: appname
spec:
replicas: replica_count
template:
   metadata:
      name: appname
   spec:
      nodeSelector:
         resource-group:
      containers:
         - name: appname
            image:
            imagePullPolicy: Always
            ports:
            - containerPort: 3000
            env: -----------------------------> 1
               - name: ENV
                  valueFrom:
                     configMapKeyRef:
                        name: appname
                        key: tomcat-secrets

在上面的程式碼中,在 env 定義下,我們正在副本控制器中將金鑰用作環境變數。

金鑰作為卷掛載

apiVersion: v1
kind: pod
metadata:
   name: appname
spec:
   metadata:
      name: appname
   spec:
   volumes:
      - name: "secretstest"
         secret:
            secretName: tomcat-pass
   containers:
      - image: tomcat: 8.0
         name: awebserver
         volumeMounts:
            - mountPath: "/tmp/mysec"
            name: "secretstest"
廣告