七叶笔记 » golang编程 » 使用 ArgoCD 和 CircleCI 自动部署到 k8s 集群

使用 ArgoCD 和 CircleCI 自动部署到 k8s 集群

Hya 技术伙伴们决定稍微了解一下 Kubernetes ,并使用 ArgoCD 和 Circle CI 自动部署到 Kubernetes 集群。对于这篇文章,我们将重点关注:

  • 什么是 ArgoCD?
  • GitOps
  • 什么是 Kubernetes(k8s)?
  • 什么是CircleCI?
  • 使用 docker 编写示例代码和容器化
  • 使用自动部署到 DockerHub 的示例 Golang 代码设置 Circle CI
  • 使用 Kind 在本地设置 Ar Go CD 以启动集群
  • 使用 ArgoCD 部署到 k8s 集群

什么是 ArgoCD

GitOps

从字面上看,GitOps 是一个概念,其中持续部署的实现是针对云原生应用程序完成的。GitOps 于 2017 年率先推出,作为一种进行 Kubernetes 集群管理和应用程序交付的方式,其中 Git 被用作声明性基础设施和应用程序的单一事实来源。

Kubernetes

我将 Kubernetes (k8s) 称为 类固醇上的容器仅仅是因为它们能够支持多个容器,这些容器可以组合到一个 pod 中。Kubernetes 是一种编排工具和开源系统,用于自动化容器化应用程序的部署、扩展和管理。

圈子CI

CircleCI 是一个 持续集成 和交付平台,使开发团队能够快速发布代码并自动化构建、测试和部署过程。借助缓存、docker 层缓存、资源类和其他功能,CircleCI 可以有效地执行非常复杂的管道。

虽然这篇文章的重点是持续集成(CI)部分,但代码流程如下:

  1. 开发人员将他们的代码提交到 git repo
  2. Circle CI 贯穿 CI 工作流程步骤(linting、测试、安全审计等)。
  3. 生成一个 docker 容器并将其推送到容器注册表(ECR, docker hub )。

ci_flow_docker

步骤1

在本教程中,我们使用了 Golang,我在这里写了关于部署 Golang 应用程序的文章。我们将为显示 Hello new User 1 的应用程序构建和编写测试,示例代码可以在存储库的这个分支中找到。您可以使用以下命令在本地测试您的 Go 应用程序:

在本地浏览器上,导航到

  • 您现在可以继续将代码提交到所需的存储库。下一步是容器化应用程序。

第2步

下一步是将我们的应用程序 docker 化,因为我们会将应用程序发布到 dockerhub 或您选择的任何 集线器 来托管您的图像。我在这个分支和README中编写了一个简单的 docker 文件,您还可以看到我是如何构建映像的。最后一步是使用 CircleCI 为代码创建持续集成 (CI)。

第 3 步

设置 CircleCI 非常直接,您需要做的就是使用您的邮件、 Github 或任何存储库帐户设置一个帐户,然后将您的存储库与 CircleCI 同步。与每个 CI 工具一样,您需要创建配置文件( YAML 格式)并将其保存在名为.circleci/config.yml的文件夹中。下面的代码是我们之前编写的示例代码的配置文件。

circle_ci_config

代码下载了运行应用程序和构建应用程序所需的必要模块(对于我们的用例来说不是必需的)。

更详细地解释这些步骤

  • 版本 表示您正在使用的 CircleCI 平台的版本。2.1 是最新版本。
  • 工作级别 包含一组子项,代表您的工作。您可以为这些作业指定名称,例如 build、test 和 deploy。
  • Lint 是一项对 golang 代码进行格式化的工作,它还审查代码,基本上消除了空白和缩进,并且还捕获了您的代码在技术上有效但可能无法按预期工作的地方。
  • 测试 是一项工作,这里发生的是我正在使用 docker 映像来运行 Go 应用程序,这些步骤指定我要检查我的代码并针对我们之前构建的应用程序的测试运行 go test命令。
  • Build Job 还使用 docker 镜像下载必要的模块并构建应用程序,我将构建的输出都保存到工作区。
  • 发布作业 有很多事情要做,它还使用 docker 映像,签出代码并设置远程 docker,因为我将 docker 映像发布到我的 docker hub 帐户。
  • 我附上了一个临时工作区。使用允许您运行多个命令的运行标志,我将构建从构建作业复制到当前路径,然后构建并推送 docker 映像。
  • 我正在使用环境变量传递 DOCKER_PASSWORD DOCKER_USERNAME 并标记 CircleCI 提供了一个环境变量 CIRCLE_BUILD_NUM 我用来标记图像。要添加 DOCKER_PASSWORD DOCKER_USERNAME ,您可以按照以下步骤操作:

点击仪表板

在屏幕的最右侧选择您的管道

转到项目设置-> 环境变量。添加 DOCKER_PASSWORD、DOCKER_USERNAME 和 GITHUB_PERSONAL_TOKEN。

工作流 定义了作业的流程,如您所见,测试作业需要 Lint 作业,构建作业需要测试作业,发布作业需要构建作业

定义配置后,您可以继续将代码推送到您的存储库并检查您的 CircleCI 管道以查看正在进行的部署。

circleci_pipeline

回顾一下所涵盖的内容

  1. 了解 ArgoCd、GitOps、Kubernetes 和 CircleCI。
  2. 用测试写了一个简单的 Golang Web 服务器并在本地运行代码
  3. 写了一个CircleCI配置文件
  4. CircleCI 运行 linting、测试并构建应用程序
  5. 然后管道将应用程序容器化并将其发布到 DockerHub

感谢您阅读帖子,您也可以删除任何评论/建议。ciao

相关文章