配置檔案之Secret

2022-07-10 05:12:07 字數 4370 閱讀 7781

kubernetes secret 物件可以用來儲存敏感資訊,例如:密碼、oauth token、ssh 金鑰等。如果不使用 secret,此類資訊可能被放置在 pod 定義中或者容器映象中。將此類敏感資訊儲存到 secret 中,可以更好地:

-控制其使用

-降低資訊洩露的風險

-使用者可以直接建立 secret,kubernetes 系統也會建立一些 secret。

secret有如下幾種使用方式:

-作為 pod 的環境變數

-作為 pod 的資料卷掛載

-kubelet 在抓取容器映象時,作為 docker 映象倉庫的使用者名稱密碼

secret的型別

在建立 secret 物件時,你可以使用 secret 資源的 type 字段,或使用kubectl 命令列引數為其設定型別。

secret 的型別用來幫助編寫程式處理 secret 資料,kubernetes 提供若干種內建的型別,用於一些常見的使用場景。 針對這些型別,kubernetes 所執行的合法性檢查操作以及對其所實施的限制各不相同。

secret常用型別:

-opaque:base64編碼格式的secret,用來儲存密碼、金鑰等;

-service account:用來訪問kubernetes api,由kubernetes自動建立,並且會自動掛載到pod的/run/secrets/kubernetes.io/serviceaccount目錄中;

-kubernetes.io/dockerconfigjson:用來儲存私有docker registry的認證資訊。

內建型別參考:

1、opaque型別的資料是乙個map型別,要求value是base64編碼格式:

[root@master-191 ~]# echo -n "admin" | base64

ywrtaw4=

[root@master-191 ~]# echo -n "xiaoqingabc321" | base64

eglhb3fpbmdhymmzmje=

2、用剛才生成的值建立secret

[root@master-191 ~]# vim secrets.yml

apiversion: v1

kind: secret

metadata:

name: mysecret

type: opaque

data:

username: ywrtaw4=

password: eglhb3fpbmdhymmzmje=

[root@master-191 ~]# kubectl create -f secrets.yml

secret "mysecret" created

[root@master-191 ~]# kubectl get pod

no resources found.

3、檢視

[root@master-191 ~]# kubectl get secret

name type data age

default-token-qh5p5 kubernetes.io/service-account-token 3 25d

mysecret opaque 2 9s

1、以環境變數方式

[root@master-191 ~]# vim secret-var.yml

apiversion: v1

kind: pod

metadata:

name: varpod

spec:

containers:

- name: nginx

image: nginx

env:

- name: secret_username

valuefrom:

secretkeyref:

name: mysecret

key: username

- name: secret_password

valuefrom:

secretkeyref:

name: mysecret

key: password

pod "varpod" created

[root@master-191 ~]# kubectl get pod

name ready status restarts age

varpod 0/1 containercreating 0 4s

[root@master-191 ~]# kubectl get pod

name ready status restarts age

varpod 1/1 running 0 7s

進入到容器中

[root@master-191 ~]# kubectl exec -it varpod bash

root@varpod:/# ls

bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

經測試,pod容器裡能讀取secret的變數

root@varpod:/# echo $secret_username

admin

root@varpod:/# echo $secret_password

xiaoqingabc321

2、以volume資料卷掛載方式

[root@master-191 ~]# vim secret-vol.yml

apiversion: v1

kind: pod

metadata:

name: volpod

spec:

containers:

- name: nginx

image: nginx

volumemounts:

- name: foo

mountpath: "/etc/foo"

readonly: true

volumes:

- name: foo

secret:

secretname: mysecret

[root@master-191 ~]# kubectl create -f secret-vol.yml

pod "volpod" created

[root@master-191 ~]# kubectl get pod

name ready status restarts age

varpod 1/1 running 0 7m

volpod 1/1 running 0 11s

進入到容器中

[root@master-191 ~]# kubectl exec -it volpod bash

root@volpod:/# ls

bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

root@volpod:/# cd /etc/foo/

root@volpod:/etc/foo# ls

password username

經測試,pod容器裡能讀取secret的變數

root@volpod:/etc/foo# cat username

admin

root@volpod:/etc/foo# cat password

xiaoqingabc321

root@volpod:/etc/foo#

kubenetes官網:

kubenetes社群:

kuboard.cn官網:

python之配置檔案

configparser 是python自帶的模組,用來讀寫配置檔案,用法及其簡單。直接上 不解釋,不多說。配置檔案的格式是 包含的叫section,section 下有option value這樣的鍵值 詳細使用如下demo coding utf 8 import configparser 用於中...

spring配置檔案之靈活配置

spring配置檔案十分靈活的,比如當遇到要配置jdbc之類或者和主機有關的資訊時,可以這樣,進一步抽象 生成如下的屬性檔案 web inf jdbc.properties jdbc.driver org.postgresql.driver jdbc.url jdbc postgresql loca...

Angular配置檔案之環境配置

假設有三個環境 開發環境 dev 測試環境 test 生產環境 prod 當我們構建引數時會用到 environment來指定應用執行環境。腳手架會根據指定的值載入對應的環境配置檔案。如 ng build env dev 就是build開發環境的包。那麼我們就從這裡開始看看angular專案裡環境該...