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專案裡環境該...