k8s集群下部署gitlab,,主要使用三個pods,一個gitlab,一個postgres,一個redis
使用的鏡像
gitlab鏡像:https://hub.docker.com/r/sameersbn/gitlab/tags?page=2
postgres鏡像:https://hub.docker.com/r/sameersbn/postgresql/tags
redis鏡像:https://hub.docker.com/r/sameersbn/redis/tags
此次使用的存儲都是通過aws的文件存儲efs
先創建strogresclass
創建pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: gitlab-gitlab
annotations:
volume.beta.kubernetes.io/storage-class: "aws-efs"
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
創建gitlab容器,掛載pvc到容器里
此次gitlab版本為gitlab12.9.2(修改了原鏡像的文件,重新打包的自定義鏡像)
報錯的bug為gitlab新建項目使用github導入時頁面500錯誤
在/home/git/gitlab/log/production.log路徑下,日志顯示為
NoMethodError (undefined method `users_import_github_callback_url' for #<Import::GithubController:0x00007fb1567dcc60>
修改文件在該路徑下
/home/git/gitlab/app/controllers/import/github_controller.rb
if github_import_configured? && logged_in_with_provider?
go_to_provider_for_permissions - elsif session[access_token_key](原鏡像文件中的這行刪除) + elsif session[access_token_key].present?(新加這一行) redirect_to status_import_url end end
修改完后重新打包鏡像,當然也可以把整個配置目錄掛載出來
這里選擇只掛載data目錄保存倉庫文件,所以重打包鏡像
重新生成Pods后,由於是國內的機器,所以訪問github還需要FQ,這里使用v2提供服務,容器設置export http_proxy="socks5://IP:port"
export https_proxy="socks5://IP:port"
但是日志還是報api.github.com:443鏈接不上,所以暫時修改了hosts文件,指定api.github.com使用固定ip
gitlab的備份與還原
由於采用sameersbn/gitlab的鏡像構建gitlab,所以容器內沒有包含gitlab-rake命令,這種方式安裝的是對應官網的源代碼安裝,請使用此工具:
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
該操作會在/home/git/data/backups目錄下以日期為單位備份
執行還原備份操作:
sudo service gitlab stop
bundle exec rake gitlab:backup:restore RAILS_ENV=production
注意:當使用bundle exec rake備份時,會提示需要手動備份gitlab-secrets.json與gitlab.rb文件,這兩個文件用於在其它服務器上還原此備份需要
參考地址:https://docs.gitlab.com/ee/raketasks/backup_restore.html
可以在gitlab的啟動yaml文件上加上env,指定備份路徑,備份時間,每日備份等
--env=‘GITLAB_BACKUP_DIR=/home/git/data/backups‘ --env=‘GITLAB_BACKUPS=daily‘ --env=‘GITLAB_BACKUP_TIME=00:00‘ \