【云原生】k8s存儲管理中ConfigMap Secret的使用

?

?

目錄

1 ConfigMap

1.1 簡介

1.2 優點

1.3 定義 ConfigMap

1.4 使用

2 Secret

2.1 簡介

2.1 定義 Secret

2.2 使用


1 ConfigMap

1.1 簡介

在 Kubernetes 中,ConfigMap 是一種用于存儲非敏感信息的 Kubernetes 對象。它用于存儲配置數據,如鍵值對、整個配置文件或 JSON 數據等。ConfigMap 通常用于容器鏡像中的配置文件、命令行參數和環境變量等。

ConfigMap 可以通過三種方式進行配置數據的注入:

  1. 環境變量注入:將配置數據注入到 Pod 中的容器環境變量中。

  2. 配置文件注入:將配置數據注入到 Pod 中的容器文件系統中,容器可以讀取這些文件。

  3. 命令行參數注入:將配置數據注入到容器的命令行參數中。

1.2 優點

  1. 避免了硬編碼,將配置數據與應用代碼分離。

  2. 便于維護和更新,可以單獨修改 ConfigMap 而不需要重新構建鏡像。

  3. 可以通過多種方式注入配置數據,更加靈活。

  4. 可以通過 Kubernetes 的自動化機制對 ConfigMap 進行版本控制和回滾。

  5. ConfigMap 可以被多個 Pod 共享,減少了配置數據的重復存儲。

1.3 定義 ConfigMap

  • 基本操作

    # 查看 configmap
    $ kubectl get configmap/cm ?
    ?
    # 查看詳細
    $ kubectl describe configmap/cm my-config
    ?
    # 刪除 cm
    $ kubectl delete cm my-config

  • 命令行創建

    • 可以使用kubectl create configmap命令來創建configmap,具體命令如下:

    • $ kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2

  • 通過配置文件創建推薦

    • 可以通過創建YAML文件的方式來定義configmap的內容。例如,創建一個名為my-config的configmap,內容如下:

    • apiVersion: v1
      kind: ConfigMap
      metadata:name: my-config
      data:key1: value1key2: value2

    • apiVersion: v1
      kind: ConfigMap
      metadata:name: app-config
      data:application.yml: |name: xiaochen

    • 然后使用kubectl apply -f命令來創建con

      $ kubectl create configmap my-config --from-file=config-files/

      figmap。

  • 通過文件創建:

    • $ echo -n admin >./username
      $ echo -n 123456 > ./password
      $ kubectl create configmap myconfigmap --from-file=./username --from-file=./password

  • 通過文件夾創建

    • 可以將多個配置文件放在同一個文件夾下,然后使用kubectl create configmap命令來創建configmap,例如:

    •  
    • 這將創建一個名為my-config的configmap,其中包含config-files/文件夾下所有的文件內容作為鍵值對。

  • 通過環境變量創建

    • 可以將環境變量的值轉換為configmap。例如,使用以下命令將當前環境變量的值轉換為configmap:

    • $ kubectl create configmap my-config --from-env-file=<(env)

1.4 使用

  • 環境變量中使用

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: busyboxcommand: ["/bin/sh", "-c", "echo $BUSY_NAME ; sleep 3600;"]env:# name: 是容器需要環境變量名稱- name: BUSY_NAME# valueForm: value 來源與什么valueFrom:configMapKeyRef: ?# 值來源與 configmap  來源與哪個 configmap 來源與哪個 configmap 中 keyname: app-cmkey: name# 一次性注入這個 configmapenvFrom:- configMapRef:name: my-config

注意: env 是指定 configmap 中某個 key 進行注入 envForm 將 configmap 中內容全部注入

  • 通過 Volume 使用配置

apiVersion: v1
kind: Pod
metadata:name: myapp-pod
spec:containers:- name: myapp-containerimage: busyboxcommand: ["/bin/sh","-c","sleep 3600"]volumeMounts:- name: data-volumemountPath: /datavolumes:- name: data-volumeconfigMap:name: application-cm

