3 注意事項
4 說明
secret 物件型別用來儲存敏感資訊,例如密碼、oauth 令牌和 ssh 金鑰。 將這些資訊放在 secret 中比放在 pod 的定義或者 容器映象 中來說更加安全和靈活。
secret 解決了密碼、token、金鑰等敏感資料的配置問題,而不需要把這些敏感資料暴露到映象或者 pod spec 中。secret 可以通過 volume 或者環境變數的方式使用。
在建立 secret 物件時,你可以使用 secret 資源的 type 字段,或者與其等價的 kubectl 命令列引數(如果有的話)為其設定型別。截至1.19版本,k8s提供了多種內建的型別,具體如下:
內建型別
用法opaque
使用者定義的任意資料
kubernetes.io/service-account-token
服務賬號令牌
kubernetes.io/dockercfg ~/.dockercfg
檔案的序列化形式
kubernetes.io/dockerconfigjson ~/.docker/config.json
檔案的序列化形式
kubernetes.io/basic-auth
用於基本身份認證的憑據
kubernetes.io/ssh-auth
用於 ssh 身份認證的憑據
kubernetes.io/tls
用於 tls 客戶端或者伺服器端的資料
bootstrap.kubernetes.io/token
啟動引導令牌資料
通過檔案建立 secret
% echo -n 'admin'
> ./username
% echo -n 'kubernetes'
> ./password
% kubectl create secret generic sec-data01 --from-file=./username --from-file=./password
secret/sec-data01 created
檢視secret資料:
% kubectl get secrets sec-data01 -o go-template=
'}'map[password:a3vizxjuzxrlcw== username:ywrtaw4=
]%
手動加密
預設情況下使用base64進行加密,如下直接通過base64加密,其值和secret中的加密結果相同:
% echo -n 'admin'|base64
ywrtaw4=
% echo -n 'kubernetes'|base64
a3vizxjuzxrlcw==
對加密資料進行解密:
% echo 'ywrtaw4='|base64 --decode
admin%
% vim sec-data01.yaml
apiversion
: v1
data
:password
: a3vizxjuzxrlcw==
username
: ywrtaw4=
kind
: secret
metadata
:name
: sec-data01
pod卷掛載 secret
該方式會將secret資訊掛載到指定的目錄,然後讓容器中的程式通過掛載目錄的檔案來讀取secret的內容。
% vim pod-sec-data01.yaml
apiversion
: v1
kind
: pod
metadata
:name
: sec-data01
spec
:containers:-
name
: busybo-sec
image
: busybox:
1.32
volumemounts:-
name
: config-volume
mountpath
: /my-config
volumes:-
name
: config-volume
secret
:secretname
: sec-data01
建立pod:
pod/sec-data01 created
檢視secret掛載情況:
/ # ls /my-config/
password username
/ # cat /my-config/username
admin/ #
/ # cat /my-config/password
kubernetes/ #
pod環境變數使用 secret
該方式會將secret的key載入到pod的container env中,使用時需要通過 env[x].valuefrom.secretkeyref 指定要包含的 secret 名稱和鍵名。
% cat pod-env-sec-data02.yaml
apiversion
: v1
kind
: pod
metadata
:name
: env-sec-data01
spec
:containers:-
name
: busybo-sec
image
: busybox:
1.32
command:[
'sh'
,'-c'
,'sleep 1000000'
]env:-
name
: secret_username
valuefrom
:secretkeyref
:name
: sec-data01
key: username
-name
: secret_password
valuefrom
:secretkeyref
:name
: sec-data01
key: password
建立pod:
pod/env-sec-data01 created
檢視環境變數:
% kubectl exec -it env-sec-data01 -- env|grep sec
secret_username=admin
secret_password=kubernetes
``
to add
除了基本的secret外,也可以通過 immutable: true 欄位來建立不可更改的secret
概念->配置->secret
github feiskyer/kubernetes-handbook/blob/master/concepts/secret
K8s部署prometheus監控K8s細節
prometheus 一些配置檔案可以再github上找到。部署 root kube prometheus manifests 目錄下所有檔案 部署 root kube prometheus manifests setup 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...
k8s實戰第四 五章
1.存活探針http get tcp exec 2.replicationcontroller標籤選擇器 副本個數 pod模板 3.修改pod模板kubectl edit rc kubia 4.水平縮放kubectl scale rc kubia replicas 10 5.刪除乙個rckubect...
k8s 多租戶 k8s 基礎介紹
備註 1 每乙個pod裡執行著乙個特殊的容器 pause容器,其他容器都是業務容器,這些業務容器共享pause容器的網路棧和volume 邏輯卷 掛載卷。因此他們之間的通訊和資料交換更為高效。2 k8s設計了pod物件,將每個服務程序包裝到相應的pod中,使其成為pod中執行的乙個容器 contai...