使用极狐GitLab 连接 Kubernetes 集群

History
    • 在极狐GitLab 15.10 中,Flux 作为 GitOps 解决方案被推荐。

你可以将你的 Kubernetes 集群与极狐GitLab 连接,以便部署、管理和监控你的云原生解决方案。

要将 Kubernetes 集群连接到极狐GitLab,你必须首先在集群中安装一个代理

代理在集群中运行,你可以使用它来:

  • 与处于防火墙或 NAT 后面的集群进行通信。
  • 实时访问集群中的 API 端点。
  • 推送有关集群中发生的事件的信息。
  • 启用 Kubernetes 对象的缓存,这些对象会以非常低的延迟保持最新。

你必须为每个你想连接到极狐GitLab 的集群部署一个单独的代理。代理设计为具有强大的多租户支持。为了简化维护和运营,你应该每个集群仅运行一个代理。

代理始终在极狐GitLab 项目中注册。代理注册和安装后,代理连接到集群可以与其他项目、群组和用户共享。这种方法意味着你可以直接从极狐GitLab 管理和配置你的代理实例,并且你可以将单个安装扩展到多个租户。

接收代理#

  • Tier: 旗舰版
  • Offering: 私有化部署
History
    • 引入于极狐GitLab 17.4。

接收代理允许极狐GitLab 集成到无法建立网络连接到极狐GitLab 实例的 Kubernetes 集群,但可以由极狐GitLab 连接。例如,当:

  1. 极狐GitLab 在私有网络或防火墙后运行,并且只能通过 VPN 访问。
  2. Kubernetes 集群由云提供商托管,但暴露在互联网上或可以从私有网络访问。

当启用此功能时,极狐GitLab 使用提供的 URL 连接到代理。你可以同时使用代理和接收代理。

极狐GitLab 功能支持的 Kubernetes 版本#

极狐GitLab 支持以下 Kubernetes 版本。如果你想在 Kubernetes 集群中运行极狐GitLab,你可能需要不同版本的 Kubernetes:

你可以随时将你的 Kubernetes 版本升级到支持的版本:

  • 1.31(支持在极狐GitLab 版本 18.7 发布或当 1.34 成为支持版本时结束)
  • 1.30(支持在极狐GitLab 版本 18.2 发布或当 1.33 成为支持版本时结束)
  • 1.29(支持在极狐GitLab 版本 17.10 发布或当 1.32 成为支持版本时结束)

极狐GitLab 旨在支持新的小版本的 Kubernetes 在初次发布后三个月内。极狐GitLab 在任何时候至少支持三个生产就绪的 Kubernetes 小版本。

当 Kubernetes 的新版本发布时,我们将:

  • 在大约四周内更新此页面,包含我们早期的烟雾测试结果。
  • 如果我们预计支持新版本的发布有延迟,我们将在大约八周内更新此页面,包含预计的极狐GitLab 支持版本。

安装代理时,请使用与你的 Kubernetes 版本兼容的 Helm 版本。其他版本的 Helm 可能无法工作。有关兼容版本的列表,请参阅 Helm 版本支持政策

当我们放弃支持仅支持已弃用 API 的 Kubernetes 版本时,可以从极狐GitLab 代码库中移除对已弃用 API 的支持。

某些极狐GitLab 功能可能在此处未列出的版本上工作。

Kubernetes 部署工作流程#

你可以从两种主要工作流程中进行选择。推荐使用 GitOps 工作流程。

GitOps 工作流程#

极狐GitLab 推荐使用 Flux for GitOps。要开始使用,请参阅 教程:设置 Flux for GitOps

极狐GitLab CI/CD 工作流程#

CI/CD 工作流程中,你配置极狐GitLab CI/CD 使用 Kubernetes API 查询和更新你的集群。

此工作流程被认为是 推送型 的,因为极狐GitLab 从极狐GitLab CI/CD 向你的集群推送请求。

使用此工作流程:

  • 当你有流水线驱动的流程时。
  • 当你需要迁移到代理,但 GitOps 工作流程不支持你的用例时。

此工作流程具有较弱的安全模型。你不应该在生产部署中使用 CI/CD 工作流程。

代理连接技术细节#

代理打开一个双向通道到 KAS 用于通信。此通道用于代理和 KAS 之间的所有通信:

  • 每个代理可以保持最多 500 个逻辑 gRPC 流,包括活动和空闲流。
  • gRPC 流使用的 TCP 连接数量由 gRPC 本身决定。
  • 每个连接的最大生命周期为两小时,宽限期为一小时。
    • 在 KAS 前面的代理可能会影响连接的最大生命周期。在 JihuLab.com 上,这是两小时。宽限期是最大生命周期的 50%。

Kubernetes 集成术语表#

此术语表提供了与极狐GitLab Kubernetes 集成相关术语的定义。

术语定义范围
极狐GitLab Kubernetes 代理整体产品,包括相关功能和基础组件 agentkkas极狐GitLab,Kubernetes,Flux
agentk集群端组件,维护与极狐GitLab 的安全连接,用于 Kubernetes 管理和部署自动化。极狐GitLab
极狐GitLab Kubernetes 代理服务器 (kas)极狐GitLab 的极狐GitLab 端组件,处理 Kubernetes 代理集成的操作和逻辑。管理极狐GitLab 和 Kubernetes 集群之间的连接和通信。极狐GitLab
拉取型部署一种部署方法,其中 Flux 检查 Git 存储库中的更改并自动将这些更改应用到集群。极狐GitLab,Kubernetes
推送型部署一种部署方法,其中更新从极狐GitLab CI/CD 流水线发送到 Kubernetes 集群。极狐GitLab
Flux一个开源 GitOps 工具,与代理集成用于拉取型部署。GitOps,Kubernetes
GitOps一套实践,涉及使用 Git 进行版本控制和协作以管理和自动化云和 Kubernetes 资源。DevOps,Kubernetes
Kubernetes 命名空间Kubernetes 集群中的逻辑分区,用于在多个用户或环境之间划分集群资源。Kubernetes