2 Secret

2.1 簡介

在 Kubernetes 中,Secret 是一種用于存儲和管理敏感信息的對象類型,如密碼、API密鑰、證書等等。它們與 ConfigMap 相似,但在處理敏感信息時,Secret 會提供更高的安全性和保密性。

Secret 可以用于將這些敏感信息注入到容器中,并確保這些信息在運行時不會被意外泄漏或暴露給其他人。Secret 可以通過多種方式定義和使用,例如直接定義、從文件中加載、從環境變量中加載等。

在 Kubernetes 中,Secrets 通常被用于以下場景:

  • 作為卷掛載到 Pod 中,用于存儲證書、密鑰等敏感文件

  • 在 Pod 中使用環境變量,用于存儲用戶名和密碼等敏感信息

  • 用于存儲 Docker 鏡像倉庫的登錄信息

  • 用于存儲外部服務的 API 密鑰

Secrets 可以在 Pod 的 spec 中通過 volume 和環境變量的方式引用。當容器使用 volume 來引用 Secret 時,Secret 會以文件的形式掛載到容器中。當容器使用環境變量來引用 Secret 時,Secret 中的數據會以 base64 編碼后,以鍵值對的形式注入到容器的環境變量中。

需要注意的是,Secret 并不提供強大的安全保證,只是簡單地將數據存儲在 base64 編碼的形式下,并不提供加密或其他安全措施,因此不要將高度敏感的信息存儲在 Secret 中。在處理高度敏感的信息時,需要使用更高級別的保護機制,如使用加密數據的 Volume 類型,或者使用第三方加密解決方案等。

2.1 定義 Secret

  • 使用命令行創建

    • 可以使用 kubectl create secret 命令來創建 secret,例如:

    • $ kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=admin123

  • 使用 YAML 文件定義

    • 可以創建一個 YAML 文件來定義 Secret 對象,例如:

    • apiVersion: v1
      kind: Secret
      metadata:name: my-secret
      type: Opaque
      data:username: YWRtaW4= # base64 編碼后的用戶名 adminpassword: MWYyZDFlMmU2N2Rm # base64 編碼后的密碼 1f2d1e2e67df

    • 注意: 這個 YAML 文件定義了一個名為 my-secret 的 Secret 對象,其中包含了兩個 base64 編碼后的 key-value 對:username 和 password。

  • 使用文件創建:

    $ echo -n admin >./username
    $ echo -n 123456 > ./password
    $ kubectl create secret generic mysecret --from-file=./username --from-file=./password

  • 通過環境變量創建

    • 可以將環境變量的值轉換為secret。例如,使用以下命令將當前環境變量的值轉換為secret:

    • $ kubectl create secret generic  my-config --from-env-file=<(env)

2.2 使用

  • 環境變量,命令行參數使用 Secret

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: myapp-containerimage: busyboxcommand: ["/bin/sh","-c","sleep 3600"]env:- name: USERNAMEvalueFrom:secretKeyRef:name: my-secretkey: username- name: PASSWORDvalueFrom:secretKeyRef:name: my-secretkey: password# 一次性注入這個 secretenvFrom:- secretRef:name: my-secretrestartPolicy: Never
  • volume 使用

apiVersion: v1
kind: Pod
metadata:name: myapp-pod
spec:containers:- name: myapp-containerimage: busyboxcommand: ["/bin/sh","-c","sleep 3600"]volumeMounts:- name: secret-volumemountPath: /datavolumes:- name: secret-volumesecret:secretName: aaa

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

樹莓派系統入門教程(三)—— 使用Windows上的VSCode遠程連接樹莓派進行Python開發

樹莓派系統入門教程&#xff08;三&#xff09;—— 使用Windows上的VSCode遠程連接樹莓派進行Python開發 1. 安裝VSCode和SSH擴展2. SSH連接配置3. 連接到樹莓派4. 運行Python程序5. 建議和注意事項 很多開發者更喜歡在大屏幕和強大的開發環境中編寫代碼&#xff0c;但同時他們…

