GitLab从Kubernetes迁移到主机部署指南
为了模拟创建上述文件,并确保每一步操作准确无误,以下是详细的步骤和示例文件内容:
模拟配置文件和命令
- 安装GitLab-CE
确保GitLab-CE已经安装。这里假设版本是14.2.3。如果未安装,请按照GitLab官方文档安装相同版本。
- 配置文件
/etc/gitlab/gitlab.rb
创建并编辑/etc/gitlab/gitlab.rb
文件:
sudo vim /etc/gitlab/gitlab.rb
添加以下内容:
external_url 'https://gitlab.xxx.work'
# 配置HTTPS
nginx['enable'] = true
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/opt/gitlab/ssl/zzz.zzz.crt"
nginx['ssl_certificate_key'] = "/opt/gitlab/ssl/zzz.zzz.key"
# 配置LDAP
gitlab_rails['ldap_enabled'] = true
gitlab_rails['prevent_ldap_sign_in'] = false
gitlab_rails['ldap_servers'] = {
'main' => {
'label' => 'LDAP',
'host' => 'xxx.xxx.xxx.xxx',
'port' => 389,
'uid' => 'sAMAccountName',
'bind_dn' => 'CN=gitlab,CN=Users,DC=xxx,DC=com',
'password' => 'xxxx',
'active_directory' => true,
'allow_username_or_email_login' => true,
'block_auto_created_users' => false,
'base' => 'DC=xxx,DC=com',
'user_filter' => ''
}
}
保存并退出编辑器。
- 执行配置和重启
运行以下命令使配置生效并重启服务:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
模拟备份文件和权限修改
- 创建备份文件并修改权限
假设备份文件名为1547087542_2022_09_02_13.12.15_gitlab_backup.tar
。
sudo touch /opt/gitlab/backups/1547087542_2022_09_02_13.12.15_gitlab_backup.tar
sudo chmod 777 /opt/gitlab/backups/1547087542_2022_09_02_13.12.15_gitlab_backup.tar
模拟停止服务、恢复备份和重启服务
- 停止unicorn和sidekiq服务
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
- 恢复备份数据
sudo gitlab-rake gitlab:backup:restore BACKUP=1547087542_2022_09_02_13.12.15
- 重启GitLab服务
sudo gitlab-ctl start
模拟错误处理配置文件
错误一:监听问题
编辑postgresql.conf
和pg_hba.conf
文件:
sudo vim /var/opt/gitlab/postgresql/data/postgresql.conf
添加或修改以下内容:
listen_addresses = '*'
保存退出,然后编辑pg_hba.conf
:
sudo vim /var/opt/gitlab/postgresql/data/pg_hba.conf
添加以下内容:
local all all trust
host all all 127.0.0.1/32 trust
保存并退出。
错误二:用户问题
sudo su - gitlab-psql
/opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
在psql中运行以下命令:
ALTER USER gitlab WITH SUPERUSER;
CREATE USER postgres SUPERUSER;
\q
退出gitlab-psql用户:
exit
错误三:恢复后遇到500错误
编辑/etc/gitlab/gitlab.rb
文件,添加以下内容:
# 启用Job Artifacts
gitlab_rails['artifacts_enabled'] = true
gitlab_rails['artifacts_path'] = "/var/opt/gitlab/gitlab-rails/shared/artifacts"
gitlab_rails['artifacts_object_store_enabled'] = true
gitlab_rails['artifacts_object_store_direct_upload'] = true
gitlab_rails['artifacts_object_store_background_upload'] = true
gitlab_rails['artifacts_object_store_proxy_download'] = true
gitlab_rails['artifacts_object_store_remote_directory'] = "artifacts"
gitlab_rails['artifacts_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'eu-west-1',
'aws_access_key_id' => 'YOUR_ACCESS_KEY_ID',
'aws_secret_access_key' => 'YOUR_SECRET_ACCESS_KEY',
'endpoint' => 'http://minio地址:9000',
'host' => 'localhost',
'path_style' => true
}
# 启用Git LFS
gitlab_rails['lfs_enabled'] = true
gitlab_rails['lfs_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/lfs-objects"
gitlab_rails['lfs_object_store_enabled'] = true
gitlab_rails['lfs_object_store_direct_upload'] = true
gitlab_rails['lfs_object_store_background_upload'] = true
gitlab_rails['lfs_object_store_proxy_download'] = true
gitlab_rails['lfs_object_store_remote_directory'] = "lfs-objects"
gitlab_rails['lfs_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'eu-west-1',
'aws_access_key_id' => 'YOUR_ACCESS_KEY_ID',
'aws_secret_access_key' => 'YOUR_SECRET_ACCESS_KEY',
'endpoint' => 'http://minio地址:9000',
'host' => 'localhost',
'path_style' => true
}
# 启用GitLab uploads
gitlab_rails['uploads_storage_path'] = "/var/opt/gitlab/gitlab-rails/public"
gitlab_rails['uploads_base_dir'] = "uploads/-/system"
gitlab_rails['uploads_object_store_enabled'] = true
gitlab_rails['uploads_object_store_direct_upload'] = true
gitlab_rails['uploads_object_store_background_upload'] = true
gitlab_rails['uploads_object_store_proxy_download'] = true
gitlab_rails['uploads_object_store_remote_directory'] = "uploads"
gitlab_rails['uploads_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'eu-west-1',
'aws_access_key_id' => 'YOUR_ACCESS_KEY_ID',
'aws_secret_access_key' => 'YOUR_SECRET_ACCESS_KEY',
'endpoint' => 'http://minio地址:9000',
'host' => 'localhost',
'path_style' => true
}
保存并退出。
重启GitLab:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
错误四:其他密钥问题
- 覆盖
db_key_base
将旧GitLab的db_key_base
覆盖到新GitLab,文件位置为:/etc/gitlab/gitlab-secrets.json
。
- 执行清理命令
对于CE版本:
sudo gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
对于EE版本:
sudo gitlab-rails runner "Project.where(mirror: false).where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
- 重启GitLab
sudo gitlab-ctl restart
如果仍未解决,可以尝试覆盖secrets.yaml
文件:
sudo cp /path/to/old/gitlab/secrets.yaml /opt/gitlab/embedded/service/gitlab-rails/config/secrets.yaml
sudo gitlab-ctl restart
总结
通过以上步骤,可以成功将GitLab从Kubernetes迁移到主机部署,并解决可能遇到的问题。确保每一步操作仔细检查和验证,以确保迁移的顺利进行。
赏
支付宝打赏
微信打赏


赞赏是不耍流氓的鼓励
评论系统未开启,无法评论!