Kubernetes 使用Kustomize管理Secret

2022-06-13 10:20 更新

使用 Kustomize 管理 Secret

從 kubernetes v1.14 開始,?kubectl ?支持使用 Kustomize 管理對(duì)象。 Kustomize 提供了資源生成器(Generators)來(lái)創(chuàng)建 Secret 和 ConfigMap。 Kustomize 生成器應(yīng)該在某個(gè)目錄的 ?kustomization.yaml? 文件中指定。 生成 Secret 后,你可以使用 ?kubectl apply? 在 API 服務(wù)器上創(chuàng)建該 Secret。

在開始之前

你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒(méi)有集群,你可以通過(guò) Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:

創(chuàng)建 Kustomization 文件 

你可以在? kustomization.yaml? 中定義 ?secreteGenerator?,并在定義中引用其他現(xiàn)成的文件,生成 Secret。 例如:下面的 kustomization 文件 引用了 ?./username.txt? 和 ?./password.txt ?文件:

secretGenerator:
- name: db-user-pass
  files:
  - username.txt
  - password.txt

你也可以在 ?kustomization.yaml? 文件中指定一些字面量定義 ?secretGenerator?。 例如:下面的 ?kustomization.yaml? 文件中包含了 ?username ?和 ?password ?兩個(gè)字面量:

secretGenerator:
- name: db-user-pass
  literals:
  - username=admin
  - password=1f2d1e2e67df

你也可以使用 ?.env? 文件在 ?kustomization.yaml? 中定義 ?secretGenerator?。 例如:下面的 ?kustomization.yaml? 文件從 ?.env.secret? 文件獲取數(shù)據(jù)。

secretGenerator:
- name: db-user-pass
  envs:
  - .env.secret

注意,上面兩種情況,你都不需要使用 base64 編碼。

創(chuàng)建 Secret 

使用 ?kubectl apply? 命令應(yīng)用包含 ?kustomization.yaml? 文件的目錄創(chuàng)建 Secret。

kubectl apply -k .

輸出類似于:

secret/db-user-pass-96mffmfh4k created

請(qǐng)注意,生成 Secret 時(shí),Secret 的名稱最終是由 ?name ?字段和數(shù)據(jù)的哈希值拼接而成。 這將保證每次修改數(shù)據(jù)時(shí)生成一個(gè)新的 Secret。

檢查創(chuàng)建的 Secret 

你可以檢查剛才創(chuàng)建的 Secret:

kubectl get secrets

輸出類似于:

NAME                             TYPE                                  DATA      AGE
db-user-pass-96mffmfh4k          Opaque                                2         51s

你可以看到 Secret 的描述:

kubectl describe secrets/db-user-pass-96mffmfh4k

輸出類似于:

Name:            db-user-pass-96mffmfh4k
Namespace:       default
Labels:          <none>
Annotations:     <none>

Type:            Opaque

Data
====
password.txt:    12 bytes
username.txt:    5 bytes

?kubectl get? 和 ?kubectl describe? 命令默認(rèn)不顯示 ?Secret ?的內(nèi)容。 這是為了防止 ?Secret ?被意外暴露給旁觀者或存儲(chǔ)在終端日志中。

清理 

刪除你創(chuàng)建的 Secret:

kubectl delete secret db-user-pass-96mffmfh4k


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)