Vue 2 動態組件和異步組件

先閱讀 【Vue 2 組件基礎】中的初步了解動態組件。 動態組件與keep-alive 我們知道動態組件使用is屬性和component標簽結合來切換不同組件。 下面給出一個示例&#xff1a; <!DOCTYPE html> <html><head><title>Vue 動態組件</title><scri…

Typora 相對路徑保存圖片以及 Gitee 無法顯示圖片

目錄 Typora 相對路徑保存圖片 Gitee 無法顯示圖片 Typora 相對路徑保存圖片 Step1&#xff1a;修改 Typora 的偏好設置 自動在當前目錄創建名為 "./${filename}.assets" 的文件夾粘貼圖片到 md 中時&#xff0c;圖片會自動另存到 "./${filename}.assets&qu…

iptables學習筆記

iptables的結構&#xff1a; iptables由上而下&#xff0c;由Tables&#xff0c;Chains&#xff0c;Rules組成。 一、iptables的表tables與鏈chains iptables有Filter, NAT, Mangle, Raw四種內建表&#xff1a; 1. Filter表 Filter是iptables的默認表&#xff0c;它有以下…

LVGL基本控件介紹

1. 弧(lv_arc) 特點 弧的0度在右邊&#xff0c;90度在下邊 效果圖 源碼 void lv_arc_demo(void) {/* Create an Arc */lv_obj_t* arc lv_arc_create(lv_scr_act(), NULL);/* Set Background range */lv_arc_set_bg_angles(arc, 0, 360);/* Set Forward range */lv_arc_set…

第十課:Qt 字符編碼和中文亂碼相關問題

功能描述&#xff1a;最全的 Qt 字符編碼相關知識以及中文亂碼的原因與解決辦法 一、字符編碼種類 ASCII 碼 美國人對信息交流的編碼&#xff0c;包括 26 個字母&#xff08;大小寫&#xff09;、數字和標點符號等&#xff0c;用一個字節&#xff08;8 位&#xff09;表示這些…

eNSP:VLAN-hybrid實驗應用

實驗要求&#xff1a; 拓撲圖 配置 sw1: [sw1]vlan batch 2 to 6[sw1]int Ethernet 0/0/2 [sw1-Ethernet0/0/2]port link-type access [sw1-Ethernet0/0/2]port default vlan 2 [sw1-Ethernet0/0/2]int e 0/0/4 [sw1-Ethernet0/0/4]port link-ty access [sw1-Ethernet0/0/…

74最新提案

