logo头像

老陕小张学技术接地气

GitLab从Kubernetes迁移到主机部署指南

为了模拟创建上述文件,并确保每一步操作准确无误,以下是详细的步骤和示例文件内容:

模拟配置文件和命令

  1. 安装GitLab-CE

确保GitLab-CE已经安装。这里假设版本是14.2.3。如果未安装,请按照GitLab官方文档安装相同版本。

  1. 配置文件/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' => ''
    }
}

保存并退出编辑器。

  1. 执行配置和重启

运行以下命令使配置生效并重启服务:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

模拟备份文件和权限修改

  1. 创建备份文件并修改权限

假设备份文件名为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

模拟停止服务、恢复备份和重启服务

  1. 停止unicorn和sidekiq服务
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
  1. 恢复备份数据
sudo gitlab-rake gitlab:backup:restore BACKUP=1547087542_2022_09_02_13.12.15
  1. 重启GitLab服务
sudo gitlab-ctl start

模拟错误处理配置文件

错误一:监听问题

编辑postgresql.confpg_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

错误四:其他密钥问题

  1. 覆盖db_key_base

将旧GitLab的db_key_base覆盖到新GitLab,文件位置为:/etc/gitlab/gitlab-secrets.json

  1. 执行清理命令

对于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 }"
  1. 重启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迁移到主机部署,并解决可能遇到的问题。确保每一步操作仔细检查和验证,以确保迁移的顺利进行。

支付宝打赏 微信打赏

赞赏是不耍流氓的鼓励

评论系统未开启,无法评论!

-->