昨天最後有提到,由於沒有備份重要的 Secrets,導致重新部署 GitLab 後,因為 PostgreSQL 無法連線,導致無法正常運作。
我是覺得應該有些方法可以挽救,但還是希望應該調整執行流程來避免這個問題,所以今天要來重新調整執行流程。
首先是將 PostgreSQL 的 Secret 存入一個 Yaml 檔中,之後重新部署 GitLab 前,會先建立起來,避免新的 Secret 與 PostgreSQL 的資料不符。
kubectl -n gitlab get secrets gitlab-postgresql-password -o yaml > gitlab-postgresql-password.yaml
將 Secret 的備份還原加入目前的流程會是以下的流程。
export HOST_PATH=$HOME/kind
yq e '.nodes[].extraMounts[].hostPath = env(HOST_PATH)' kind-config.yaml > kind-config-updated.yaml
kind create cluster --name local-dev --config kind-config-updated.yaml --image kindest/node:v1.31.0
helm repo add gitlab https://charts.gitlab.io/
helm repo update
kubectl apply -f sc.yaml -f pv-new.yaml
kubectl create ns gitlab
kubectl -n gitlab apply -f gitlab-postgresql-password.yaml
helm -n gitlab install gitlab gitlab/gitlab \
--set global.storageClass="standard-retain" \
--set gitlab.gitaly.persistence.storageClass="standard-retain" \
--set postgresql.persistence.storageClass="standard-retain" \
--set postgresql.volumePermissions.enabled=true \
--set redis.master.persistence.storageClass="standard-retain" \
--set redis.volumePermissions.enabled=true \
--set minio.persistence.storageClass="standard-retain" \
--set global.hosts.domain=192.168.0.208.nip.io \
-f values-base.yaml \
-f values-ssl.yaml
kubectl -n gitlab get secrets gitlab-postgresql-password -o yaml > gitlab-postgresql-password.yaml
我會先建立 Namespace GitLab
,然後嘗試 Apply 備份的 PostgreSQL Secret,這邊如果備份檔不存在應該會失敗,但是不影響後面的流程。
安裝完 GitLab 後,在將 PostgreSQL 的 Secret 備份一次,如果以存在就會直接覆蓋,所以也不會造成什麼影響。