尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

GitLab 如何与 RustFS 集成?

GitLab 如何与 RustFS 集成? GitLab 是全球占比最高的 DevOps 私有化部署平台RustFS 是全球开源领域增长最快的对象存储系统完全私有化部署。两者能够在 OIDC 集成和对象存储配置上完美结合。本文分享 GitLab OIDC 和 RustFS 的集成以及将 RustFS 配置为 GitLab 的对象存储后端。GitLab OIDC 与 RustFS 的集成将 GitLab OIDC 与 RustFS 集成后可以通过GitLab 账号来登录 RustFS实现企业内部 SSO 系统的统一管理。RustFS 安装RustFS 支持多种安装方式二进制、Docker 以及 Kubernetes。例如在 ubuntu 22.04 上快速安装一个 RustFS 实例curl -O https://rustfs.com/install_rustfs.sh bash install_rustfs.sh安装完毕需要立即修改默认的 Access Key 和 Secret Key。编辑/etc/default/rustfs文件修改RUSTFS_ACCESS_KEY和RUSTFS_SECRET_KEY的值。需要注意值最好不要是rustfsadmin。然后通过systemctl restart rustfs重启服务。最后登录http://rustfs.example.com:9001访问控制台。一旦实例运行成功OIDC 过程中所需的重定向 URL 也就确定了http://rustfs.example.com:9001/rustfs/admin/v3/oidc/callback/defaultGitLab 安装和配置国内用户可以安装 GitLab 中国版——极狐GitLab。例如在 ubuntu 22.04 上快速安装一个极狐GitLab 实例# 更新依赖 sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates tzdata perl # 添加repo curl -L get.gitlab.cn | bash # 安装 GitLab-JH sudo EXTERNAL_URLhttp://gitlab.example.com apt-get install -y gitlab-jh安装完毕登录http://gitlab.example.com默认用户名为root初始化密码在/etc/gitlab/initial_password文件中。在 GitLab 管理中心最新版右上角的Admin中选择Application点击Add new application输入NameRedirect URIscope 中勾选openid、profile、email最后点击Save application可以看到生成的Application ID和Secret点击Continue即可。上面生成的 Application ID 和 Secret 要在 RustFS 配置中使用。RustFS 配置编辑 RustFS 配置文件/etc/default/rustfs写入如下环境变量RUSTFS_BROWSER_REDIRECT_URLhttp://rustfs.example.com RUSTFS_IDENTITY_OPENID_ENABLEon RUSTFS_IDENTITY_OPENID_CONFIG_URLhttp://gitlab.example.com RUSTFS_IDENTITY_OPENID_CLIENT_IDgitlab-application-id RUSTFS_IDENTITY_OPENID_CLIENT_SECRETgitlab-application-secret RUSTFS_IDENTITY_OPENID_SCOPESopenid,profile,email RUSTFS_IDENTITY_OPENID_REDIRECT_URIhttp://rustfs.example.com/rustfs/admin/v3/oidc/callback/default RUSTFS_IDENTITY_OPENID_REDIRECT_URI_DYNAMICoff RUSTFS_IDENTITY_OPENID_DISPLAY_NAMEGitLab RUSTFS_IDENTITY_OPENID_EMAIL_CLAIMemail RUSTFS_IDENTITY_OPENID_USERNAME_CLAIMpreferred_username RUSTFS_IDENTITY_OPENID_ROLE_POLICYconsoleAdminRUSTFS_IDENTITY_OPENID_CLIENT_ID和RUSTFS_IDENTITY_OPENID_CLIENT_SECRET为上一步生成的 Application ID 和 Secret。重启 RustFS 服务systemctl restart rustfs在 RustFS 控制台上点击Login with GitLab即可。配置 RustFS 为 GitLab 的对象存储后端GitLab 支持通过配置对象存储服务来管理自身管理的海量数据比如将artifacts、lfs、uploads、packages、terraform_state、pages、ci_secure_files、external_diffs、dependency_proxy种的数据存储到 S3 兼容的远端对象存储服务服务中。RustFS 是完全 S3 兼容的对象存储系统因此可以和 GitLab 进行集成。整体分两步在 RustFS 上创建存储桶在 GitLab 中配置 RustFS 信息创建存储桶可以通过 RustFS 控制台或 Client CLI 来创建存储桶详细步骤可以参考 RustFS 存储桶管理文档。配置 GitLabGitLab 中不同种类数据的对象存储服务配置都类似主要包括启用对象存储服务、配置对象存储服务的具体信息。以 Artifacts 的配置为例来说明。Artifacts 在 GitLab 主要用作 CI/CD 中是 Job 的产物。首先在 GitLab 配置文件中开启如下配置以让 artifacts 使用 RustFS 作为对象存储gitlab_rails[artifacts_enabled] true gitlab_rails[artifacts_object_store_enabled] true gitlab_rails[artifacts_object_store_proxy_download] false gitlab_rails[artifacts_object_store_remote_directory] artifacts gitlab_rails[artifacts_object_store_connection] { provider AWS, region us-east-1, aws_access_key_id RUSTFS_ACCESS_KEY, aws_secret_access_key RUSTFS_SECRET_KEy, endpoint http://rustfs.example.com:9000, path_style true, aws_signature_version 4 }通过执行gitlab-ctl reconfigure让配置生效。接着在 GitLab 上构造一个可以生成 artifacts 的 Job。找一个项目添加一个.gitlab-ci.yml文件并写入如下内容stages: - build build: stage: build script: - pwd - mkdir -p output - echo RustFS Object Storage Testing on GitLab output/rustfs.txt - ls -ltr output tags: - rustfs artifacts: paths: - ./output/*.txt expire_in: 1 week触发流水线并运行成功以后可以在 RustFS 控制台上查看 artifacts bucket 中是否有数据可以看到有数据产生说明配置生效Job 生成的 artifacts 存储了对象存储 RustFS 中而不是本地磁盘。其他配置类似可以自行尝试。
返回列表