国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

7、Kubernetes核心技術(shù) - Secret

這篇具有很好參考價(jià)值的文章主要介紹了7、Kubernetes核心技術(shù) - Secret。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、Secret概述

二、Secret 三種類(lèi)型

2.1、Opaque

2..2、kubernetes.io/dockerconfigjson

2.3、kubernetes.io/service-account-token

三、Secret創(chuàng)建

3.1、命令行方式創(chuàng)建 Secret

3.2、yaml方式創(chuàng)建 Secret

四、Secret解碼

五、Secret使用

5.1、將 Secret 掛載到 Volume 中

5.2、將 Secret 設(shè)置為環(huán)境變量

5.3、通過(guò)volume掛載和設(shè)置為環(huán)境變量的區(qū)別

六、Secret刪除


一、Secret概述

Secret 解決了密碼、令牌、密鑰等敏感數(shù)據(jù)的配置問(wèn)題,而不需要把這些敏感數(shù)據(jù)暴露到鏡像或者Pod Spec 中,它把 Pod 想要訪問(wèn)的加密數(shù)據(jù)存放到 Etcd 中,然后用戶就可以通過(guò)在 Pod 的容器里掛載 Volume 的方式或者環(huán)境變量的方式訪問(wèn)到這些 Secret 里保存的信息。

二、Secret 三種類(lèi)型

2.1、Opaque

使用 base64 編碼存儲(chǔ)信息,手動(dòng)加密,用來(lái)存儲(chǔ)密碼、密鑰等,可以通過(guò) base64 --decode 解碼獲得原始數(shù)據(jù),因此安全性弱。

# base64編碼
$ echo "root" | base64
cm9vdAo=

# base64解碼
$ echo "cm9vdAo=" | base64 --decode
root

2..2、kubernetes.io/dockerconfigjson

用于存儲(chǔ)私有docker registry認(rèn)證的Secret。

下面是一個(gè)示例:

# 使用kubectl create secret命令創(chuàng)建Secret,指定docker私有倉(cāng)庫(kù)地址,用戶名、密碼等
kubectl create secret docker-registry habor-registry-secret --docker-server=xxx --docker-username=xxx --docker-password=xxx 

如果我們需要拉取私有倉(cāng)庫(kù)中的docker鏡像的話,在Pod的資源清單中就需要引用前面定義好的habor-registry-secret這個(gè)Secret,例如:

apiVersion: v1
kind: Pod
metadata:
  name: order-service
spec:
  containers:
  - name: order-service
    image: 192.168.1.33:5000/order-service:v1.2
  imagePullSecrets:
  - name: habor-registry-secret

2.3、kubernetes.io/service-account-token

用于被 serviceaccount 引用,serviceaccout 創(chuàng)建時(shí) Kubernetes 會(huì)默認(rèn)創(chuàng)建對(duì)應(yīng)的 Secret。Pod 如果使用了 serviceaccount,對(duì)應(yīng)的 Secret 會(huì)自動(dòng)掛載到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目錄中。

下面是一個(gè)示例:

$ kubectl run nginx --image nginx
pod/nginx created

$ kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          12s

# 進(jìn)入nginx容器
$ kubectl exec -it  nginx bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.

root@nginx:/# ls -l /run/secrets/kubernetes.io/serviceaccount
ca.crt  namespace  token

三、Secret創(chuàng)建

Secret的創(chuàng)建一般有兩種方式,一種是通過(guò)命令行方式【 kubectl create secret命令】,另外一種是使用yaml資源清單方式創(chuàng)建。

3.1、命令行方式創(chuàng)建 Secret

首先需要準(zhǔn)備Secret數(shù)據(jù)的來(lái)源,然后使用 kubectl create secret 命令將這些文件打包成一個(gè) Secret 并在 API 服務(wù)器上創(chuàng)建Secret對(duì)象,生成Secret后會(huì)自動(dòng)加密,而非明文存儲(chǔ)。

