使用 GitLab-Kas chart
kas
子 chart 提供了 Kubernetes Agent Server 的可配置部署,这是 GitLab Kubernetes Agent 实现的服务器端组件。
要求
此 chart 依赖于对 GitLab API 和 Gitaly 服务器的访问。如果启用此 chart,则会部署 Ingress。
设计选择
chart 中的 kas
容器使用 distroless 镜像以最小化资源消耗。部署的服务由 Ingress 公开,使用 WebSocket 代理允许与外部组件 agentk
(Kubernetes 集群端对应代理) 的长期连接通信。
访问服务的路由将取决于您的 Ingress 配置。
点击连接了解有关 GitLab Kubernetes 代理架构的更多信息。
配置
Enable
kas
部署默认关闭。 要在您的 GitLab 服务器上启用它,请使用 Helm 属性 global.kas.enabled
,例如:helm install --set global.kas.enabled=true
。
Ingress
当使用 chart Ingress 的默认配置时,可以通过子域访问 KAS 服务。例如,如果您有 global.hosts.domain:example.com
,那么默认情况下 KAS 可以通过 kas.example.com
访问。
KAS Ingress 可以通过设置 global.hosts.kas.name
使用与全局设置 global.hosts.domain
不同的域名。例如,设置 global.hosts.kas.name=kas.my-other-domain.com
会将 kas.my-other-domain.com
设置为单独 KAS Ingress 的主机,而其余的服务(包括 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.targetAverageValue
| 100m
| 设置自动缩放目标值 (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
| 切换 Prometheus metrics exporter |
metrics.port
| 8151
| 用于 metrics exporter 的端口号 |
metrics.path
| /metrics
| 用于 metrics exporter 的路径 |
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.strategy
| {}
| 允许配置 deployment 使用的更新策略 |
开发(如何手动 QA)
要安装此 chart:
- 创建 Kubernetes 集群。
- 检出合并请求的工作分支。
-
使用
--set global.kas.enabled=true
从本地 chart 分支安装(或升级)启用了kas
的GitLab,例如: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 \ --set global.kas.enabled=true
-
使用 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 文件夹: