Bạn đọc link tham khảo này là đủ khỏi cần sem bài của mình:
https://learn.hashicorp.com/tutorials/vault/kubernetes-minikube?in=vault/kubernetes
Còn lười thì làm theo mình
Giờ cài consul bằng helm, consul sẽ là backend để vault lưu các secret. Kiểu như web thì cần có database vậy.
bạn sử dụng helm repo này cho cả vault và consul luôn
helm repo add hashicorp https://helm.releases.hashicorp.com
Tạo 1 namespace:
kubectl create ns vault
giờ bạn tạo 1 file value “helm-consul-values.yml” để chỉnh custom lại 1 số config cho consul
$ cat helm-consul-values.yml
global:
datacenter: vault-kubernetes-tutorial
client:
enabled: true
server:
replicas: 1
bootstrapExpect: 1
disruptionBudget:
maxUnavailable: 0
storageClass: longhorn
storageClass: longhorn >>> chỗ này quan trọng Consul sẽ cần 1 pv, hiện tại mình đang dụng longhorn để tạo pvc,pv mấy làm sao mình biết được strogeClass này
Theo mình thấy thằng server nó sẽ lần nếu bạn cần PVC ra 1 Node đặc biệt thì sử value sau:
global:
datacenter: vault-kubernetes-tutorial
client:
enabled: true
server:
replicas: 1
bootstrapExpect: 1
disruptionBudget:
maxUnavailable: 0
storageClass: longhorn
nodeSelector: |
node: "storage-ssd"
tolerations: |
- key: "node"
operator: "Equal"
value: "storage-ssd"
effect: "NoSchedule"
Chú ý ở value trên có dấu “|” nhé
Nếu bạn muốn tăng số consul-server thì chỉnh:
global:
datacenter: vault-kubernetes-tutorial
client:
enabled: true
server:
replicas: 3
bootstrapExpect: 3
disruptionBudget:
maxUnavailable: 0
storageClass: longhorn
root@k8s-master:~# kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
longhorn (default) driver.longhorn.io Delete Immediate true 164m
Giờ apply thôi
helm repo update
helm install consul hashicorp/consul --namespace vault --values helm-consul-values.yml
Giờ cài vault thì ez rồi
lại tạo 1 file value cho vault:
cat helm-vault-values.yml
server:
affinity: ""
ha:
enabled: true
>>>>>>install vault
helm install vault hashicorp/vault --namespace vault --values helm-vault-values.yml
khi install xong bạn sẽ thấy nó nhu này là đang ở trang thai seal “niêm phong”, giờ cần mở niêmn phong
Initialize and unseal Vault
Sử dụng câu lệnh sau để lấy key để unseal và token root để đăng nhập
kubectl -n vault exec vault-0 -- vault operator init -key-shares=1 -key-threshold=1 -format=json > cluster-keys.json
>>>>Hiển thị key unseal thì:
cat cluster-keys.json | jq -r ".unseal_keys_b64[]"
rrUtT32GztRy/pVWmcH0ZQLCCXon/TxCgi40FL1Zzus=
>>>> giờ đưa key vào 1 biến
VAULT_UNSEAL_KEY=$(cat cluster-keys.json | jq -r ".unseal_keys_b64[]")
>>> exec từng pod để unseal
kubectl -n vault exec vault-0 -- vault operator unseal $VAULT_UNSEAL_KEY
kubectl -n vault exec vault-1 -- vault operator unseal $VAULT_UNSEAL_KEY
kubectl -n vault exec vault-2 -- vault operator unseal $VAULT_UNSEAL_KEY
giờ tất cả đều ready
tạo ingress để vào web của vault:
Lấy token root login
cat cluster-keys.json | jq -r ".root_token"