介绍
Kubernetes 已成为部署大型应用程序的标准。它帮助开发人员获得显著优势,并提供传统服务器托管所不具备的功能。Kubernetes 允许进行水平扩展,而无需担心基础设施的繁琐。此外,随着应用程序的增长,它还降低了获取和维护基础设施的成本。
然而,在 Kubernetes 上管理应用程序也可能很复杂,并且需要高级技能。使用 Kubernetes 和 持续集成和持续部署 流程 (CI/CD) 通过提供抽象来帮助克服这一复杂过程。 GitOps 是可以帮助实现抽象的工具之一。
在本教程中,我们将演示如何使用 Argo CD 在 Kubernetes 上持续集成和部署应用程序。 每当有任何更改推送到仓库时,它就会被部署到目标集群上。 Argo CD 还通过与整个软件开发生命周期集成来提供版本控制、配置和应用程序环境。如果您拥有适用于 Kubernetes 的包管理器,例如 Helm,或者如果您的仓库托管在 BitBucket 或 GitLab,Argo CD 也可以与所有这些平台无缝集成。
前提条件
要完成本教程,您必须拥有:
-
您机器上的 SSH 密钥。如果您的 Linux/MacOS/BSD 上没有运行一对 SSH 密钥,您可以按照我们的教程创建一对 SSH 概述 – SSH 服务器、客户端和密钥.
-
您还需要一个正在运行的 Kubernetes 集群。此外,您的机器上应该运行有 kubectl。如果您没有 Kubernetes 集群,可以参考 如何在 Ubuntu 18.04 上使用 Kubeadm 创建 Kubernetes 集群.
-
您应该对 Kubernetes 概念有基本的了解。如果您想进一步熟悉 Kubernetes,可以参考 了解 Kubernetes 工具的基础知识.
步骤 1 – 安装 Argo CD
在安装 Argo CD 之前,我们需要有一个运行着 kubectl 的 Kubernetes 环境。您可以通过运行以下命令来进行测试:
|
1 |
kubectl get nodes |

您应该会看到至少一个 Kubernetes 节点处于 Ready 状态。如果没有可用的节点,您应该重新检查您的 Kubernetes 安装。接下来,我们将为我们的 Kubernetes 安装创建一个单独的命名空间。我们将其命名为 argocd。我们将在此命名空间中保留与 Argo CD 相关的服务:
|
1 |
kubectl create namespace argocd |
之后,通过运行以下命令在上述新建的命名空间中安装 Argo CD 脚本:
|
1 |
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml |

要检查 Kubernetes pod 的状态,请运行以下命令:
|
1 |
watch kubectl get pods -n argocd |
您将得到如下所示的结果:

至此,您已成功完成 Argo CD 的安装。要退出 watch 界面,您可以按 Ctrl + C。要访问此 Kubernetes 集群中的服务,我们需要进行端口转发。我们将在下一步中向您展示如何操作。
步骤 2 – 转发端口以访问 Argo CD
Kubernetes 可以将您的应用程序部署到它选择的任何端口。因此,有必要转发 Kubernetes 应用程序的端口,以便从本地机器访问它们。Argo CD 暴露了一个名为 argocd-server 的服务,该服务使用端口 443。端口 443 是 HTTPS 和 HTTP 服务的默认端口。您可以将 Kubernetes 端口转发到您选择的端口。在下面的示例中,我们将端口转发到了 8080。要转发端口,请在终端中运行以下命令:
|
1 |
kubectl port-forward svc/argocd-server -n argocd 8080:443 |
一旦您转发了端口,它将被阻塞,以便其他服务无法访问它。为了获得不间断的访问,始终建议在新终端中运行上述命令。完成后,您可以按 Ctrl+C 以退出端口转发过程。
转发端口后,您可以通过导航到 localhost:8080 来访问 Argo CD。系统将提示您输入凭据,您可以在下一步中从命令行获取这些凭据。
Step 3 – 从命令行管理 Argo CD
我们必须安装 Argo CD 命令行来管理 Argo CD 安装。推荐的 Argo CD 安装方式是使用包管理器,例如 Homebrew。Homebrew 是一款流行的包管理器工具,用于在 macOS 和 Linux 上进行安装。您可以使用以下命令安装 Homebrew:
|
1 |
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
您的机器上应该已经安装了 brew。可能会出现登录密码提示。您可以通过运行以下命令来运行它:
|
1 |
brew install argocd |
在上述安装之后,您将获得 argocd 命令。我们需要使用 kubectl 命令来检索管理员密码。它是在安装过程中自动生成的。以下是获取它的命令:
|
1 |
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo |
现在您已经安装了 Argo CD,您可以使用下面的 argocd login 命令进行登录:
|
1 |
argocd login localhost:8080 |
使用命令行部署应用程序时,您需要进行登录:

