极狐GitLab 正式推出面向 GitLab 老旧版本(12.x、13.x、14.x、15.x 等)免费用户的专业升级服务,点击查看详情

返回列表 发布新帖

极狐Gitlab WorkSpaces - 02

695 0
发表于 2024-4-2 12:36:14 | 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 胡睿智 于 2024-4-2 12:40 编辑

5 Gitlab Install  gitlab-workspaces-proxy


Step1:生成 TLS certificates
需要为以下两个域名生成 TLS 证书:
  • 一个是 gitlab-workspaces-proxy 将要监听的域名,我们将其命名为 GITLAB_WORKSPACES_PROXY_DOMAIN。  
  • 另一个是所有工作区将要使用的域名,我们将其命名为 GITLAB_WORKSPACES_WILDCARD_DOMAIN。

您可以选择任何证书颁发机构来生成证书。
这里提供一个使用 Let's Encrypt 的 certbot 的示例。在使用 CLI 向导的过程中,它会向您询问 ACME DNS,并需要您在您的 DNS 提供商处创建 TXT 记录。
  • 安装certbot工具

  1. brew install certbot
复制代码
  • 生成证书

  1. export EMAIL="rzhu@gitlab.cn"
  2. export GITLAB_WORKSPACES_PROXY_DOMAIN="workspaces.rzhu.tech"export GITLAB_WORKSPACES_WILDCARD_DOMAIN="*.workspaces.rzhu.tech"certbot -d "${GITLAB_WORKSPACES_PROXY_DOMAIN}" \  -m "${EMAIL}" \  --config-dir ~/.certbot/config \  --logs-dir ~/.certbot/logs \  --work-dir ~/.certbot/work \  --manual \  --preferred-challenges dns certonlycertbot -d "${GITLAB_WORKSPACES_WILDCARD_DOMAIN}" \  -m "${EMAIL}" \  --config-dir ~/.certbot/config \  --logs-dir ~/.certbot/logs \  --work-dir ~/.certbot/work \  --manual \  --preferred-challenges dns certonly
复制代码

生成证书的过程中需要配置txt记录验证使用 nslookup 检测DNS 是否生效
  1. nslookup -q=TXT _acme-challenge.workspaces.rzhu.tech.
复制代码

  • 注意输出中的证书目录,并更新下面的环境变量

  1. export WORKSPACES_DOMAIN_CERT="${HOME}/.certbot/config/live/${GITLAB_WORKSPACES_PROXY_DOMAIN}/fullchain.pem"
  2. export WORKSPACES_DOMAIN_KEY="${HOME}/.certbot/config/live/${GITLAB_WORKSPACES_PROXY_DOMAIN}/privkey.pem"export WILDCARD_DOMAIN_CERT="${HOME}/.certbot/config/live/${GITLAB_WORKSPACES_PROXY_DOMAIN}-0001/fullchain.pem"export WILDCARD_DOMAIN_KEY="${HOME}/.certbot/config/live/${GITLAB_WORKSPACES_PROXY_DOMAIN}-0001/privkey.pem"
复制代码



Step2:在GitLab实例上注册应用

  • 请根据这里的文档注册一个 OAuth 应用。
  • 把重定向 URI 设置为 https://${GITLAB_WORKSPACES_PROXY_DOMAIN}/auth/callback
  • 把权限范围设置为 api,read_user,openid,profile
  • 请务必记下生成的客户端 id 和密钥,并将它们保存在一个安全的密码库中,例如 1Password。

  1. export CLIENT_ID="your_application_id"
  2. export CLIENT_SECRET="your_application_secret"export REDIRECT_URI="https://${GITLAB_WORKSPACES_PROXY_DOMAIN}/auth/callback
复制代码

  • 生成 SSH 主机密钥。虽然在这个示例中我们生成的是 RSA 密钥,但你也可以选择生成 ECDSA 类型的密钥

  1. ssh-keygen -f ssh-host-key -N '' -t rsa
  2. export SSH_HOST_KEY=$(pwd)/ssh-host-key
复制代码
  • 为proxy创建配置密钥,并部署 helm chat(请确保你使用的 helm 版本为 v3.11.0 或更高)
  • 生成签名密钥,并将其安全地存储起来(例如,可以使用像 1Password 这样的密码库来创建和保存密钥)。

  1. export GITLAB_URL="https://gitlab.com"
  2. export SIGNING_KEY="a_random_key_consisting_of_letters_numbers_and_special_chars"
复制代码
  1. helm repo add gitlab-workspaces-proxy \
  2.   <a href="https://gitlab.com/api/v4/projects/gitlab-org%2fremote-development%2fgitlab-workspaces-proxy/packages/helm/devel" target="_blank">https://gitlab.com/api/v4/projec ... packages/helm/devel</a>
复制代码
默认使用的 ingress Class是 nginx。如果你使用的是其他类型的 ingress 或 ingress Class,记得修改 ingress.className 参数。
本案例使用的ClassName 是 gitlab-nginxnamespace 使用的 rzhu-workspaces
  1. helm repo update
  2. helm upgrade --install gitlab-workspaces-proxy \  gitlab-workspaces-proxy/gitlab-workspaces-proxy \  --version 0.1.10 \  --namespace=rzhu-workspaces \  --create-namespace \  --set="auth.client_id=${CLIENT_ID}" \  --set="auth.client_secret=${CLIENT_SECRET}" \  --set="auth.host=${GITLAB_URL}" \  --set="auth.redirect_uri=${REDIRECT_URI}" \  --set="auth.signing_key=${SIGNING_KEY}" \  --set="ingress.host.workspaceDomain=${GITLAB_WORKSPACES_PROXY_DOMAIN}" \  --set="ingress.host.wildcardDomain=${GITLAB_WORKSPACES_WILDCARD_DOMAIN}" \  --set="ingress.tls.workspaceDomainCert=$(cat ${WORKSPACES_DOMAIN_CERT})" \  --set="ingress.tls.workspaceDomainKey=$(cat ${WORKSPACES_DOMAIN_KEY})" \  --set="ingress.tls.wildcardDomainCert=$(cat ${WILDCARD_DOMAIN_CERT})" \  --set="ingress.tls.wildcardDomainKey=$(cat ${WILDCARD_DOMAIN_KEY})" \  --set="ssh.host_key=$(cat ${SSH_HOST_KEY})" \  --set="ingress.className=gitlab-nginx"
复制代码

请注意:您使用的证书可能需要定期更新,例如 Let's Encrypt 提供的证书默认有效期为三个月。在获得新的证书后,需要重新执行上述 helm 命令来更新 TLS 证书。
如果您将 helm Chat 部署到除了默认配置的命名空间(gitlab-workspaces)之外的其他命名空间,请确保在代理配置中也进行了相应的修改。

  1. remote_development:
  2.   gitlab_workspaces_proxy:   
复制代码









回复

使用道具 举报

意见建议

Email:forum@gitlab.cn
  • 关注公众号
  • 添加专业顾问
Copyright © 2001-2024 极狐GitLab论坛 版权所有 All Rights Reserved. 鄂ICP备2021008419号-1|鄂公网安备42018502006137号
关灯 快速发帖
扫一扫添加专业顾问
返回顶部
快速回复 返回顶部 返回列表