K8S Secret 快速開始

一、什么是?Secret?

Kubernetes(K8s)中的?Secret?是一種用于存儲和管理敏感信息(如密碼、令牌、證書、API 密鑰等)的資源對象。它避免了將敏感數據明文寫入配置文件、鏡像或代碼中,提供了一種更安全的方式來處理機密信息。

二、主要用途

  • 安全需求:敏感信息(如數據庫密碼、API 令牌)不應以明文形式硬編碼在配置文件或鏡像中,否則可能導致泄露。
  • 解耦配置與代碼:將敏感數據與應用邏輯分離,便于統一管理和更新。
  • 標準化管理:K8s 提供內置機制管理 Secret,支持通過 API 或命令行動態創建、更新和分發。

三、核心特性

  • 數據編碼
  • 默認使用?Base64 編碼存儲數據(非加密,需結合其他加密手段,如 etcd 加密或外部密鑰管理系統)。
  • 數據以鍵值對(Key-Value)形式存儲,支持通過環境變量或 Volume 掛載到 Pod。
  • 作用域
  • Secret 屬于特定?Namespace(命名空間),默認僅在所屬 Namespace 內可見。
  • 類型
  • 常見三種內置 Secret 類型:
  • Opaque(通用型):用于存儲任意鍵值對,默認類型。
  • kubernetes.io/service-account-token:自動為 ServiceAccount 生成的令牌,用于訪問 API Server。
  • kubernetes.io/tls:用于存儲 TLS 證書和私鑰,供 Ingress、Service 等使用。

四、?創建 Secret 的常用方式

4.1. 通過 kubectl 命令創建

通過 kubectl 命令創建,需要為其設置命令參數。

kubectl create secret --help

?

  • generic:用來創建 Opaque 類型的 Secret。用于存儲任意鍵值對。
  • tls:用來創建?kubernetes.io/tls 類型的?Secret。用于存儲 TLS 證書和私鑰。
  • docker-registry:若要保存 docker 倉庫的認證信息的話,就必須使用此種類型來創建。

?4.1.1、直接指定字面量(適合小數據)

# 創建 Opaque 類型 Secret,鍵值對直接通過 --from-literal 指定
kubectl create secret generic my-secret \--from-literal=username=admin \--from-literal=password=123456

?

已用 Base64 編碼。

?4.1.2、從文件加載(適合文件型機密,如證書、密鑰)

vim username.txt
# 輸入 admin
vim password.txt
# 輸入 123456# 從單個文件創建(文件名作為鍵),值為文件內容
kubectl create secret generic db-credentials --from-file=username.txt --from-file=password.txt

?4.1.3、從目錄創建(目錄下所有文件作為鍵值對)

mkdir dir
cd dir
vim usr.txt
# 輸入 admin
vim pwd.txt
# 輸入 123456kubectl create secret generic app-secret --from-file=.

4.2、通過 YAML 清單創建

apiVersion: v1
kind: Secret
metadata:name: yml-secretnamespace: default
type: Opaque  # 類型,可選 Opaque、service-account-token、tls 等
data:# 鍵值對需手動進行 Base64 編碼username: YWRtaW4=  # 明文 "admin" 的 Base64 編碼password: MTIzNDU2  # 明文 "123456" 的 Base64 編碼
  • 編碼方法:echo -n "明文" | base64?
  • -n 不換行的意思。
  • echo -n "密文" | base64 -d
  • -d decode 的意思。

五、在 Pod 中使用 Secret

5.1、作為環境變量注入

apiVersion: v1
kind: Pod
metadata:name: secret-env-pod
spec:restartPolicy: Nevercontainers:- name: appimage: alpine:latest  imagePullPolicy: IfNotPresentcommand: ["sleep", "3600"]env:- name: DB_USERNAME  # 環境變量名valueFrom:secretKeyRef:name: my-secret  # Secret 名稱key: username    # Secret 中的鍵- name: DB_PASSWORDvalueFrom:secretKeyRef:name: my-secretkey: password
  • ?進入容器查看環境變量
kubectl exec -it secret-env-pod -- /bin/sh
/ # env

5.2、作為 Volume 掛載

