iT邦幫忙

2024 iThome 鐵人賽

DAY 23
1
DevOps

在Local建立完整的開發環境筆記系列 第 23

Day 23:ReBuild Cluster

  • 分享至 

  • xImage
  •  

昨天最後有提到,由於沒有備份重要的 Secrets,導致重新部署 GitLab 後,因為 PostgreSQL 無法連線,導致無法正常運作。
我是覺得應該有些方法可以挽救,但還是希望應該調整執行流程來避免這個問題,所以今天要來重新調整執行流程。

Backup

首先是將 PostgreSQL 的 Secret 存入一個 Yaml 檔中,之後重新部署 GitLab 前,會先建立起來,避免新的 Secret 與 PostgreSQL 的資料不符。

kubectl -n gitlab get secrets gitlab-postgresql-password -o yaml > gitlab-postgresql-password.yaml

Current Flow

將 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 備份一次,如果以存在就會直接覆蓋,所以也不會造成什麼影響。


上一篇
Day 22:DinD
下一篇
Day 24:Sync GitLab to GitHub
系列文
在Local建立完整的開發環境筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言