使用 GitLab Pages chart

gitlab-pages 子 chart 提供了一个守护进程,用于从 GitLab 项目服务静态网站。

要求

此 chart 依赖于对 Workhorse 服务的访问,可以作为完成 GitLab chart 的一部分,或者作为从此 chart 部署到 Kubernetes 集群访问的外部服务。

配置

gitlab-pages chart 配置如下:全局设置chart 设置

全局设置

我们在 chart 之间共享一些通用的全局设置。有关详细信息,请参见 Globals 文档

chart 设置

以下两节中的表格包含可以使用 --set 标志提供给 helm install 命令的所有可能的 chart 配置。

常规设置

参数 默认值 说明
annotations   Pod annotations
common.labels {} 应用于此 chart 创建的所有对象的补充标签。
deployment.strategy {} 允许配置 deployment 使用的更新策略。如果未提供,使用集群默认值。
extraEnv   要暴露的附加环境变量列表
extraEnvFrom   要暴露的其它数据源的额外环境变量列表
image.pullPolicy IfNotPresent GitLab 镜像拉取策略
image.pullSecrets   用于镜像仓库的 Secrets
image.repository registry.jihulab.com/gitlab-cn/build/cng-images/gitlab-exporter GitLab Exporter 镜像仓库
image.tag   image 标签
init.image.repository   initContainer 镜像
init.image.tag   initContainer 镜像标签
metrics.enabled true 切换 Prometheus metrics exporter
metrics.port 9235 Prometheus metrics exporter 的监听端口
metrics.path /metrics 指标端点路径
metrics.serviceMonitor.enabled false 是否创建 ServiceMonitor 使 Prometheus Operator 能够管理指标抓取,请注意启用此功能会删除 prometheus.io 抓取注释
metrics.serviceMonitor.additionalLabels {} 要添加到 ServiceMonitor 的其它标签
metrics.serviceMonitor.endpointConfig {} ServiceMonitor 的附加端点配置
metrics.annotations   已废弃 设置明确的指标注释。替换为模板内容。
podLabels   补充 Pod 标签。 不会用于选择器。
resources.requests.cpu 75m GitLab Pages 最小 CPU
resources.requests.memory 100M GitLab Pages 最小内存
securityContext.fsGroup 1000 在其下启动 Pod 的 Group ID
securityContext.runAsUser 1000 在其下启动 Pod 的 User ID
service.externalPort 8090 GitLab Pages 对外暴露的端口
service.internalPort 8090 GitLab Pages 内部端口
service.name gitlab-pages GitLab Pages 的 service 名称
service.customDomains.type LoadBalancer 处理自定义域名而创建的 service 类型
service.customDomains.internalHTTPSPort 8091 Pages daemon 监听 HTTPS 请求的端口
service.customDomains.nodePort.http   Node Port 为 HTTP 连接开放的节点端口。仅当 service.customDomains.typeNodePort 时适用
service.customDomains.nodePort.https   Node Port 为 HTTPS 连接开放的节点端口。仅当 service.customDomains.typeNodePort 时适用
service.sessionAffinity None 会话亲和性的类型。 必须是 ClientIPNone(只对来自集群内的流量有意义)
service.sessionAffinityConfig   会话亲和性配置。如果 service.sessionAffinity == ClientIP 则默认会话粘性时间为 3 小时 (10800)
serviceLabels {} 补充 service 标签
tolerations [] 分配给 Pod 的容忍标签

Pages 特定设置

