使用极狐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 目标类型,必须是 UtilizationAverageValue        
hpa.cpu.targetAverageValue 100m 设置自动缩放 CPU 目标值        
hpa.cpu.targetAverageUtilization   设置自动缩放 CPU 目标利用率        
hpa.memory.targetType   设置自动缩放内存目标类型,必须是 UtilizationAverageValue        
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.cpuhpa.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.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 全局设置
authCookieSessionTimeout 10m 查看:极狐GitLab Pages 全局设置

配置 ingress

此部分控制极狐GitLab Pages Ingress。

名称 类型 默认值 说明
apiVersion String   apiVersion 字段中使用的值
annotations String   此字段与 Kubernetes Ingress 的标准 annotations 完全匹配
configureCertmanager Boolean false 切换 Ingress annotation cert-manager.io/issueracme.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 功能,您必须:

  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 使用此 secret:

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