7、Kubernetes核心技術(shù) - Secret,# Kubernetes,kubernetes,容器,云原生,k8s,secret

假如某個(gè)Pod要訪問(wèn)數(shù)據(jù)庫(kù),需要用戶名密碼,分別存放在2個(gè)文件中:username.txt,password.txt。

# -n參數(shù)確保生成的txt文件在文本末尾不包含額外的換行符,因?yàn)楫?dāng) kubectl 讀取文件并將內(nèi)容編碼為 base64 字符串時(shí),多余的換行符也會(huì)被編碼。
$ echo -n "admin" > ./username.txt
$ echo -n "123456" > ./password.txt

# 使用 kubectl create secret 命令將這些文件打包成一個(gè) Secret 并在 API 服務(wù)器上創(chuàng)建Secret對(duì)象
$ kubectl create secret generic db-account-secret --from-file=./username.txt --from-file=./password.txt
secret/db-account-secret created

# 查看secret,為了防止Secret被意外暴露,默認(rèn)不顯示Secret的內(nèi)容
$ kubectl get secret
NAME                TYPE     DATA   AGE
db-account-secret   Opaque   2      8s

# 通過(guò)yaml查看secret詳細(xì)信息
$ kubectl get secret db-account-secret -o yaml
apiVersion: v1
data:  # secret中的key默認(rèn)就是txt文件名稱,可以看到這里是password.txt、password.txt
  password.txt: MTIzNDU2		#secret保存的是base64加密后的數(shù)據(jù): 123456
  password.txt: YWRtaW4=		#secret保存的是base64加密后的數(shù)據(jù): admin
kind: Secret
metadata:
  creationTimestamp: "2023-01-05T02:21:18Z"
  name: db-account-secret
  namespace: default
  resourceVersion: "3212"
  uid: a11caa2c-e7d7-4234-a20a-453cc05d565b
type: Opaque

# base64加密之后的數(shù)據(jù)
$ echo -n 'admin' | base64
YWRtaW4=
$ echo -n '123456' | base64
MTIzNDU2

注意,Secret中的key默認(rèn)就是文件名稱,可以看到這里是password.txt、password.txt??梢允褂?--from-file=[key=]source 來(lái)設(shè)置密鑰名稱,例如:kubectl create secret generic db-account-secret --from-file=username=./username.txt --from-file=password=./password.txt。

我們還可以使用 --from-literal=<key>=<value> 標(biāo)簽提供 Secret 數(shù)據(jù)。 可以多次使用 --from-literal標(biāo)簽,提供多個(gè)鍵值對(duì)。 請(qǐng)注意,特殊字符(例如:$,\,*,= 和 !)由shell 解釋執(zhí)行,而且需要轉(zhuǎn)義,最簡(jiǎn)便的方法是用單引號(hào)括起來(lái)。 比如,如果你的密碼是$#123456=,可以像下面一樣執(zhí)行命令:

$ kubectl create secret generic db-secret-test --from-literal=username=admin --from-literal=password='$#123456='
secret/db-secret-test created

3.2、yaml方式創(chuàng)建 Secret

因?yàn)镾ecret保存的是base64加密后的數(shù)據(jù),所以使用yaml方式創(chuàng)建Secret的時(shí)候,我們需要準(zhǔn)備好base64加密之后的數(shù)據(jù),然后放到Secret的資源清單中。

# base64加密之后的數(shù)據(jù)
$ echo -n 'admin' | base64
YWRtaW4=
$ echo -n '123456' | base64
MTIzNDU2

創(chuàng)建Secret資源清單文件: vim custom-db-account-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: custom-db-account-secret
type: Opaque
data:
  username: YWRtaW4=
  password: MTIzNDU2

創(chuàng)建Secret:

$ kubectl apply -f custom-db-account-secret.yaml 
secret/custom-db-account-secret created

$ kubectl get secret/custom-db-account-secret
NAME                       TYPE     DATA   AGE
custom-db-account-secret   Opaque   2      22s

