自建GitLab环境中GitLab Runner与Agent是否需同时部署?
GitLab Runner与Agent的配合必要性说明
是的,你确实需要同时使用GitLab Runner和GitLab Agent,二者在CI/CD流程中承担完全不同的职责,缺一不可:
核心角色差异
- GitLab Runner:是CI/CD流水线的任务执行器,负责完成代码拉取、构建、测试、镜像打包等前置任务。没有Runner,你的流水线会一直处于等待状态——因为没有实体资源来运行定义好的Job,这就是你遇到部署阶段卡住的直接原因。
- GitLab Agent:核心作用是打通GitLab与K8s集群的内部通信,主打GitOps模式下的集群资源同步与管理。它能监听Git仓库中的K8s配置变更,自动将最新配置同步到集群,但本身不具备执行CI流水线Job的能力。
为什么不能只用其中一个?
- 仅用Runner:虽然可以通过Runner挂载kubeconfig直接部署到K8s,但这种"推送式"部署存在权限管理复杂、安全风险高的问题,也无法利用Agent提供的GitOps原生能力(比如实时集群状态反馈、自动配置同步)。
- 仅用Agent:Agent无法执行构建、测试等流水线前置任务,你的CI流程根本无法推进到部署环节,自然完成不了完整的CI/CD闭环。
典型配合流程
- Runner执行构建Job:拉取代码、编译、运行测试用例、构建镜像并推送到镜像仓库。
- Runner执行配置更新Job:修改Git仓库中的K8s资源配置文件(比如替换镜像Tag为刚构建的版本)并提交推送。
- GitLab Agent监听Git仓库的配置变更,自动将最新资源配置同步到K8s集群,完成应用部署。
内容的提问来源于stack exchange,提问作者Dex
相关产品推荐
相关产品推荐

