日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core on K8S深入学习(9)Secret Configmap

發布時間:2023/12/4 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core on K8S深入学习(9)Secret Configmap 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇已加入《.NET Core on K8S學習實踐系列文章索引》,可以點擊查看更多容器化技術相關系列文章。

01

Secret

關于Secret

????????在應用啟動過程中需要一些敏感信息,比如數據庫用戶名、密碼,如果直接明文存儲在容器鏡像中是不安全的,K8S提供的方案是Secret

  

  Secret 會以密文的方式存儲數據,避免了直接在配置文件中保存敏感信息。

  Secret 會以?Volume?的形式被 mount 到 Pod,容器可通過文件的方式使用 Secret 中的敏感數據,也可以使用環境變量的方式使用。

創建與查看Secret

????????這里假設我們要創建一個包含以下信息的Secret:

  (1)用戶名:Edison

  (2)密碼:EDC123456*

  有4種方法來創建Secret:

  (1)通過 --from-literal:

  PS:每個?--from-literal?對應一個信息條目

  (2)通過 --from-file:

  PS:每個文件內容對應一個信息條目

  (3)通過 --from-env-file:

  PS:文件?env.txt?中每行 Key=Value 對應一個信息條目

  (4)通過YAML配置文件創建:(推薦方式

  由于配置文件中的敏感數據必須是通過base64編碼后的結果,因此需要獲取base64編碼后的值:

  

  下面就是這個YAML文件的內容:

apiVersion: v1 kind: Secret metadata: name: edc-secret data: username: RWRpc29u password: RURDMTIzNDU2Kg==

  通過kubectl apply來創建Secret:

  

?  創建成功后,驗證一下,查看一下這個Secret:

  

?  將Value進行base64反編碼,如下所示,與預期一致:

  

在Pod中使用Secret

  K8S中Pod中使用Secret有兩種方式,一是Volume方式,二是環境變量的方式。

  (1)Volume方式

  這里我們以一個示例演示一下如何通過Volume方式使用Secret,首先定義一個Pod:

  該Pod中會使用到剛剛定義的secret(edc-secret),然后volumeMounts定義了將foo mount到容器中的路徑為/etc/foo的目錄下,并且指定了讀寫權限為只讀。

  通過kubectl apply創建之后,我們試著在容器中讀取secret來驗證一下,如下圖所示:

  

  可以看到,K8S為每條敏感數據創建了一個文件,而且其Value是以明文存放的。

  當然,你也可以自定義存放數據的目錄,如下配置所示:

  這時,該secret就會存放于/etc/foo/edc-group/username 和 /etc/foo/edc-group/password 兩個目錄下了。

  (2)動態更新

  以Volume方式使用Secret,其中一個優點就是支持動態更新。例如,我們將Secret更新一下,重新應用到K8S中:

  通過kubectl apply重新應用之后,等待一段時間后,再次進入容器中驗證:

  

?  已經改為了 abcdefg*,符合預期。

  (2)環境變量方式

  通過Volume使用Secret看起來稍微麻煩了一點,容器必須通過文件讀取數據。K8S提供了另外一種方式,那就是環境變量方式。

  下面仍以上面的例子為例,修改配置文件:

  

?  可以看到,可以方便地通過環境變量獲取到Value。

?PS:需要注意的也是,雖然通過環境變量讀取Secret比較方便,但是無法支持Secret動態更新!

02

Configmap

關于Configmap

????????上面提到的Secret可以為Pod提供機密數據的存儲,而對于一些非機密敏感的數據,像一些應用的配置信息啊神馬的,則可以使用Configmap。

  Configmap的創建與使用方式與Secret非常類似,不同點只在于數據以明文形式存放(不過,我覺得Secret的密文形式也并不密文,只能算得上是簡單編碼)。

  

創建Configmap

????????和Secret一樣,可以通過 --from-literal,--from-file 和 --from-env-file來創建,這里我們跳過,直接說下我們最常用的yaml配置文件的方式。

使用Configmap

????????和Secret一樣,也可以通過Volume 或 環境變量兩種方式來使用Configmap。

  (1)Volume方式

  (2)環境變量方式

最佳實踐

????????大多數情況下,大家建議的最佳實踐是:

  (1)創建ConfigMap采用YAML配置方式 => 便于復用和版本管理

  (2)讀取ConfigMap采用Volume方式 => 便于配置動態更新

  下面我們創建一個Configmap,其YAML內容如下:

  這里注意別忘了:后面的 | 符號,然后創建&查看Configmap:

  

?  如果想要在Pod中使用此Configmap,可以在YAML配置如下:

  這里將Volume mount到了容器的 /etc/configmap 目錄中,下面我們驗證一下:

  

  這時我們將configmap更新一下,如下:

  通過kubectl apply更新一下configmap,然后再到pod中驗證是否動態更新:

  

?  可以看出,已經動態更新,符合預期!

03

小結

本文探索了在K8S中如何進行配置管理,如果需要密文配置,可以使用Secret,如果是一般應用配置,可以使用ConfigMap。雖然Secret和ConfigMap都定義了好幾種定義方式,但是我們一般采用YAML配置創建和Volume方式讀取,因為Volume方式可以支持動態更新。

參考資料:

(1)CloudMan,《每天5分鐘玩轉Kubernetes》

(2)李振良,《一天入門Kubernets教程》

(3)馬哥(馬永亮),《Kubernetes快速入門》

(4)benjamin楊,《K8S通過Secret管理敏感信息》

(5)伊凡的一天,《K8S對象之Secret》

你點的每個贊,我都認真當成了喜歡

總結

以上是生活随笔為你收集整理的ASP.NET Core on K8S深入学习(9)Secret Configmap的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。