apiVersion: v1
kind: Pod
metadata:name: secret-volume-pod
spec:restartPolicy: Nevervolumes:- name: secret-volumesecret:secretName: yml-secret  # 指定 Secret 名稱containers:- name: appimage: alpine:latest  imagePullPolicy: IfNotPresentcommand: ["sleep", "3600"]volumeMounts:- name: secret-volume # 跟卷的名稱一致mountPath: "/etc/secrets"  # 掛載路徑readOnly: true  # 必須設為只讀
  • ??進入容器查看掛載路徑
kubectl exec -it secret-volume-pod -- /bin/sh

?數據已幫我們解密。

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

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

相關文章

【分享】音頻音樂剪輯[特殊字符]人聲分離伴奏提取[特殊字符]拼接合并

音頻音樂剪輯是一款專業的剪輯軟件。在剪輯過程中,它可以對音頻進行拼接合成、音樂裁剪、變調變速、格式轉換,同時音頻音樂剪輯還是一款支持高清錄音、音頻降噪等眾多功能于一體的音頻制作軟件。 【應用名稱】:音頻剪輯 【應用版本】&#xf…

力扣-數據結構-二叉樹

94. 二叉樹的中序遍歷 給定一個二叉樹的根節點 root ,返回 它的 中序 遍歷 。 示例 1: 輸入:root [1,null,2,3] 輸出:[1,3,2]示例 2: 輸入:root [] 輸出:[]示例 3: 輸入&#x…

oracle怎樣通過固化較優執行計劃來優化慢sql

一 問題描述 有次生產環境cpu使用率增高,ADDM報告提示某條sql比較耗費cpu: 提示: 在分析期間, 此 SQL 語句至少利用了 6 個不同的執行計劃 #查看該sql都有哪些執行計劃 SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR(sqlid值)); 我手動執…

基于c#,asp.net webform, sql server數據庫,在線檔案管理系統

詳細視頻: 【基于c#,asp.net webform, sql server數據庫,在線檔案管理系統包部署。-嗶哩嗶哩】 https://b23.tv/c1RsdRO

WebRTC SDK是什么?

?語音環境每年都在變,OKCC以前代理商的客群都是簡單高效外呼為主,今年發現變化很大。很多代理商做的終端客戶都是給其他業務系統賦能為主了。主流的還是以API對接為主,但是對接中發現webrtc SDK使用頻率很高。 ? ?那么什么是WebRTC SDK…

Vue3源碼學習3-結合vitetest來實現mini-vue

文章目錄 前言? 當前已實現模塊匯總(mini-vue)? 每個模塊簡要源碼摘要1. reactive.ts2. effect.ts3. computed.ts4. ref.ts5. toRef.ts6. toRefs.ts ? 下一階段推薦目標所有核心模塊對應的 __tests__ 測試文件,**帶完整注釋**? reactive.…

PH熱榜 | 2025-04-30

1. Daytona 標語:安全且靈活的基礎設施,用于運行你的人工智能生成的代碼。 介紹:Daytona Cloud 為 AI 智能體重塑了基礎設施,具備不到 90 毫秒的啟動時間、原生性能以及有狀態執行的能力,這些是傳統云計算所無法實現…

Android compileSdkVersion、minSdkVersion、targetSdkVersion的關系以及和Unity的關系

compileSdkVersion、minSdkVersion、targetSdkVersion的關系 參考:https://mp.weixin.qq.com/s?__bizMzg5MzYxNTI5Mg&mid2247494238&idx1&sn06285667d3ac1339f6d2daae840cedc8&chksmc125565280f1ad3aa127774c2d1e59eb2818f89f0cb3ed4d72145faf619…

數據庫的死鎖相關(一)

目錄 前言 一、什么死鎖 二、產生死鎖的必要條件 三、死鎖發生的具體位置和場景 1. 數據行級別死鎖(最常見) 2. 表級別死鎖 3. 索引間隙鎖死鎖(InnoDB特有) 4. 外鍵約束死鎖 5. 元數據鎖死鎖 6. 內存中的鎖結構死鎖 7.…

Three.js + React 實戰系列-3D 個人主頁:構建 Hero 場景組件(項目核心)?

在本節中,我們將完成整個 3D 主業項目中最核心的組件 —— Hero.jsx。 這個組件作為首頁的主視覺部分,整合了 3D 模型、動畫相機、交互按鈕與自適應布局,構建出一個立體、酷炫、可交互的主場景。 前置準備: ?安裝依賴&#xff…

