中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

K8S中如何創建Secret對象

發布時間:2021-12-16 09:17:24 來源:億速云 閱讀:586 作者:柒染 欄目:云計算

今天就跟大家聊聊有關K8S中如何創建Secret對象,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

前言

Secret 可以用來保存密碼、密鑰等敏感信息,避免密鑰直接放在 Pod 的YAML定義文件或容器鏡像中導致的泄露問題。

密鑰使用 Base64 編碼形式存儲于 Secret 對象中,Pod 掛載后自動解碼為明文。

通過 kubectl 創建 Secret

創建用戶名/密碼文件

echo -n 'username' > ./username.txt
echo -n 'password' > ./password.txt

寫入 Secret 對象中

# kubectl create secret generic db-info --from-file=./username.txt --from-file=./password.txt
secret/db-info created

檢查 Secret

# kubectl get secret
NAME                  TYPE                                  DATA   AGE
db-info               Opaque                                2      106s

查看剛寫入的 db-info 的詳細信息

# kubectl describe secret db-info
Name:         db-info
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
username.txt:  8 bytes
password.txt:  8 bytes

查看密鑰的值

# kubectl get secret db-info -o yaml

通過 YAML 創建 Secret

先將要保存的值進行 Base64 編碼

# echo -n 'username' | base64 
dXNlcm5hbWU=
# echo -n 'password' | base64
cGFzc3dvcmQ=

#cat secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: base64編碼
  password: base64編碼

創建 secret

# kubectl apply -f secret.yaml 
secret/mysecret created

查看

# kubectl get secret
NAME                  TYPE                                  DATA   AGE
mysecret              Opaque                                2      2m5s

查看密鑰的值

# kubectl get secret mysecret -o yaml

編輯 secret

kubectl edit secrets mysecret

在 Pod 中使用 Secret

  1. 將 Secret 以卷的形式掛載到 Pod 中

  2. 卷中每一個文件名對應 Secret 中的一個 key 名稱

  3. Secret 的值以 base64 解碼后明文形式存儲于卷文件中

  4. 支持實時動態更新

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

以上示例中,

將名為 mysecret 的 secret 對象映射為卷,卷名為 foo,

將名為 foo 的卷掛載到 Pod 中的路徑 /etc/foo 下面,

mysecret 中username/password兩個key,分別映射為文件。

多個 Pod 可以共享一個卷。

可以進入 Pod 中查看這兩個文件內容

# kubectl exec -it mypod -- ls /etc/foo/
password  username

# kubectl exec -it mypod -- cat /etc/foo/username
admin

# kubectl exec -it mypod -- cat /etc/foo/password
password

Secret 對象將重要性高的秘鑰和 Pod 進行了解耦處理。

它有如下特點:

  1. Secret 對象需先于引用它的 Pod 創建。

  2. Secret 對象和引用它的 Pod 必須位于同一命名空間。

  3. Secret 對象單個大小限制為 1M。

  4. Secret 對象中數據以純文本的方式存儲在 etcd 中。

  5. 除了以卷形式掛載外,還可以環境變量形式用于 Pod 中。

  6. 使用環境變量形式的問題是,secret無法動態實時更新。

官方安全建議:

  1. 管理員應該為集群數據開啟靜態加密(v1.13 以上版本)。

  2. 管理員應該限制只有 admin 用戶能訪問 etcd。

  3. API 服務器中的 Secret 數據位于 etcd 使用的磁盤上;應該在不再使用時擦除/粉碎 etcd 使用的磁盤。

  4. 如果 etcd 運行在集群內,管理員應該確保 etcd 之間的通信使用 SSL/TLS 進行加密。

  5. secret 的YAML中包含的 base64 編碼為可逆編碼,不要將其加入代碼庫或公開。

  6. 防止應用程序讀取 secret 中數據后寫入日志導致泄露。

  7. 所有可以運行該 Pod 的用戶均可讀取到掛載卷中的 secret 值。

  8. 任何節點的 root 用戶都可以通過模擬 kubelet 來讀取 API 服務器中的任何 Secret。 僅向實際需要 Secret 的節點發送 Secret 數據才能限制節點的 root 賬號漏洞的影響, 該功能還在計劃中。

看完上述內容,你們對K8S中如何創建Secret對象有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延津县| 新津县| 安远县| 黔西县| 聂拉木县| 通化市| 保康县| 温州市| 遂溪县| 长丰县| 平湖市| 商洛市| 铅山县| 察隅县| 北宁市| 湖北省| 山丹县| 海门市| 龙川县| 天水市| 阳新县| 楚雄市| 疏附县| 深水埗区| 专栏| 关岭| 福海县| 韩城市| 锦州市| 巴林左旗| 鹰潭市| 武强县| 拉孜县| 册亨县| 安吉县| 志丹县| 桐城市| 贵州省| 敦化市| 酒泉市| 金坛市|