k8s核心對象secret

什么是Secret葛躏?
在Kubernetes中,Secret是一種用于存儲敏感信息的對象悠菜,如密碼舰攒、令牌、密鑰等悔醋。它主要用于將這些敏感信息以安全的方式傳遞給Pod中的容器摩窃。Secret對象通常包含Base64編碼的數(shù)據(jù),以確保在Kubernetes中的傳輸過程中保持安全性芬骄。

Secret的作用主要體現(xiàn)在以下幾個方面:
安全存儲敏感信息:將密碼偶芍、令牌等敏感信息存儲在Secret對象中,避免明文存儲德玫,提高安全性匪蟀。
傳遞給Pod中的容器:通過掛載Secret到Pod中,容器可以讀取其中的敏感信息宰僧,實現(xiàn)應(yīng)用程序的安全配置材彪。
用于TLS證書:Secret可用于存儲TLS證書和密鑰,用于加密Pod之間的通信琴儿。
與Volume一同使用:可以將Secret與Volume結(jié)合使用段化,將敏感信息以文件的形式提供給Pod。
Secret的類型
在Kubernetes中造成,有多種類型的Secret显熏,每種類型都適用于不同的場景。以下是常見的幾種Secret類型:

Opaque(不透明)Secret:用于存儲任意類型的數(shù)據(jù)晒屎,不限于字符串喘蟆。最常用于存儲密碼、密鑰等鼓鲁。
Docker Registry Secret:用于存儲訪問私有Docker Registry所需的認證信息蕴轨。
Service Account Token Secret:由Kubernetes自動生成,用于向Pod中的Service Account提供API訪問令牌骇吭。
TLS Secret:用于存儲TLS證書和私鑰橙弱,用于加密Pod之間的通信。
在接下來的內(nèi)容中,我們將以不透明Secret為例棘脐,詳細介紹其創(chuàng)建斜筐、使用和管理。

創(chuàng)建Opaque Secret
要創(chuàng)建Opaque Secret蛀缝,我們需要提前準備好敏感信息顷链,并以Base64編碼的形式存儲在Secret對象中。下面是一個創(chuàng)建Opaque Secret的示例YAML文件:

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  username: dXNlcm5hbWU=  # Base64編碼后的用戶名
  password: cGFzc3dvcmQ=  # Base64編碼后的密碼
#創(chuàng)建了一個名為my-secret的Opaque Secret内斯,其中包含了用戶名和密碼的Base64編碼值蕴潦。創(chuàng)建Secret后,我們可以通過kubectl將其應(yīng)用到Kubernetes集群中:
kubectl apply -f my-secret.yaml

在Pod中使用Secret
創(chuàng)建好Secret后俘闯,我們可以將其掛載到Pod中潭苞,并通過環(huán)境變量或者Volume的方式傳遞給容器。以下是一個使用Secret的Pod示例:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: mycontainer
      image: myimage
      env:
        - name: MY_USERNAME
          valueFrom:
            secretKeyRef:
              name: my-secret
              key: username
        - name: MY_PASSWORD
          valueFrom:
            secretKeyRef:
              name: my-secret
              key: password
  restartPolicy: Never

我們創(chuàng)建了一個Pod真朗,并在容器中通過環(huán)境變量的方式使用了my-secret中的用戶名和密碼此疹。這樣,容器就能夠安全地訪問這些敏感信息遮婶,而不需要將其硬編碼到容器鏡像中蝗碎。

使用Secret實現(xiàn)TLS加密
除了存儲用戶名和密碼,Secret還可以用于存儲TLS證書和私鑰旗扑,實現(xiàn)Pod之間的加密通信蹦骑。以下是一個使用Secret實現(xiàn)TLS加密的示例:

apiVersion: v1
kind: Secret
metadata:
  name: tls-secret
type: kubernetes.io/tls
data:
  tls.crt: base64-encoded-certificate  # Base64編碼后的證書
  tls.key: base64-encoded-private-key  # Base64編碼后的私鑰

我們創(chuàng)建了一個類型為kubernetes.io/tls的Secret,其中包含了Base64編碼的TLS證書和私鑰臀防。接下來眠菇,我們可以在Pod的配置中引用這個Secret,并使用TLS加密:

#我們創(chuàng)建了一個Pod袱衷,并將tls-secret掛載為一個Volume捎废。容器可以通過/etc/tls路徑訪問證書和私鑰,從而實現(xiàn)TLS加密通信致燥。
apiVersion: v1
kind: Pod
metadata:
  name: mypod-tls
spec:
  containers:
    - name: mycontainer
      image: myimage
  volumes:
    - name: tls-volume
      secret:
        secretName: tls-secret
  volumeMounts:
    - name: tls-volume
      mountPath: "/etc/tls"
  restartPolicy: Never

Secret的更新和管理
Secret在創(chuàng)建后登疗,可能需要進行更新或者刪除。在更新Secret時嫌蚤,我們可以通過kubectl命令行工具或者YAML文件進行修改辐益。以下是一個更新Secret的示例:

kubectl create secret generic my-secret --from-literal=username=newuser --dry-run=client -o yaml | kubectl apply -f -

在這個示例中,我們通過kubectl命令行工具搬葬,從命令行直接指定新的用戶名荷腊,并將其更新到my-secret中。需要注意的是急凰,這里使用了--dry-run=client參數(shù),表示只在本地生成YAML文件而不真正應(yīng)用更改,以便我們可以在確認無誤后再應(yīng)用更改抡锈。

這段代碼使用`kubectl`命令行工具創(chuàng)建一個名為`my-secret`的Opaque Secret疾忍,并通過管道將其應(yīng)用到Kubernetes集群中。