# 查看Secret描述信息,為了防止Secret被意外暴露,默認(rèn)不顯示Secret的內(nèi)容
$ kubectl describe secret/custom-db-account-secret
Name:         custom-db-account-secret
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  6 bytes
username:  5 bytes

四、Secret解碼

為了防止Secret被意外暴露,默認(rèn)不顯示Secret的內(nèi)容,要查看我們創(chuàng)建的 Secret 的內(nèi)容,可以通過(guò)下面的方式。

$ kubectl get secret custom-db-account-secret -o jsonpath=‘{.data}’
‘{"password":"MTIzNDU2","username":"YWRtaW4="}’

$ echo "YWRtaW4=" | base64 -d
admin

$ echo "MTIzNDU2" | base64 -d
123456

五、Secret使用

Secret使用有兩種方式,一種是將Secret掛載到存儲(chǔ)卷volume中,另外一種是將Secret中的值,設(shè)置為Pod中的環(huán)境變量。

5.1、將 Secret 掛載到 Volume 中

創(chuàng)建Pod資源清單文件: vim secret-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/foo"  # 將secret的數(shù)據(jù)掛載到pod容器中/etc/foo目錄下
      readOnly: true
  volumes:
  - name: secret-volume
    secret:  # volume存儲(chǔ)卷的類(lèi)型為secret
      secretName: custom-db-account-secret  # 引用前面定義好的secret的名稱:custom-db-account-secret

創(chuàng)建Pod,然后進(jìn)入Pod中查看custom-db-account-secret中的數(shù)據(jù)是否掛載進(jìn)去。

$ kubectl apply -f secret-pod.yaml 
pod/nginx created

$ kubectl get pod/nginx -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP            NODE     NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          27s   192.168.1.3   node01   <none>           <none>

$ kubectl exec -it nginx sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
# cd /etc/foo/
# ls
password  username
# cat username
admin
# cat password
123456

可以看到,custom-db-account-secret中我們定義的username、password已經(jīng)成功掛載到pod容器中/etc/foo目錄下,并且數(shù)據(jù)也是解密之后的數(shù)據(jù)。

5.2、將 Secret 設(shè)置為環(huán)境變量

創(chuàng)建Pod資源清單文件: vim secret-env-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    env:	
      - name: DB_USERNAME			# 聲明環(huán)境變量DB_USERNAME
        valueFrom:
          secretKeyRef:		# 指定數(shù)據(jù)來(lái)源是custom-db-account-secret這個(gè)secret的username字段
            name: custom-db-account-secret
            key: username	
      - name: DB_PASSWORD			# 聲明環(huán)境變量DB_PASSWORD
        valueFrom:
          secretKeyRef:  	# 指定數(shù)據(jù)來(lái)源是custom-db-account-secret這個(gè)secret的password字段
            name: custom-db-account-secret
            key: password
  restartPolicy: Never

創(chuàng)建Pod,并進(jìn)入Pod查看環(huán)境變量的值。

$ kubectl apply -f secret-env-pod.yaml 
pod/nginx created

$ kubectl get pod/nginx -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP            NODE     NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          14s   192.168.1.4   node01   <none>           <none>

$ kubectl exec nginx -it sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
# env | grep -E "USERNAME|PASSWORD"
DB_USERNAME=admin
DB_PASSWORD=123456
# echo $DB_USERNAME
admin
# echo $DB_PASSWORD
123456

如上可以看到,進(jìn)入Pod之后,已經(jīng)成功將custom-db-account-secret這個(gè)secret的username、password,對(duì)應(yīng)生成了$DB_USERNAME、$DB_PASSWORD兩個(gè)環(huán)境了,這樣在Pod中就可以使用這兩個(gè)環(huán)境變量了。

5.3、通過(guò)volume掛載和設(shè)置為環(huán)境變量的區(qū)別

通過(guò)Volume掛載到容器內(nèi)部時(shí),當(dāng)該Secret的值發(fā)生變化時(shí),容器內(nèi)部具備自動(dòng)更新的能力,但是通過(guò)環(huán)境變量設(shè)置到容器內(nèi)部該值不具備自動(dòng)更新的能力。所以一般推薦使用Volume掛載的方式使用Secret。

