昨天我們完成了一鍵部署 GitLab 服務,今天要討論建立使用者。
建立使用者本身其實沒什麼好講的 XD,但是如果我們的 GitLab 服務本身是可拋棄式的,難不成我們每次建立 GitLab 都要重建使用者嗎?
透過昨天的所建立的 GitLab 服務,我們可以在首頁選擇註冊,然後來到這個註冊頁面建立使用者。
在首頁創建使用者時,會發現提示需要 GitLab 管理員帳號協助 Approve,後才可以使用,但這服務是我們自己建立的,鬼才知道管理員是誰?總不可能 GitLab 官方吃飽太閒自己來當 XD
觀察 Secrets 後,我注意到有一個名為 gitlab-gitlab-initial-root-password
的 Secret,猜測這應該就是我們的 Admin 帳號。
可以在這個 Secret 的 password 中找到密碼,但是這邊的值是經過 Base64 編碼過,可以選擇手動解開,又或是在 Lens 點擊右邊的眼睛即可自動解開。
回到登入頁面在使用者名稱輸入 root
,密碼則輸入解碼過的 password 值,即可登入。
左下角的 Admin 可以進入管理頁面。
左邊的 Overview > Users,可以進入使用者管理頁面。這時候我們會看到剛才建立的使用者 test test
,點擊 Approve 後就可以用這個帳號登入了。
這時候我們可以嘗試把 GitLab 刪除,後又再次重建。會發現剛才所建立的 User test test
依然存在於新建立的 GitLab 中。
# 刪除指令
helm delete -n gitlab gitlab
如果 Kubernetes 的 Pods 被刪除後,想要將資料保存下來,可以透過 Volumes 的方式來儲存資料,又或是連接外部儲存空間,像是 AWS S3、NFS 之類的方式。
但這是一個自建的服務,不太可能會有佛心公司提供 S3 之類的外部儲存資源給無法預估數量的使用者使用,所以猜測應該是透過 Volumes 的方式來儲存。
Volumes 主要是有分兩種可能:
1. PVC
透過 CSI 將儲存空間變成類似 Partitions 的形式來讓 Pods 掛載使用。
2. HostPath
將主機的某個位置映射到 Pods 內的某個位置,但這種位置通常都是使用者指定,且在 Pods 的 Yaml 中會看到映射的位置。
在刪除 GitLab 後,來到 PVC 的位置可以發現有三個 PVCs 存在,其中一個是屬於 Redis 服務的,另一個則是存放 Repo 的資料。一般來說 ,Redis 都是負責 Cache 相關的業務,所以我假設使用者資料不是由 Redis 負責,而是存在 PostgreSQL 中,由 data-gitlab-postgresql-0
這個 PVC 儲存。
為了驗證我的猜測,所以將兩個 Redis 相關的 PVCs 刪除,保留 data-gitlab-postgresql-0
。
重新用 Helm 安裝 GitLab 服務後,發現我的猜測是對的,使用者資料依然保存下來
。