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还需要翻墙,这里使用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‘