最新提案 [do 表達式](https://es6.ruanyifeng.com/#docs/proposals#do 表達式)[throw 表達式](https://es6.ruanyifeng.com/#docs/proposals#throw 表達式)函數的部分執行管道運算符Math.signbit()雙冒號運算符[Realm API](https://es6.ruanyifeng.com/#docs/proposals#Realm…

springBoot 配置文件 spring.mvc.throw-exception-if-no-handler-found 參數的作用

在Spring Boot應用中&#xff0c;可以通過配置文件來控制當找不到請求處理器&#xff08;handler&#xff09;時是否拋出異常。具體的配置參數是spring.mvc.throw-exception-if-no-handler-found。 默認情況下&#xff0c;該參數的值為false&#xff0c;即當找不到請求處理器時…

《Zookeeper》源碼分析(十四)之 投票是如何發送與接收的

目錄 MessengerWorkerSenderWorkerReceiver第5步&#xff1a;檢驗選票的epoch和version第6步&#xff1a;處理投票 Messenger Messenger管理接收到的消息以及待發送的消息&#xff0c;其源碼如下&#xff1a; 它的源碼比較簡單&#xff0c;接下來著重介紹它維護的兩個線程&a…

Docker 網絡之 ipvlan 和 macvlan

Docker ipvlan 和 macvlan 引言 本文講解了Docker 網絡模式中的 ipvlan 和 macvlan 的區別,目前自己在生產環境中使用的 ipvlan 模式非常問題.也解決了實際業務問題. IPvlan L2 mode example ipvlan 無需網卡混雜模式 , 運行如下命令后可以生成一個 vlan 子接口 , 會和主網卡…

ElasticSearch的客戶端操作

ElasticSearch的客戶端操作 1、客戶端介紹 官方文檔地址&#xff1a; https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 實際開發中&#xff0c;有多種方式操作Elasticsearch&#xff1a; 客戶端工具&#xff1a;發送http請求(RESTful風格)操作…

CF1195E OpenStreetMap 題解

很好的單調隊列題。 題目傳送門 題目意思&#xff1a; 給定一個 n m n\times m nm 的矩陣&#xff0c;求出所有大小為 a b a\times b ab 的子矩形中的最小值的和。 思路&#xff1a; 通過題目給的要求建立二維數組 h h h。通過單調隊列一行一行地掃&#xff0c;將掃出來…

Azure Blob存儲使用

創建存儲賬戶,性能選擇標準即可&#xff0c;冗余選擇本地冗余存儲即可 容器選擇類別選擇專用即可 可以上傳文件到blob中 打開文件可以看到文件的訪問路徑 4.編輯中可以修改文件 復制鏈接&#xff0c;嘗試訪問&#xff0c;可以看到沒有辦法訪問&#xff0c;因為創建容器的時候選…

spring(15) SpringBoot啟動過程

目錄 一、過程簡介二、過程流程圖三、源碼分析1、運行 SpringApplication.run() 方法2、確定應用程序類型3、加載所有的初始化器4、加載所有的監聽器5、設置程序運行的主類6、開啟計時器7、將 java.awt.headless 設置為 true8、獲取并啟用監聽器9、設置應用程序參數10、準備環境…

LeetCode450. 刪除二叉搜索樹中的節點

450. 刪除二叉搜索樹中的節點 文章目錄 [450. 刪除二叉搜索樹中的節點](https://leetcode.cn/problems/delete-node-in-a-bst/)一、題目二、題解方法一&#xff1a;遞歸&#xff08;一種麻煩的方法&#xff09;方法二&#xff1a;優化后的遞歸 一、題目 給定一個二叉搜索樹的根…

SpringBoot校驗,DTO文件中常用的注解應用案例.

在觀看本篇文章之前&#xff0c;可以先參考我之前寫的一篇文章 “ Spring5&#xff0c;Service層對DTO文件進行數據格式校驗. ” &#xff0c;這篇文章是介紹在 Service層 對DTO文件的校驗。 以下方的 CompanyDTO 文件為例&#xff0c;講解不同的注解使用場景&#xff0c;以及…

論文閱讀——Imperceptible Adversarial Attack via Invertible Neural Networks

Imperceptible Adversarial Attack via Invertible Neural Networks 作者&#xff1a;Zihan Chen, Ziyue Wang, Junjie Huang*, Wentao Zhao, Xiao Liu, Dejian Guan 解決的問題&#xff1a;雖然視覺不可感知性是對抗性示例的理想特性&#xff0c;但傳統的對抗性攻擊仍然會產…

每天一道leetcode:1129. 顏色交替的最短路徑(圖論中等廣度優先遍歷)

今日份題目&#xff1a; 給定一個整數 n&#xff0c;即有向圖中的節點數&#xff0c;其中節點標記為 0 到 n - 1。圖中的每條邊為紅色或者藍色&#xff0c;并且可能存在自環或平行邊。 給定兩個數組 redEdges 和 blueEdges&#xff0c;其中&#xff1a; redEdges[i] [ai, bi…

Dubbo Spring Boot Starter 開發微服務應用

環境要求 系統&#xff1a;Windows、Linux、MacOS JDK 8 及以上&#xff08;推薦使用 JDK17&#xff09; Git IntelliJ IDEA&#xff08;可選&#xff09; Docker &#xff08;可選&#xff09; 項目介紹 在本任務中&#xff0c;將分為 3 個子模塊進行獨立開發&#xff…