W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒(méi)有集群,你可以通過(guò) Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:
你可以先用 JSON 或 YAML 格式在文件中創(chuàng)建 Secret,然后創(chuàng)建該對(duì)象。 Secret 資源包含2個(gè)鍵值對(duì): ?data
?和 ?stringData
?。 ?data
?字段用來(lái)存儲(chǔ) base64 編碼的任意數(shù)據(jù)。 提供 ?stringData
?字段是為了方便,它允許 Secret 使用未編碼的字符串。 ?data
?和 ?stringData
?的鍵必須由字母、數(shù)字、?-
?,?_
? 或 ?.
? 組成。
例如,要使用 Secret 的 ?data
?字段存儲(chǔ)兩個(gè)字符串,請(qǐng)將字符串轉(zhuǎn)換為 base64 ,如下所示:
echo -n 'admin' | base64
輸出類(lèi)似于:
YWRtaW4=
echo -n '1f2d1e2e67df' | base64
輸出類(lèi)似于:
MWYyZDFlMmU2N2Rm
編寫(xiě)一個(gè) Secret 配置文件,如下所示:
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
password: MWYyZDFlMmU2N2Rm
注意,Secret 對(duì)象的名稱(chēng)必須是有效的 DNS 子域名.
說(shuō)明:
Secret 數(shù)據(jù)的 JSON 和 YAML 序列化結(jié)果是以 base64 編碼的。 換行符在這些字符串中無(wú)效,必須省略。 在 Darwin/macOS 上使用 ?base64
?工具時(shí),用戶(hù)不應(yīng)該使用 ?-b
? 選項(xiàng)分割長(zhǎng)行。 相反地,Linux 用戶(hù) 應(yīng)該 在 ?base64
?的命令中添加 ?-w 0
? 選項(xiàng), 或者在 ?-w
? 選項(xiàng)不可用的情況下,輸入 ?base64 | tr -d '\n'
?。
對(duì)于某些場(chǎng)景,你可能希望使用 ?stringData
?字段。 這字段可以將一個(gè)非 base64 編碼的字符串直接放入 Secret 中, 當(dāng)創(chuàng)建或更新該 Secret 時(shí),此字段將被編碼。
上述用例的實(shí)際場(chǎng)景可能是這樣:當(dāng)你部署應(yīng)用時(shí),使用 Secret 存儲(chǔ)配置文件, 你希望在部署過(guò)程中,填入部分內(nèi)容到該配置文件。
例如,如果你的應(yīng)用程序使用以下配置文件:
apiUrl: "https://my.api.com/api/v1"
username: "<user>"
password: "<password>"
你可以使用以下定義將其存儲(chǔ)在 Secret 中:
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
stringData:
config.yaml: |
apiUrl: "https://my.api.com/api/v1"
username: <user>
password: <password>
現(xiàn)在使用 ?kubectl apply
? 創(chuàng)建 Secret:
kubectl apply -f ./secret.yaml
輸出類(lèi)似于:
secret/mysecret created
?stringData
?字段是只寫(xiě)的。獲取 Secret 時(shí),此字段永遠(yuǎn)不會(huì)輸出。 例如,如果你運(yùn)行以下命令:
kubectl get secret mysecret -o yaml
輸出類(lèi)似于:
apiVersion: v1
data:
config.yaml: YXBpVXJsOiAiaHR0cHM6Ly9teS5hcGkuY29tL2FwaS92MSIKdXNlcm5hbWU6IHt7dXNlcm5hbWV9fQpwYXNzd29yZDoge3twYXNzd29yZH19
kind: Secret
metadata:
creationTimestamp: 2018-11-15T20:40:59Z
name: mysecret
namespace: default
resourceVersion: "7225"
uid: c280ad2e-e916-11e8-98f2-025000000001
type: Opaque
命令 ?kubectl get
? 和 ?kubectl describe
? 默認(rèn)不顯示 ?Secret
?的內(nèi)容。 這是為了防止 ?Secret
?意外地暴露給旁觀者或者保存在終端日志中。
如果在 ?data
?和 ?stringData
?中都指定了一個(gè)字段,比如 ?username
?,字段值來(lái)自 ?stringData
?。 例如,下面的 Secret 定義:
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
username: YWRtaW4=
stringData:
username: administrator
結(jié)果有以下 Secret:
apiVersion: v1
data:
username: YWRtaW5pc3RyYXRvcg==
kind: Secret
metadata:
creationTimestamp: 2018-11-15T20:46:46Z
name: mysecret
namespace: default
resourceVersion: "7579"
uid: 91460ecb-e917-11e8-98f2-025000000001
type: Opaque
其中 ?YWRtaW5pc3RyYXRvcg==
? 解碼成 ?administrator
?。
刪除你創(chuàng)建的 Secret:
kubectl delete secret mysecret
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: