返回博客

使用 Argo CD 和 GitOps 在 Kubernetes 上部署应用程序

使用 Argo CD 和 GitOps 在 Kubernetes 上部署应用程序

介绍

Kubernetes 已成为部署大型应用程序的标准。它帮助开发人员获得显著优势,并提供传统服务器托管所不具备的功能。Kubernetes 允许进行水平扩展,而无需担心基础设施的繁琐。此外,随着应用程序的增长,它还降低了获取和维护基础设施的成本。

然而,在 Kubernetes 上管理应用程序也可能很复杂,并且需要高级技能。使用 Kubernetes 和 持续集成和持续部署 流程 (CI/CD) 通过提供抽象来帮助克服这一复杂过程。 GitOps 是可以帮助实现抽象的工具之一。

在本教程中,我们将演示如何使用 Argo CD 在 Kubernetes 上持续集成和部署应用程序。 每当有任何更改推送到仓库时,它就会被部署到目标集群上。 Argo CD 还通过与整个软件开发生命周期集成来提供版本控制、配置和应用程序环境。如果您拥有适用于 Kubernetes 的包管理器,例如 Helm,或者如果您的仓库托管在 BitBucketGitLab,Argo CD 也可以与所有这些平台无缝集成。

前提条件

要完成本教程,您必须拥有:

步骤 1 – 安装 Argo CD

在安装 Argo CD 之前,我们需要有一个运行着 kubectl 的 Kubernetes 环境。您可以通过运行以下命令来进行测试:

Deploying Applications on Kubernetes Using Argo CD and GitOps Get Nodes

您应该会看到至少一个 Kubernetes 节点处于 Ready 状态。如果没有可用的节点,您应该重新检查您的 Kubernetes 安装。接下来,我们将为我们的 Kubernetes 安装创建一个单独的命名空间。我们将其命名为 argocd。我们将在此命名空间中保留与 Argo CD 相关的服务:

之后,通过运行以下命令在上述新建的命名空间中安装 Argo CD 脚本:

Deploying Applications on Kubernetes Using Argo CD and GitOps Install ArgoCD

要检查 Kubernetes pod 的状态,请运行以下命令:

您将得到如下所示的结果:

Deploying Applications on Kubernetes Using Argo CD and GitOps Get Pods

至此,您已成功完成 Argo CD 的安装。要退出 watch 界面,您可以按 Ctrl + C。要访问此 Kubernetes 集群中的服务,我们需要进行端口转发。我们将在下一步中向您展示如何操作。

步骤 2 – 转发端口以访问 Argo CD

Kubernetes 可以将您的应用程序部署到它选择的任何端口。因此,有必要转发 Kubernetes 应用程序的端口,以便从本地机器访问它们。Argo CD 暴露了一个名为 argocd-server 的服务,该服务使用端口 443。端口 443 是 HTTPS 和 HTTP 服务的默认端口。您可以将 Kubernetes 端口转发到您选择的端口。在下面的示例中,我们将端口转发到了 8080。要转发端口,请在终端中运行以下命令:

一旦您转发了端口,它将被阻塞,以便其他服务无法访问它。为了获得不间断的访问,始终建议在新终端中运行上述命令。完成后,您可以按 Ctrl+C 以退出端口转发过程。

转发端口后,您可以通过导航到 localhost:8080 来访问 Argo CD。系统将提示您输入凭据,您可以在下一步中从命令行获取这些凭据。

Step 3 – 从命令行管理 Argo CD

我们必须安装 Argo CD 命令行来管理 Argo CD 安装。推荐的 Argo CD 安装方式是使用包管理器,例如 Homebrew。Homebrew 是一款流行的包管理器工具,用于在 macOS 和 Linux 上进行安装。您可以使用以下命令安装 Homebrew:

您的机器上应该已经安装了 brew。可能会出现登录密码提示。您可以通过运行以下命令来运行它:

在上述安装之后,您将获得 argocd 命令。我们需要使用 kubectl 命令来检索管理员密码。它是在安装过程中自动生成的。以下是获取它的命令:

现在您已经安装了 Argo CD,您可以使用下面的 argocd login 命令进行登录:

使用命令行部署应用程序时,您需要进行登录:

Applications

您可能会收到安全警告。如果是这样,请按 y 继续。许多用户可能希望在登录后更改密码。如果是这样,请运行 argocd account update-password 命令来更改密码。我们现在拥有了一个功能齐全的 Argo CD 配置。

最后,我们将使用已安装的 Argo CD 在 Kubernetes 集群上部署一个应用程序。

Step 4 – 利用多个集群

在继续设置应用程序之前,有必要知道您要将其部署到的目标机器。在许多场景中,Argo CD 和部署的应用程序可以运行在同一个集群上。这是 Argo CD 的默认行为,但并不是限制。如果您想在其他目标机器上部署应用程序,请先在您的机器中运行 kubectl config :

假设您有两个集群: test-deploy-clustertest-target-cluster。现在,如果 test-deploy-cluster 是您的 Argo CD 所在的位置,而您想部署在 test-target-cluster 上,那么请运行以下命令:

上述命令将在 Argo CD 上添加其他集群的详细信息。它还将允许在 Argo CD 目标集群上部署服务。

Step 5 – 部署示例应用程序

终于到了在 Kubernetes 集群上部署应用程序的时候了。我们将使用 Argo CD 提供的示例应用程序。我们还将利用 helm-guestbook ,它是使用 Helm chart 构建的。

要安装应用程序,我们将使用 argo app create 命令。我们将指定 Git 仓库, helm-guestbook ,并传递您的默认目标和命名空间:

您可以通过运行以下命令来检查新创建的应用程序的状态: argocd app get:

如果你看到 不要感到惊讶OutOfSync 状态。到目前为止,我们已经下载了 Helm chart 并为 Argo CD 创建了它的入口点。然而,在 Kubernetes 方面,还没有为其分配任何资源。为了 同步 此应用程序,请运行以下命令:

Deploying Applications on Kubernetes Using Argo CD and GitOps App Sync

在使用 GitOps 时,始终需要将应用程序与上游进行同步。因此,每当仓库中发生更改时,Argo CD 都会部署该应用程序。

我们已经使用 Argo CD 命令行部署了该应用程序。您也可以使用 Argo CD Web 界面达到相同的效果。如果您想检查应用程序的状态和运行情况,Web 界面会非常有用。要打开 Web 界面,请打开 localhost:8080:

Deploying Applications on Kubernetes Using Argo CD and GitOps Application UI

为了验证安装,我们将在浏览器中打开该应用程序。我们的 helm-guestbook 运行在端口 80. 如果您有任何其他应用程序正在使用端口 80,您可以进行端口转发,以免其他应用程序受到干扰:

最后,在您的 Web 浏览器上打开 URL localhost:9090 以查看您的应用程序正在运行:

 Guestbook UI

现在,如果开发人员向 GitHub 远程仓库推送任何代码,ArgoCD 将捕获并反映该更改。您的 ArgoCD 部署将相应地进行更新,从而提供持续可用性。

结论

在本教程中,我们向您展示了如何使用 Argo CD 在 Kubernetes 上安装和部署应用程序。确保您在 Kubernetes 上的部署是可维护的非常重要。GitOps 可以为您提供很大帮助。

Kubernetes 现在是云上部署的标准。CloudSigma 有一些非常棒的 Kubernetes 教程 ,您接下来可以查看:

祝您计算愉快!

author

Preslav Dobrev

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。