使用极狐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
| 要暴露的其它数据源的额外环境变量列表 | |||||
hpa.behavior
| {scaleDown: {stabilizationWindowSeconds: 300 }}
| 包含放大和缩小行为的规范(需要 autoscaling/v2beta2 或更高版本)
| ||||
hpa.customMetrics
| []
| 自定义指标包含用于计算所需副本数的规范(覆盖在 targetAverageUtilization 中配置的平均 CPU 利用率的默认使用值)
| ||||
hpa.cpu.targetType
| AverageValue
| 设置自动缩放 CPU 目标类型,必须是 Utilization 或 AverageValue
| ||||
hpa.cpu.targetAverageValue
| 100m
| 设置自动缩放 CPU 目标值 | ||||
hpa.cpu.targetAverageUtilization
| 设置自动缩放 CPU 目标利用率 | |||||
hpa.memory.targetType
| 设置自动缩放内存目标类型,必须是 Utilization 或 AverageValue
| |||||
hpa.memory.targetAverageValue
| 设置自动缩放内存目标值 | |||||
hpa.memory.targetAverageUtilization
| 设置自动缩放内存目标利用率 | |||||
hpa.minReplicas
| 1
| 最小副本数 | ||||
hpa.maxReplicas
| 10
| 最大副本数 | ||||
hpa.targetAverageValue
| 已弃用 设置自动缩放 CPU 目标值 | |||||
image.pullPolicy
| IfNotPresent
| 极狐GitLab 镜像拉取策略 | ||||
image.pullSecrets
| 用于镜像仓库的 Secret | |||||
image.repository
| registry.gitlab.com/gitlab-org/build/cng/gitlab-pages
| 极狐GitLab Pages 镜像仓库 | ||||
image.tag
| image 标签 | |||||
init.image.repository
| initContainer 镜像 | |||||
init.image.tag
| initContainer 镜像标签 | |||||
init.containerSecurityContext
| {}
| initContainer 容器特定 securityContext | ||||
keda.enabled
| false
| 使用 KEDA ScaledObjects 替代 HorizontalPodAutoscalers
| ||||
keda.pollingInterval
| 30
| 检查每个触发器的时间间隔 | ||||
keda.cooldownPeriod
| 300
| 最后一个触发器报告有效后,在将资源缩放回 0 之前等待的时间 | ||||
keda.minReplicaCount
| KEDA 将资源缩减到的最小副本数,默认为 hpa.minReplicas
| |||||
keda.maxReplicaCount
| KEDA 将资源扩展到的最大副本数,默认为 hpa.maxReplicas
| |||||
keda.fallback
| KEDA 后备配置,请参阅文档 | |||||
keda.hpaName
| KEDA 将创建的 HPA 资源的名称,默认为 keda-hpa-{scaled-object-name}
| |||||
keda.restoreToOriginalReplicaCount
| 指定删除 ScaledObject 后,目标资源是否应缩减至原始副本数
| |||||
keda.behavior
| 放大和缩小行为的 spec,默认为 hpa.behavior
| |||||
keda.triggers
| 用于激活目标资源扩展的触发器列表,默认为根据 hpa.cpu 和 hpa.memory 计算的触发器
| |||||
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
| 已废弃 设置明确的指标注释。替换为模板内容 | |||||
metrics.tls.enabled
| false
| 为指标端点启用 TLS | ||||
metrics.tls.secretName
| {Release.Name}-pages-metrics-tls
| 指标端点 TLS 证书和密钥的 secret | ||||
podLabels
| 补充 Pod 标签。不会用于选择器 | |||||
resources.requests.cpu
| 900m
| 极狐GitLab Pages 最小 CPU | ||||
resources.requests.memory
| 2G
| 极狐GitLab Pages 最小内存 | ||||
securityContext.fsGroup
| 1000
| 在其下启动 Pod 的 Group ID | ||||
securityContext.runAsUser
| 1000
| 在其下启动 Pod 的 User ID | ||||
securityContext.fsGroupChangePolicy
| 更改卷的所有权和权限的策略(需要 Kubernetes 1.23) | |||||
containerSecurityContext
| 覆盖用于启动容器的容器 securityContext | |||||
containerSecurityContext.runAsUser
| 1000
| 允许覆盖启动容器的特定安全上下文 | ||||
service.externalPort
| 8090
| 极狐GitLab Pages 对外暴露的端口 | ||||
service.internalPort
| 8090
| 极狐GitLab Pages 内部端口 | ||||
service.name
| gitlab-pages
| 极狐GitLab Pages 的 service 名称 | ||||
service.annotations
| 所有页面服务的注释 | |||||
service.primary.annotations
| 仅为主要服务的注释 | |||||
service.metrics.annotations
| 仅为指标服务的注释 | |||||
service.customDomains.annotations
| 仅为自定义域服务的注释 | 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 全局设置 |
authCookieSessionTimeout
| 10m
| 查看:极狐GitLab Pages 全局设置 |
配置 ingress
此部分控制极狐GitLab Pages Ingress。
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
apiVersion
| String | 在 apiVersion 字段中使用的值
| |
annotations
| String | 此字段与 Kubernetes Ingress 的标准 annotations 完全匹配
| |
configureCertmanager
| Boolean | false
| 切换 Ingress annotation cert-manager.io/issuer 和 acme.cert-manager.io/http01-edit-in-place 。通过 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 使用此 secret:
gitlab: gitlab-pages: ingress: tls: secretName: tls-star-pages-<mysecret>
-
在您的 DNS 提供商中创建一个名为
*.pages.<yourdomaindomain>
的 DNS 条目,指向您的 LoadBalancer。