简介

ArgoCD 是最流行的开源 GitOps 工具之一。 GitOps 是使用基础设施作为代码文件的自动化基础设施部署过程。

由于我对 GitOps 世界完全陌生,所以我想开始使用它。每次我开始学习新东西时,我都有记录它的习惯。您也可以查看我的Raspberry Pi NAS 博客文章。

所以这是我开始使用 ArgoCD 的版本。

安装

ArgoCD的安装相当简单,我们先创建一个namespace并运行命令获取所需资源。

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

进入全屏模式 退出全屏模式

然后我们安装 ArgoCD CLI 工具。有多种安装方法,我使用以下代码进行安装。

sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo chmod +x /usr/local/bin/argocd

进入全屏模式 退出全屏模式

要检查是否安装成功,可以使用version命令

argocd version

argocd: v2.2.5+8f981cc
  BuildDate: 2022-02-05T01:33:25Z
  GitCommit: 8f981ccfcf942a9eb00bc466649f8499ba0455f5
  GitTreeState: clean
  GoVersion: go1.16.11
  Compiler: gc
  Platform: linux/amd64
FATA[0000] Argo CD server address unspecified   

进入全屏模式 退出全屏模式

访问API服务器

ArgoCD 提供了多种方式来配置对 API 服务器的访问,我使用了 port forwarding 的_easier & quicker_ 之一

在新的终端窗口中运行以下命令来端口转发 kubectl 服务

kubectl port-forward svc/argocd-server -n argocd 8080:443

进入全屏模式 退出全屏模式

打开您的网络浏览器并导航到https://127.0.0.1:8080以访问 ArgoCD UI

*ArgoCD 生成一个随机密码作为秘密,可以使用以下方式访问

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

进入全屏模式 退出全屏模式

使用默认凭据登录 UI 仪表板:

  • 用户名:admin

  • 密码:在上述步骤中获得

[ArgoCD UI](https://res.cloudinary.com/practicaldev/image/fetch/s--9fBsMVkR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/0y6hdpdmtk6czewx1438.png)

默认情况下,它将在 Applications 页面开始,该页面_显然_为空。在下一节中,我们将部署一个简单的应用程序。

部署应用

ArgoCD 提供了一个简单的应用程序来开始使用。您可以参考留言板应用程序repo 了解更多信息。

可以使用两种方式部署应用程序:

  • 通过 CLI

  • 通过仪表板

为了将本教程保持在 5 分钟以内,我将使用 CLI 方法安装应用程序,但是您可以参考本文档以了解如何通过仪表板进行安装。

通过 CLI

运行以下命令来安装应用程序

argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default

application 'guestbook' created

进入全屏模式 退出全屏模式

安装应用程序后,您可以通过运行get命令检查状态

argocd app get guestbook

Name:               guestbook
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          default
URL:                https://127.0.0.1:8080/applications/guestbook
Repo:               https://github.com/argoproj/argocd-example-apps.git
Target:             
Path:               guestbook
SyncWindow:         Sync Allowed
Sync Policy:        <none>
Sync Status:        OutOfSync from  (53e28ff)
Health Status:      Missing

GROUP  KIND        NAMESPACE  NAME          STATUS     HEALTH   HOOK  MESSAGE
       Service     default    guestbook-ui  OutOfSync  Missing        
apps   Deployment  default    guestbook-ui  OutOfSync  Missing    

进入全屏模式 退出全屏模式

您还可以在 ArgoCD UI 上验证应用程序的状态

[ArgoCD UI 上的留言簿应用程序状态](https://res.cloudinary.com/practicaldev/image/fetch/s--8rrVeUGg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.amazonaws.com/uploads/articles/830ivw62faoz7whk16wq.png)

仔细观察,Sync Status就是OutOfSync。这是因为应用刚刚创建,还没有部署(没有创建Kubernetes资源)

sync应用程序,请运行以下命令

argocd app sync guestbook

进入全屏模式 退出全屏模式

如果一切顺利,您将看到如下输出

TIMESTAMP                  GROUP        KIND   NAMESPACE                  NAME    STATUS    HEALTH        HOOK  MESSAGE
2022-03-04T10:54:48+05:30            Service     default          guestbook-ui  OutOfSync  Missing              
2022-03-04T10:54:48+05:30   apps  Deployment     default          guestbook-ui  OutOfSync  Missing              
2022-03-04T10:54:48+05:30            Service     default          guestbook-ui  OutOfSync  Missing              service/guestbook-ui created
2022-03-04T10:54:48+05:30   apps  Deployment     default          guestbook-ui  OutOfSync  Missing              deployment.apps/guestbook-ui created

Name:               guestbook
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          default
URL:                https://127.0.0.1:8080/applications/guestbook
Repo:               https://github.com/argoproj/argocd-example-apps.git
Target:             
Path:               guestbook
SyncWindow:         Sync Allowed
Sync Policy:        <none>
Sync Status:        Synced to  (53e28ff)
Health Status:      Progressing

Operation:          Sync
Sync Revision:      53e28ff20cc530b9ada2173fbbd64d48338583ba
Phase:              Succeeded
Start:              2022-03-04 10:54:48 +0530 IST
Finished:           2022-03-04 10:54:48 +0530 IST
Duration:           0s
Message:            successfully synced (all tasks run)

GROUP  KIND        NAMESPACE  NAME          STATUS  HEALTH       HOOK  MESSAGE
       Service     default    guestbook-ui  Synced  Healthy            service/guestbook-ui created
apps   Deployment  default    guestbook-ui  Synced  Progressing        deployment.apps/guestbook-ui created

进入全屏模式 退出全屏模式

上述命令使用来自 repo 的清单在内部运行kubectl apply命令。

在 UI 上,您将能够看到相同的状态

[应用同步状态成功](https://res.cloudinary.com/practicaldev/image/fetch/s--fQ-6YEiA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.amazonaws.com/uploads/articles/pg47g83ns6l6og86d1g9.png)

恭喜!我们已经使用 ArgoCD 成功部署了我们的第一个应用程序。 我很确定,不到 5 分钟!

像 ArgoCD 这样的应用程序的目标是确保current statedesired state保持不变。要查看实际情况,请从 UI 中删除 guestbook-ui 服务。您会立即看到syncstatusOutOfSync,然后您可以单击同步按钮,很快您将看到服务将被重新创建。

以上就是我的 ArgoCD 简短快速入门指南。请继续关注我了解更多信息并添加更多对您有帮助的帖子:)


如果您在 Twitter 上,请联系:@TheTechMaharaj

我是新来的,但已经在我的博客Socialmaharaj.com上写了十多年的博客,你也可以去那里看看。

点击阅读全文
Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