您可能会收到安全警告。如果是这样,请按 y 继续。许多用户可能希望在登录后更改密码。如果是这样,请运行 argocd account update-password 命令来更改密码。我们现在拥有了一个功能齐全的 Argo CD 配置。
最后,我们将使用已安装的 Argo CD 在 Kubernetes 集群上部署一个应用程序。
Step 4 – 利用多个集群
在继续设置应用程序之前,有必要知道您要将其部署到的目标机器。在许多场景中,Argo CD 和部署的应用程序可以运行在同一个集群上。这是 Argo CD 的默认行为,但并不是限制。如果您想在其他目标机器上部署应用程序,请先在您的机器中运行 kubectl config :
|
1 |
kubectl config get-contexts -o name |
假设您有两个集群: test-deploy-cluster 和 test-target-cluster。现在,如果 test-deploy-cluster 是您的 Argo CD 所在的位置,而您想部署在 test-target-cluster 上,那么请运行以下命令:
|
1 |
argocd cluster add target-k8s |
上述命令将在 Argo CD 上添加其他集群的详细信息。它还将允许在 Argo CD 目标集群上部署服务。
Step 5 – 部署示例应用程序
终于到了在 Kubernetes 集群上部署应用程序的时候了。我们将使用 Argo CD 提供的示例应用程序。我们还将利用 helm-guestbook ,它是使用 Helm chart 构建的。
要安装应用程序,我们将使用 argo app create 命令。我们将指定 Git 仓库, helm-guestbook ,并传递您的默认目标和命名空间:
|
1 |
argocd app create helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-server https://kubernetes.default.svc --dest-namespace default |
您可以通过运行以下命令来检查新创建的应用程序的状态: argocd app get:
|
1 |
argocd app get helm-guestbook |
如果你看到 不要感到惊讶OutOfSync 状态。到目前为止,我们已经下载了 Helm chart 并为 Argo CD 创建了它的入口点。然而,在 Kubernetes 方面,还没有为其分配任何资源。为了 同步 此应用程序,请运行以下命令:
|
1 |
argocd app sync helm-guestbook |

在使用 GitOps 时,始终需要将应用程序与上游进行同步。因此,每当仓库中发生更改时,Argo CD 都会部署该应用程序。
我们已经使用 Argo CD 命令行部署了该应用程序。您也可以使用 Argo CD Web 界面达到相同的效果。如果您想检查应用程序的状态和运行情况,Web 界面会非常有用。要打开 Web 界面,请打开 localhost:8080:

为了验证安装,我们将在浏览器中打开该应用程序。我们的 helm-guestbook 运行在端口 80. 如果您有任何其他应用程序正在使用端口 80,您可以进行端口转发,以免其他应用程序受到干扰:
|
1 |
kubectl port-forward svc/helm-guestbook 9090:80 |
最后,在您的 Web 浏览器上打开 URL localhost:9090 以查看您的应用程序正在运行:

现在,如果开发人员向 GitHub 远程仓库推送任何代码,ArgoCD 将捕获并反映该更改。您的 ArgoCD 部署将相应地进行更新,从而提供持续可用性。
结论
在本教程中,我们向您展示了如何使用 Argo CD 在 Kubernetes 上安装和部署应用程序。确保您在 Kubernetes 上的部署是可维护的非常重要。GitOps 可以为您提供很大帮助。
Kubernetes 现在是云上部署的标准。CloudSigma 有一些非常棒的 Kubernetes 教程 ,您接下来可以查看:
- Kubernetes DNS 服务:初学者指南
- 使用 Helm 在 Kubernetes 上使用 MySQL 设置 WordPress
- 在 Kubernetes 上安装 Jenkins
- 探索 CloudSigma PaaS:如何通过公网 IP 访问 Kubernetes 应用程序
祝您计算愉快!
评论
暂无评论。发表第一条评论吧。