k8s初級實戰09 Secret

2021-10-14 07:58:29 字數 3541 閱讀 4411

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...