(資料圖)
在 Kubernetes 中,Secret 對(duì)象不僅可以用來(lái)存儲(chǔ)敏感信息,如訪問(wèn)私有鏡像倉(cāng)庫(kù)的憑證、HTTPS 證書(shū)等,還可以實(shí)現(xiàn) Secret 對(duì)象的熱更新。
首先,我們需要?jiǎng)?chuàng)建一個(gè) Secret 對(duì)象??梢允褂靡韵旅顏?lái)創(chuàng)建一個(gè) Secret 對(duì)象:
$ kubectl create secret generic my-secret --from-literal=foo=bar
在這個(gè)命令中,my-secret
參數(shù)指定了 Secret 對(duì)象的名稱,--from-literal
參數(shù)用于指定要存儲(chǔ)的鍵值對(duì)。
可以使用以下命令來(lái)查看剛創(chuàng)建的 Secret 對(duì)象的詳細(xì)信息:
$ kubectl describe secret my-secret
接下來(lái),我們需要?jiǎng)?chuàng)建一個(gè)使用上一步中創(chuàng)建的 Secret 對(duì)象的 Pod 對(duì)象。可以使用以下 YAML 配置文件來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的 Pod 對(duì)象:
apiVersion: v1kind: Podmetadata: name: my-podspec: containers: - name: my-container image: busybox command: - sh - -c - while true; do echo $foo; sleep 10; done env: - name: foo valueFrom: secretKeyRef: name: my-secret key: foo
在這個(gè)配置文件中,我們創(chuàng)建了一個(gè)使用上一步中創(chuàng)建的 Secret 對(duì)象的 Pod 對(duì)象。其中,env
屬性將 Secret 對(duì)象中的 foo
鍵值對(duì)作為環(huán)境變量傳遞給了容器,容器將會(huì)每隔 10 秒鐘打印一次環(huán)境變量 foo
的值。
可以使用以下命令來(lái)部署 Pod 對(duì)象:
$ kubectl apply -f pod.yaml
當(dāng)需要更新 Secret 對(duì)象中的鍵值對(duì)時(shí),可以使用以下命令來(lái)更新 Secret 對(duì)象:
$ kubectl create secret generic my-secret --from-literal=foo=baz --dry-run=client -o yaml | kubectl apply -f -
在這個(gè)命令中,--from-literal
參數(shù)用于指定要更新的鍵值對(duì),--dry-run=client -o yaml
參數(shù)用于生成更新后的 Secret 對(duì)象的 YAML 配置文件,| kubectl apply -f -
參數(shù)用于將更新后的 YAML 配置文件應(yīng)用到 Kubernetes 中。
當(dāng)更新了 Secret 對(duì)象后,我們可以觀察 Pod 對(duì)象的日志,看到環(huán)境變量 foo
的值已經(jīng)從 bar
變?yōu)榱?baz
。
$ kubectl logs my-pod
關(guān)鍵詞: