使用 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.type 为 NodePort 时适用
| |
service.customDomains.nodePort.https
| Node Port 为 HTTPS 连接开放的节点端口。仅当 service.customDomains.type 为 NodePort 时适用
| |
service.sessionAffinity
| None
| 会话亲和性的类型。 必须是 ClientIP 或 None (只对来自集群内的流量有意义)
|
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 功能,您必须:
-
按照以下格式为您的 GitLab Pages 域创建专用通配符证书:
*.pages.<yourdomain>
。 -
在 Kubernetes 中创建密钥:
kubectl create secret tls tls-star-pages-<mysecret> --cert=<path/to/fullchain.pem> --key=<path/to/privkey.pem>
-
配置 GitLab Pages 使用此密钥:
gitlab: gitlab-pages: ingress: tls: secretName: tls-star-pages-<mysecret>
-
在您的 DNS 提供商中创建一个名为
*.pages.<yourdomaindomain>
的 DNS 条目,指向您的 LoadBalancer。