使用 GitLab kas
chart
kas
子 chart 提供了 GitLab 代理服务器 (KAS) 的可配置部署。
代理服务器是您与 GitLab 一起安装的组件,管理 Kubernetes 的 GitLab 代理。
此 chart 依赖于对 GitLab API 和 Gitaly 服务器的访问。 当您启用此 chart 时,将部署一个 Ingress。
为了消耗最少的资源,kas
容器使用 distroless 镜像。
部署的服务由 Ingress 公开,该 Ingress 使用 WebSocket 代理 进行通信。
此代理允许与外部组件 agentk
的长期连接。agentk
是 Kubernetes 集群端代理对应物。
访问服务的路径取决于您的 Ingress 配置。
禁用代理服务器
极狐GitLab 代理服务器 (kas
) 默认启用。
要在极狐GitLab 实例上禁用它,请将 Helm 属性 global.kas.enabled
设置为 false
。
例如:
helm upgrade --install kas --set global.kas.enabled=false
指定 Ingress
当您将 chart 的 Ingress 与默认配置一起使用时,代理服务器的服务可在子域名上访问。
例如,对于 global.hosts.domain: example.com
,代理服务器可在 kas.example.com
访问。
KAS Ingress 可以使用与 global.hosts.domain
不同的域名。
设置 global.hosts.kas.name
,例如:
global.hosts.kas.name: kas.my-other-domain.com
此示例仅使用 kas.my-other-domain.com
作为 KAS Ingress 的 host。
其余服务(包括 GitLab、Registry、MinIO 等)使用 global.hosts.domain
中指定的域名。
安装命令行选项
下表包含可以使用 --set
标志提供给 helm install
命令的所有可能的 chart 配置。
参数 | 默认值 | 说明 |
---|---|---|
annotations
| {}
| Pod annotations |
common.labels
| {}
| 应用于此 chart 创建的所有对象的补充标签。 |
extraContainers
| 包含的额外容器列表 | |
image.repository
| registry.gitlab.com/gitlab-org/cluster-integration/gitlab-agent/kas
| 镜像仓库 |
image.tag
| v13.7.0
| 镜像标签 |
hpa.behavior
| {scaleDown: {stabilizationWindowSeconds: 300 }}
| 包含放大和缩小行为的规范(需要 autoscaling/v2beta2 或更高版本)
|
hpa.customMetrics
| []
| 自定义指标包含用于计算所需副本数的规范(覆盖在 targetAverageUtilization 中配置的平均 CPU 利用率的默认使用值)
|
hpa.cpu.targetType
| AverageValue
| 设置自动缩放 CPU 目标类型,必须是 Utilization 或 AverageValue
|
hpa.targetAverageValue
| 100m
| 设置自动扩缩容目标值 |
hpa.cpu.targetAverageUtilization
| 设置自动缩放 CPU 目标利用率 | |
hpa.memory.targetType
| 设置自动缩放内存目标类型,必须是 Utilization 或 AverageValue
| |
hpa.memory.targetAverageValue
| 设置自动缩放内存目标值 | |
hpa.memory.targetAverageUtilization
| 设置自动缩放内存目标利用率 | |
hpa.minReplicas
| 最小副本数 | |
hpa.maxReplicas
| 最大副本数 | |
hpa.targetAverageValue
| 已弃用 设置自动缩放 CPU 目标值 | |
ingress.enabled
| 如果 global.kas.enabled=true 默认值为 true
| 您可以使用 kas.ingress.enabled 打开或关闭。如果没有设置,您可以选择使用 global.ingress.enabled 来达到同样的目的。
|
ingress.apiVersion
| 在 apiVersion 字段中使用的值。
| |
ingress.annotations
| {}
| Ingress annotations |
ingress.tls
| {}
| Ingress TLS 配置 |
ingress.agentPath
| /
| 代理 API 端点的 Ingress 路径 |
ingress.k8sApiPath
| /k8s-proxy
| Kubernetes API 端点的 Ingress 路径 |
metrics.enabled
| true
| 指标端点是否可用于抓取 |
metrics.port
| 8151
| 指标端点端口 |
metrics.path
| /metrics
| Metrics 端点路径。 |
metrics.serviceMonitor.enabled
| false
| 是否创建 ServiceMonitor 使 Prometheus Operator 能够管理指标抓取,请注意启用此功能会删除 prometheus.io 抓取注释
|
metrics.serviceMonitor.additionalLabels
| {}
| 要添加到 ServiceMonitor 的其它标签 |
metrics.serviceMonitor.endpointConfig
| {}
| ServiceMonitor 的附加端点配置 |
maxReplicas
| 10
| HPA maxReplicas
|
maxUnavailable
| 1
| HPA maxUnavailable
|
minReplicas
| 2
| HPA maxReplicas
|
nodeSelector
| 为这个 Deployment 的 Pod 定义一个 nodeSelector(如果存在)。
| |
serviceAccount.annotations
| {}
| Service account annotations |
podLabels
| {}
| 补充 Pod 标签。 不会用于选择器。 |
serviceLabels
| {}
| 补充 service 标签 |
common.labels
| 应用于此 chart 创建的所有对象的补充标签。 | |
redis.enabled
| true
| 允许选择 KAS 功能不使用 Redis。警告:Redis 将很快成为硬依赖项,因此该键已被弃用。 |
resources.requests.cpu
| 75m
| GitLab Exporter 最小 CPU |
resources.requests.memory
| 100M
| GitLab Exporter 最小内存 |
service.externalPort
| 8150
| 外部端口(agentk 连接) |
service.internalPort
| 8150
| 内部端口(agentk 连接) |
service.apiInternalPort
| 8153
| 内部 API 的内部端口(用于 GitLab 后端) |
service.loadBalancerIP
| nil
| 当service.type 为LoadBalancer 时的自定义负载均衡器IP
|
service.loadBalancerSourceRanges
| nil
| 当service.type 为LoadBalancer 时的自定义负载均衡器源范围列表
|
service.kubernetesApiPort
| 8154
| 用于在其上公开代理的 Kubernetes API 的外部端口 |
service.privateApiPort
| 8155
| 公开 kas 私有API的内部端口(用于kas ->kas 通信)
|
privateApi.secret
| 自动生成 | 用于对数据库进行身份验证的 secret 名称 |
privateApi.key
| 自动生成 |
privateApi.secret 中要使用的键的名称
|
global.kas.service.apiExternalPort
| 8153
| 内部 API 的外部端口(用于 GitLab 后端) |
service.type
| ClusterIP
| Service 类型 |
tolerations
| []
| 分配给 Pod 的容忍标签 |
customConfig
| {}
| 给定后,将默认的 kas 配置与这些值合并,优先考虑此处定义的值。
|
deployment.minReadySeconds
| 0
| 在 kas pod 被认为准备好之前必须经过的最小秒数。
|
deployment.strategy
| {}
| 允许配置 deployment 使用的更新策略 |
测试 kas
chart
要安装此 chart:
- 创建 Kubernetes 集群。
- 检出合并请求的工作分支。
-
从本地 chart 分支安装(或升级)极狐GitLab,默认情况下启用
kas
:helm upgrade --force --install gitlab . \ --timeout 600s \ --set global.hosts.domain=your.domain.com \ --set global.hosts.externalIP=XYZ.XYZ.XYZ.XYZ \ --set certmanager-issuer.email=your@email.com
-
使用 GDK 运行进程以配置和使用 GitLab Kubernetes 代理:(您也可以按照步骤手动配置和使用代理。)
- 从您的 GDK GitLab 仓库,移动到 QA 文件夹:
cd qa
。 -
执行以下命令,进行 QA 测试。
GITLAB_USERNAME=$ROOT_USER GITLAB_PASSWORD=$ROOT_PASSWORD GITLAB_ADMIN_USERNAME=$ROOT_USER GITLAB_ADMIN_PASSWORD=$ROOT_PASSWORD bundle exec bin/qa Test::Instance::All https://your.gitlab.domain/ -- --tag orchestrated --tag quarantine qa/specs/features/ee/api/7_configure/kubernetes/kubernetes_agent_spec.rb
您还可以自定义
agentk
版本以使用环境变量进行安装:GITLAB_AGENTK_VERSION=v13.7.1
。
- 从您的 GDK GitLab 仓库,移动到 QA 文件夹: