1,前言
vault HA 模式,leader挂掉後會自動選舉出新的leader,原leader降級為follower,但最少要保證有一個follower是解封狀态,才可以選舉出新的leader,而pod重新開機之後,會處于Seal狀态,不解封的話無法作為follower,是以重新開機自動解封是必要的需求,官方推薦自動解封方式有許多種,但基本上都是用類似密碼機的方式,具體參考官網文檔: https://www.vaultproject.io/docs/v1.9.x/configuration/seal ,本文僅針對不使用文檔中的方式 簡單實作自動解封,有條件的話建議使用官方推薦方法實作自動解封。
2,建立解封腳本并将其建立為secret
- 解封腳本vault_unreal.sh
點選檢視代碼
#!/bin/sh
vault operator unseal Naioja2XND6Okz9NmOdKlnC+s54lkiHZeGote2Vve6Gh
sleep 3
vault operator unseal 2uya4Usc9jqMx03MMbuUjAFXYrmopoDo9fFF7520KjdK
sleep 3
vault operator unseal xfrUTv7CBtxU6h384d5A+kle8N5V12+VS2uX+iN5os09
sleep 3
-
将腳本建立為secret
kubectl create secret generic vault-unreal --from-file=vault_unreal.sh -n vault
3,statefulset中添加挂載和啟動檢測
點選檢視代碼
startupProbe:
exec:
command:
- /bin/sh
- -ec
- sh /tmp/sh/vault_unreal.sh
failureThreshold: 3
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
挂載:
volumeMounts:
- mountPath: /tmp/sh
name: vault-unreal
volumes:
- name: vault-unreal
secret:
defaultMode: 420
secretName: vault-unreal