You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Helm安装GitLab时如何配置内部CA签发的私有信任证书

解决步骤

1. 先验证TLS Secret的证书链完整性

你创建gitlab-cert这个Secret时用到的.pem证书文件,必须按「站点证书 → 中间CA证书 → 内部根CA证书」的顺序拼接完整,不能只放站点单证书。缺失CA链会直接导致访问时触发证书不被信任的报错。
如果确认证书链不全,重新拼接后更新Secret即可:

kubectl create secret tls gitlab-cert --cert=完整拼接后的证书.pem --key=证书.key -n <你的GitLab命名空间> --dry-run=client -o yaml | kubectl apply -f -

2. 新增内部CA全局信任配置

GitLab内部组件间互相调用时,也需要信任你的内部CA,否则内部请求也会出现证书校验失败。先单独把你的内部根CA证书存为internal-ca.pem文件,创建专属CA Secret:

kubectl create secret generic internal-ca --from-file=ca.crt=./internal-ca.pem -n <你的GitLab命名空间>

3. 修正并补充Helm安装参数

你之前的配置里存在参数拼写错误,同时缺失CA信任相关配置,更新后的完整安装/升级参数如下:

helm upgrade --install gitlab gitlab/gitlab \
  --timeout 600s \
  --namespace ${helm_namespace} \
  --set global.hosts.domain=${hosts_domain} \
  --set global.hosts.externalIP=${static_ip} \
  --set global.hosts.https=true \
  --set postgresql.install=false \
  --set global.psql.host=${postgres_sql_ip} \
  --set global.psql.password.secret=${k8s_password_secret} \
  --set global.psql.username=${postgres_sql_user} \
  --set global.psql.password.key=${k8s_password_key} \
  --set global.psql.ssl.secret=${psql_ssl_secret} \
  --set global.psql.ssl.clientCertificate=${psql_ssl_client_certificate} \
  --set global.psql.ssl.clientKey=${psql_ssl_client_key} \
  --set global.psql.ssl.serverCA=${psql_ssl_server_ca} \
  --set global.extraEnv.PGSSLCERT=${extra_env_pg_ssl_cert} \
  --set global.extraEnv.PGSSLKEY=${extra_env_pg_ssl_key} \
  --set global.extraEnv.PGSSLROOTCERT=${extra_env_pg_ssl_root_cert} \
  --set global.ingress.tls.enabled=true \
  --set global.ingress.tls.secretName=gitlab-cert \
  --set certmanager.install=false \
  --set global.ingress.configureCertmanager=false \
  --set gitlab.webservice.ingress.tls.secretName=gitlab-cert \
  --set global.certificates.customCAs[0].secret=internal-ca \
  --set global.certificates.customCAs[0].key=ca.crt

4. 验证配置生效

执行完升级命令等待Pod重启完成后,用以下命令验证证书配置:

# 验证Ingress是否正确关联TLS Secret
kubectl get ingress gitlab-webservice-default -n ${helm_namespace} -o jsonpath='{.spec.tls}'

# 验证站点返回的证书链完整性
openssl s_client -connect ${你的GitLab域名}:443 -servername ${你的GitLab域名}

5. 客户端侧配置

如果是浏览器/本地客户端访问报错,需要将你的内部根CA证书导入到客户端操作系统或浏览器的「受信任的根证书颁发机构」列表中,客户端才会认可内部CA签发的证书。


内容的提问来源于stack exchange,提问作者floormind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:48:01