Electron Forge【實戰】桌面應用 —— 將項目配置保存到本地

最終效果 定義默認配置 src/initData.ts export const DEFAULT_CONFIG: AppConfig {language: "zh",fontSize: 14,providerConfigs: {}, };src/types.ts export interface AppConfig {language: zh | enfontSize: numberproviderConfigs: Record<string, Recor…

RPG4.設置角色輸入

這一篇是進行玩家移動和視角移動的介紹。 1.在玩家內進行移動覆寫 virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; 2.創建增強輸入資產的變量創建 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category "CharacterD…

[實戰] Petalinux驅動開發以及代碼框架解讀

目錄 Petalinux驅動開發以及代碼框架解讀一、引言二、步驟2.1 創建PetaLinux工程2.2 配置硬件描述文件2.3 設備樹配置2.4 建立驅動框架2.5 編輯 .bb 文件2.6 編寫驅動文件2.7 編寫 Makefile2.8 驗證配方配置2.9 集成驅動到 RootFS2.10 全系統編譯與部署2.11 啟動驗證 三、框架解…

[特殊字符] 開發工作高內存占用場景下,Windows 內存壓縮機制是否應該啟用?實測分析與優化建議

在日常開發中&#xff0c;我們往往需要同時運行多個高占用內存的工具&#xff0c;例如&#xff1a; IntelliJ IDEA VMware 虛擬機 多個 Java 后端程序 這些應用程序非常“吃內存”&#xff0c;輕松就能把 16GB、甚至 24GB 的物理內存用滿。那么&#xff0c;Windows 的“內存…

嵌入式學習筆記 - HAL_xxx_MspInit(xxx);函數

使用cubeMX生成的HAL庫函數中&#xff0c;所有外設的初始化函數HAL_xxx_Init(&xxxHandle)中都存在有此調用函數HAL_xxx_MspInit(xxx)&#xff0c;此調用函數其實是對各外設模塊比如UART&#xff0c;I2C等控制器使用的的底層硬件進行初始化&#xff0c;包括時鐘&#xff0c;…

Nginx — http、server、location模塊下配置相同策略優先級問題

一、配置優先級簡述 在 Nginx 中&#xff0c;http、server、location 模塊下配置相同策略時是存在優先級的&#xff0c;一般遵循 “范圍越小&#xff0c;優先級越高” 的原則&#xff0c;下面為你詳細介紹&#xff1a; 1. 配置繼承關系 http 塊&#xff1a;作為全局配置塊&…

WPF之TextBlock控件詳解

文章目錄 1. TextBlock控件介紹2. TextBlock的基本用法2.1 基本語法2.2 在代碼中創建TextBlock 3. TextBlock的常用屬性3.1 文本內容相關屬性3.2 字體相關屬性3.3 外觀相關屬性3.4 布局相關屬性 4. TextBlock文本格式化4.1 使用Run元素進行內聯格式化4.2 其他內聯元素 5. 處理長…

華為云loT物聯網介紹與使用

&#x1f310; 華為云 IoT 物聯網平臺詳解&#xff1a;構建萬物互聯的智能底座 隨著萬物互聯時代的到來&#xff0c;物聯網&#xff08;IoT&#xff09;已成為推動數字化轉型的關鍵技術之一。華為云 IoT 平臺&#xff08;IoT Device Access&#xff09;作為華為云的核心服務之…

AnimateCC教學:形狀補間動畫的代碼實現

核心代碼: var shape; var animationProps = {width: 50,height: 50,cornerRadius: 0,color: "#00FF00" }; function init() { shape = new createjs.Shape();shape.x = 200;shape.y = 150;stage.addChild(shape);// 初始繪制updateShape();// 設置補間動畫createTw…

Android學習總結之Retrofit篇

1. 注解原理概述 在 Java 里&#xff0c;注解是一種元數據&#xff0c;它為代碼提供額外信息但不影響程序的實際邏輯。注解可以在類、方法、字段等元素上使用&#xff0c;并且能在編譯時、運行時通過反射機制被讀取。Retrofit 充分利用了 Java 注解機制&#xff0c;通過自定義…