1. `kubectl create secret generic my-secret --from-literal=username=newuser --dry-run=client -o yaml`:這部分命令用于創(chuàng)建一個名為`my-secret`的Opaque Secret床三,包含一個鍵值對`username=newuser`一罩。`--dry-run=client`選項表示僅在客戶端進行驗證,不實際創(chuàng)建資源撇簿。`-o yaml`選項表示以YAML格式輸出資源定義聂渊。

2. `|`:管道符號,用于將前一個命令的輸出作為下一個命令的輸入四瘫。

3. `kubectl apply -f -`:這部分命令用于應(yīng)用YAML格式的資源定義汉嗽。`-f -`表示從標準輸入(stdin)讀取資源定義。

綜合起來找蜜,這段代碼的作用是創(chuàng)建一個名為`my-secret`的Opaque Secret饼暑,包含一個鍵值對`username=newuser`,并將其應(yīng)用到Kubernetes集群中洗做。由于使用了`--dry-run=client`選項弓叛,實際上并沒有在集群中創(chuàng)建Secret,而是將其定義輸出到標準輸出(stdout)诚纸,然后通過管道傳遞給`kubectl apply`命令進行應(yīng)用撰筷。這種方式可以用于驗證資源定義的正確性,或者將其保存到文件中以便后續(xù)使用畦徘。

當我們需要刪除一個Secret時毕籽,可以使用如下命令:

kubectl delete secret my-secret

這將從集群中刪除名為my-secret的Secret對象

周邊案例:
Opaque Secret是Kubernetes中的一種Secret類型,用于存儲非結(jié)構(gòu)化的敏感數(shù)據(jù)旧烧,如密碼影钉、密鑰、證書等掘剪。Opaque Secret的數(shù)據(jù)以鍵值對的形式存儲平委,這些鍵值對在Pod中通過環(huán)境變量或卷掛載的方式使用。

Opaque Secret的主要特點如下:

  1. 非結(jié)構(gòu)化數(shù)據(jù):Opaque Secret可以存儲任意類型的非結(jié)構(gòu)化數(shù)據(jù)夺谁,如文本廉赔、二進制數(shù)據(jù)等。
  2. 加密存儲:Opaque Secret中的數(shù)據(jù)在Kubernetes集群中以加密形式存儲匾鸥,以保護敏感信息的安全蜡塌。
  3. 安全傳輸:Opaque Secret在Pod中使用時,通過Kubernetes API進行傳輸勿负,確保數(shù)據(jù)在傳輸過程中的安全性馏艾。
  4. 靈活的使用方式:Opaque Secret可以通過環(huán)境變量或卷掛載的方式在Pod中使用,方便應(yīng)用程序訪問和使用敏感數(shù)據(jù)。

要創(chuàng)建一個Opaque Secret琅摩,可以使用kubectl create secret命令铁孵,如下所示:

kubectl create secret generic my-secret --from-literal=username=myuser --from-literal=password=mypassword

這個命令創(chuàng)建了一個名為my-secret的Opaque Secret,包含兩個鍵值對:usernamepassword房资。

要在Pod中使用Opaque Secret蜕劝,可以通過以下方式之一:

  1. 環(huán)境變量:將Secret中的鍵值對作為環(huán)境變量傳遞給容器。
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    env:
    - name: MY_USERNAME
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: username
    - name: MY_PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-secret
          key: password
  1. 卷掛載:將整個Secret作為卷掛載到容器的文件系統(tǒng)中轰异。
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    volumeMounts:
    - name: my-secret-volume
      mountPath: /etc/my-secret
      readOnly: true
  volumes:
  - name: my-secret-volume
    secret:
      secretName: my-secret

這樣岖沛,容器內(nèi)的/etc/my-secret目錄將包含Secret中的所有鍵值對,文件名為鍵名搭独,文件內(nèi)容為對應(yīng)的值婴削。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市戳稽,隨后出現(xiàn)的幾起案子馆蠕,更是在濱河造成了極大的恐慌,老刑警劉巖惊奇,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件互躬,死亡現(xiàn)場離奇詭異,居然都是意外死亡颂郎,警方通過查閱死者的電腦和手機吼渡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乓序,“玉大人寺酪,你說我怎么就攤上這事√媾” “怎么了寄雀?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長陨献。 經(jīng)常有香客問我盒犹,道長,這世上最難降的妖魔是什么眨业? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任急膀,我火速辦了婚禮,結(jié)果婚禮上龄捡,老公的妹妹穿的比我還像新娘卓嫂。我一直安慰自己,他們只是感情好聘殖,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布晨雳。 她就那樣靜靜地躺著行瑞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悍募。 梳的紋絲不亂的頭發(fā)上蘑辑,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天洋机,我揣著相機與錄音坠宴,去河邊找鬼。 笑死绷旗,一個胖子當著我的面吹牛喜鼓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衔肢,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼庄岖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了角骤?” 一聲冷哼從身側(cè)響起隅忿,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邦尊,沒想到半個月后背桐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡蝉揍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年链峭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片又沾。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡弊仪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杖刷,到底是詐尸還是另有隱情励饵,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布滑燃,位于F島的核電站役听,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏不瓶。R本人自食惡果不足惜禾嫉,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚊丐。 院中可真熱鬧熙参,春花似錦、人聲如沸麦备。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至黍匾,卻和暖如春栏渺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锐涯。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工磕诊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纹腌。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓霎终,卻偏偏與公主長得像,于是被迫代替她去往敵國和親升薯。 傳聞我的和親對象是個殘疾皇子莱褒,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容