我应该如何在我的生产服务器上部署 CI/CD 管道的结果

How should I deploy the result of the CI/CD pipeline on my production server

我有这个 GitLab CI/CD,它构建然后测试并将我的项目容器推送到 GitLab 容器注册成功。但是现在我想知道如何也可以自动化部署阶段。目前,我手动执行此操作,在每个成功的管道之后,我通过 SSH 连接到我的服务器并使用 运行 几个命令从 GitLab.com 容器注册表中提取最新图像,然后 运行 它们。但我也想让这一步自动化。然而,我不知道如何? 实际上,我已经看到一些从 CI/CD 管道打开 ssh 会话的示例,但感觉不够安全。所以我想知道是否有更好的方法,或者我必须实际这样做。

不是我在使用 gitlab.com 所以我的机器上没有安装 GitLab 服务器,我不能直接在它们之间共享资产

有很多方法可以实现这一点,具体取决于您的设置、其他要求、规模等。
我给你两个选择。

我。 Kubernetes

  1. 在某处创建集群(即控制平面)
  2. add your cluster to GitLab(现在 GitLab 甚至可以在 AWS 和 GCP 中为您创建集群,查看此页面)
  3. 将您的目标机器作为工作节点附加到集群
  4. 为您的应用程序创建 Kubernetes YAML 文件 \ Helm chart 并通过常规方式部署,例如kubectl apply -f ...helm install ...,或依靠 Auto DevOps 为您完成此步骤

这很复杂,但有点 "right" 做事的方式。

二.私人 GitLab 亚军

  1. 转到 设置 > CI/CD > 你的 GitLab 项目或组的运行程序
  2. 获取注册令牌
  3. 在目标机器上安装你自己的 GitLab 运行器,并使用注册令牌在 GitLab 服务器上注册它,参见 example
  4. 给跑步者一些特定的标签
  5. 在您的 .gitlab-ci.yml 文件中使用该标签,参见 documentation
  6. 然后部署过程只是 docker pull...docker run ... 的本地过程,用于您的图像

这要简单得多,但也是一种 "wrong" 方式,因为您将 CI\CD 基础架构与目标环境混合。