六、Secret刪除

使用【kubectl delete secret xxx】命令即可,xxx指定Secret的名稱。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-626560.html

$ kubectl get secret
NAME                       TYPE     DATA   AGE
custom-db-account-secret   Opaque   2      44m
db-account-secret          Opaque   2      54m
db-secret-test             Opaque   2      12m

$ kubectl delete secret db-secret-test
secret "db-secret-test" deleted

$ kubectl get secret
NAME                       TYPE     DATA   AGE
custom-db-account-secret   Opaque   2      44m
db-account-secret          Opaque   2      55m

到了這里,關(guān)于7、Kubernetes核心技術(shù) - Secret的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【云原生】Kubernetes之Secret

    你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你必須配置 kubectl 命令行工具與你的集群通信 Secret 對(duì)象用來(lái)存儲(chǔ)敏感數(shù)據(jù),如 Pod 用于訪問(wèn)服務(wù)的憑據(jù)。例如,為訪問(wèn)數(shù)據(jù)庫(kù),你可能需要一個(gè) Secret 來(lái)存儲(chǔ)所需的用戶名及密碼 你可以通過(guò)在命令中傳遞原始數(shù)據(jù),或?qū){據(jù)存儲(chǔ)文件中,

    2024年02月15日
    瀏覽(18)
  • 【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 管理 Secret 詳解

    【云原生 | Kubernetes 系列】K8s 實(shí)戰(zhàn) 管理 Secret 詳解

    Secret 是一種包含少量敏感信息例如密碼、令牌或密鑰的對(duì)象。 這樣的信息可能會(huì)被放在 Pod 規(guī)約中或者鏡像中。 用戶可以創(chuàng)建 Secret,同時(shí)系統(tǒng)也創(chuàng)建了一些 Secret。 一個(gè) Secret 可以包含 Pod 訪問(wèn)數(shù)據(jù)庫(kù)所需的用戶憑證。 例如,由用戶名和密碼組成的數(shù)據(jù)庫(kù)連接字符串。 你可

    2024年02月02日
    瀏覽(96)
  • 【AI云原生】Kubernetes容器環(huán)境下大模型訓(xùn)練和推理的關(guān)鍵技術(shù)分析

    摘要: 本文將探討在Kubernetes容器環(huán)境下進(jìn)行大模型訓(xùn)練和推理的關(guān)鍵技術(shù)。我們將以英偉達(dá)顯卡為例,詳細(xì)介紹如何利用Kubernetes容器平臺(tái)來(lái)高效地進(jìn)行大規(guī)模深度學(xué)習(xí)任務(wù)。我們將討論容器化的優(yōu)勢(shì),包括可擴(kuò)展性、資源管理和隔離性,并介紹與Kubernetes相關(guān)的關(guān)鍵技術(shù),如

    2024年04月15日
    瀏覽(28)
  • 探索云原生容器編排技術(shù):如Kubernetes如何為大數(shù)據(jù)處理和AI模型的自動(dòng)化部署帶來(lái)便利

    探索云原生容器編排技術(shù):如Kubernetes如何為大數(shù)據(jù)處理和AI模型的自動(dòng)化部署帶來(lái)便利

    ??個(gè)人主頁(yè):程序員 小侯 ??CSDN新晉作者 ??歡迎 ??點(diǎn)贊?評(píng)論?收藏 ?收錄專(zhuān)欄:云原生 ?文章內(nèi)容: ??希望作者的文章能對(duì)你有所幫助,有不足的地方請(qǐng)?jiān)谠u(píng)論區(qū)留言指正,大家一起學(xué)習(xí)交流!?? Kubernetes是一個(gè)強(qiáng)大的容器編排和自動(dòng)化部署工具,它為大數(shù)據(jù)處理和

    2024年02月10日
    瀏覽(29)
  • 【云原生、Kubernetes】Kubernetes核心概念理解

    【云原生、Kubernetes】Kubernetes核心概念理解

    首先我們要掌握 Kubernete 的一些核心概念。 這些核心可以幫助我們更好的理解 Kubernetes 的特性和工作機(jī)制。 首先,Kubernetes 集群中包含2類(lèi)節(jié)點(diǎn),分別是:master控制節(jié)點(diǎn)和node工作節(jié)點(diǎn)。 master 控制節(jié)點(diǎn) 負(fù)責(zé)管理整個(gè)集群系統(tǒng),可以說(shuō)它是集群的網(wǎng)關(guān)和中樞,是Kubernetes 的大腦和

    2024年02月13日
    瀏覽(28)
  • Kubernetes:云原生時(shí)代的核心引擎

    Kubernetes:云原生時(shí)代的核心引擎

    在云計(jì)算飛速發(fā)展的今天,Kubernetes(簡(jiǎn)稱K8s)憑借其強(qiáng)大的容器編排能力,迅速成為云原生時(shí)代的核心引擎。K8s不僅簡(jiǎn)化了容器化應(yīng)用的部署與管理,還為企業(yè)提供了高效、可擴(kuò)展的云原生應(yīng)用架構(gòu)。 K8s的核心特性在于其自動(dòng)化和智能化的容器編排能力。它可以自動(dòng)部署、

    2024年04月27日
    瀏覽(22)
  • 【云原生】Kubernetes臨時(shí)容器

    特性狀態(tài): Kubernetes v1.25 [stable] 本頁(yè)面概述了臨時(shí)容器:一種特殊的容器,該容器在現(xiàn)有 Pod 中臨時(shí)運(yùn)行,以便完成用戶發(fā)起的操作,例如故障排查。 你會(huì)使用臨時(shí)容器來(lái)檢查服務(wù),而不是用它來(lái)構(gòu)建應(yīng)用程序 Pod 是 Kubernetes 應(yīng)用程序的基本構(gòu)建塊。 由于 Pod 是一次性且可替

    2024年02月15日
    瀏覽(56)
  • 【云原生】Kubernetes容器編排工具

    【云原生】Kubernetes容器編排工具

    目錄 1. K8S介紹 1.1 k8s的由來(lái) 下載地址 1.2 docker編排與k8s編排相比 1.3 傳統(tǒng)后端部署與k8s 的對(duì)比 傳統(tǒng)部署 k8s部署? ?2. k8s的集群架構(gòu)與組件 (1) Kube-apiserver (2)Kube-controller-manager? (3)Kube-scheduler?? 2.2?k8s的配置存儲(chǔ)中心 2.3? k8s的Node 組件? ?(1)Kubelet? ?(2)Kube-Proxy?

    2024年02月10日
    瀏覽(23)
  • 【云原生】容器編排工具Kubernetes

    【云原生】容器編排工具Kubernetes

    目錄 一、 K8S介紹 官網(wǎng)地址: 1.1docker編排與k8s編排相比 1.2特性 1.3功能 二、K8S重要組件 2.1核心組件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler (4)Node ①kubelet ②kube-proxy ③docker (5)etcd 2.2Kubernetes工作原理 三、Pod 3.1 Pod控制器 (1)Deployment (2)ReplicaSet (3)

    2024年02月09日
    瀏覽(32)
  • 云原生、容器化、Kubernetes、微服務(wù)

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 云原生(Cloud Native)是一個(gè)開(kāi)放且社區(qū)驅(qū)動(dòng)的項(xiàng)目,它定義了一組架構(gòu)原則、最佳實(shí)踐和工具集,這些原則、實(shí)踐和工具圍繞業(yè)務(wù)需求和工程實(shí)踐而設(shè)計(jì),可用于開(kāi)發(fā)人員在構(gòu)建和運(yùn)行分布式系統(tǒng)時(shí)更加順暢地交付可靠的軟件。云原生可以幫助

    2024年02月07日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包