马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 胡睿智 于 2024-4-2 12:40 编辑
5 Gitlab Install gitlab-workspaces-proxy
Step1:生成 TLS certificates需要为以下两个域名生成 TLS 证书: 您可以选择任何证书颁发机构来生成证书。
这里提供一个使用 Let's Encrypt 的 certbot 的示例。在使用 CLI 向导的过程中,它会向您询问 ACME DNS,并需要您在您的 DNS 提供商处创建 TXT 记录。 - export EMAIL="rzhu@gitlab.cn"
- 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 是否生效 - nslookup -q=TXT _acme-challenge.workspaces.rzhu.tech.
复制代码
- export WORKSPACES_DOMAIN_CERT="${HOME}/.certbot/config/live/${GITLAB_WORKSPACES_PROXY_DOMAIN}/fullchain.pem"
- 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实例上注册应用
把重定向 URI 设置为 https://${GITLAB_WORKSPACES_PROXY_DOMAIN}/auth/callback 把权限范围设置为 api,read_user,openid,profile 请务必记下生成的客户端 id 和密钥,并将它们保存在一个安全的密码库中,例如 1Password。
- export CLIENT_ID="your_application_id"
- export CLIENT_SECRET="your_application_secret"export REDIRECT_URI="https://${GITLAB_WORKSPACES_PROXY_DOMAIN}/auth/callback
复制代码
- ssh-keygen -f ssh-host-key -N '' -t rsa
- export SSH_HOST_KEY=$(pwd)/ssh-host-key
复制代码- export GITLAB_URL="https://gitlab.com"
- export SIGNING_KEY="a_random_key_consisting_of_letters_numbers_and_special_chars"
复制代码- helm repo add gitlab-workspaces-proxy \
- <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 - helm repo update
- 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)之外的其他命名空间,请确保在代理配置中也进行了相应的修改。
- remote_development:
- gitlab_workspaces_proxy:
复制代码
|