参数 默认值 描述
artifactsServerTimeout 10 服务器的代理请求的超时(以秒为单位)
artifactsServerUrl   代理 artifact 请求的 API URL
extraVolumeMounts   要添加的附加挂载卷列表
extraVolumes   要创建的附加卷列表
gitlabClientHttpTimeout   GitLab API HTTP 客户端连接超时(以秒为单位)
gitlabClientJwtExpiry   JWT 令牌到期时间(以秒为单位)
gitlabServer   GitLab 服务器 FQDN
headers [] 发送给客户端的附加 http header(s)
insecureCiphers false 使用默认密码套件列表,可能包含不安全的密码套件,如 3DES 和 RC4
internalGitlabServer   API 请求使用的内部 GitLab 服务器
logFormat json 日志输出格式
logVerbose false 详细日志记录
maxConnections   对 HTTP、HTTPS 或代理侦听器的并发连接数的限制
maxURILength   限制 URI 的长度,0 表示无限制。
redirectHttp false 从 HTTP 重定向页面到 HTTPS
sentry.enabled false 启用 Sentry 报告
sentry.dsn   发送 Sentry 崩溃报告的地址
sentry.environment   Sentry 崩溃报告的环境
serverShutdowntimeout 30s GitLab Pages 服务器关闭超时(以秒为单位)
statusUri   状态页面的 URL 路径
tls.minVersion   指定最小的 SSL/TLS 版本
tls.maxVersion   指定最大的 SSL/TLS 版本
useHTTPProxy false 当 GitLab Pages 位于反向代理之后时使用此选项。
useProxyV2 false 强制 HTTPS 请求使用 PROXYv2 协议。
zipCache.cleanup int 查看:Zip 服务和缓存配置
zipCache.expiration int 查看:Zip 服务和缓存配置
zipCache.refresh int 查看:Zip 服务和缓存配置
zipOpenTimeout int 查看:Zip 服务和缓存配置
zipHTTPClientTimeout int 查看:Zip 服务和缓存配置
rateLimitSourceIP int 要启用速率限制,请使用 extraEnv=["FF_ENFORCE_IP_RATE_LIMITS=true"]
rateLimitSourceIPBurst int
rateLimitDomain int 要启用速率限制,请使用 extraEnv=["FF_ENFORCE_DOMAIN_RATE_LIMITS=true"]
rateLimitDomainBurst int
rateLimitTLSSourceIP   使用 extraEnv=["FF_ENFORCE_IP_TLS_RATE_LIMITS=true"] 启用速率限制
rateLimitTLSSourceIPBurst    
rateLimitTLSDomain   使用 extraEnv=["FF_ENFORCE_DOMAIN_TLS_RATE_LIMITS=true"] 启用速率限制
rateLimitTLSDomainBurst    
serverReadTimeout 5s 查看:GitLab Pages 全局设置
serverReadHeaderTimeout 1s 查看:GitLab Pages 全局设置
serverWriteTimeout 5m 查看:GitLab Pages 全局设置
serverKeepAlive 15s 查看:GitLab Pages 全局设置

配置 ingress

此部分控制 GitLab Pages Ingress.

名称 类型 默认值 说明
apiVersion String   apiVersion 字段中使用的值。
annotations String   此字段与 Kubernetes Ingress 的标准 annotations 完全匹配。
configureCertmanager Boolean false 切换 Ingress annotation cert-manager.io/issuer。通过 cert-manager 获取 GitLab Pages 的 TLS 证书被禁用,因为获取通配符证书需要具有 DNS01 solver 的 cert-manager 颁发者。获取更多信息请查看 GitLab Pages 的 TLS 要求
enabled Boolean   控制是否为支持它们的服务创建 Ingress 对象的设置。 如果未设置,则使用 global.ingress.enabled 设置。
tls.enabled Boolean   当设置为 false 时,将禁用 Pages 子 chart 的 TLS,主要用于无法在 ingress-level 使用 TLS 终止的情况,例如在 Ingress Controller 之前有 TLS 终止代理时。
tls.secretName String   Kubernetes TLS Secret 的名称,其中包含 pages URL 的有效证书和密钥。如果未设置,则使用 global.ingress.tls.secretName。 默认为未设置。

Chart 配置示例

extraVolumes

extraVolumes 允许您在 chart 范围内配置 extra volumes。

extraVolumes 配置示例如下:

extraVolumes: |
  - name: example-volume
    persistentVolumeClaim:
      claimName: example-pvc

extraVolumeMounts

extraVolumeMounts 允许您在 chart 范围内配置所有容器上的 extra volumeMounts。

extraVolumeMounts 配置示例如下:

extraVolumeMounts: |
  - name: example-volume
    mountPath: /etc/example

TLS 访问 GitLab Pages

要使用 TLS 访问 GitLab Pages 功能,您必须:

  1. 按照以下格式为您的 GitLab Pages 域创建专用通配符证书:*.pages.<yourdomain>

  2. 在 Kubernetes 中创建密钥:

    kubectl create secret tls tls-star-pages-<mysecret> --cert=<path/to/fullchain.pem> --key=<path/to/privkey.pem>
    
  3. 配置 GitLab Pages 使用此密钥:

    gitlab:
      gitlab-pages:
        ingress:
          tls:
            secretName: tls-star-pages-<mysecret>
    
  4. 在您的 DNS 提供商中创建一个名为 *.pages.<yourdomaindomain> 的 DNS 条目,指向您的 LoadBalancer。