理解和应用持续部署-argo-cd

Argo-CD是一个用于Kubernetes的声明式、GitOps连续交付工具,确保应用状态与Git存储的目标状态一致。通过自动化部署和生命周期管理,它能监测应用状态,当状态偏离时进行同步。在实际操作中,argo-cd能够检测并回滚生产环境的误操作,例如当部署的image版本错误时,可以通过手动或自动sync恢复到git定义的状态。此外,它支持通过调整replicas数量实现水平扩展,并自动同步更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Argo-CD是Kubernetes的一款声明式、GitOps连续交付工具。argo-cd的优势在于,应用程序定义、配置和环境都是声明性的,并受版本控制;应用程序部署和生命周期管理都是自动化的。
argo-cd被实现为kubernetes控制器,该控制器连续监控正在运行的应用,并将当前的活动状态和所需的目标状态(在git存储中指定)进行比较。当活动状态偏离目标状态且已经部署的应用被标记为OutofSync.另外,argo-cd报告可视化差异,同时提供了自动或手动两种方式将实时状态同步到所需的目标状态的功能。且,在Git仓库中对所需目标状态所做的任何修改都可以自动应用并反应到指定的目标环境中。

接下来就通过实际例子演示argo-cd工作过程。首先安装argo-cd。

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

安装后将argocd-server修改为NodePort类型的service,这样可以通过node节点IP+端口号在外网访问安装的argocd。

通过查看secret获取argocd的登录密码,用户名是admin。查看到的密码是经过base64加密的,需要进行解密后才能登录到argocd服务上。

  kubectl get secret -n argocd argocd-initial-admin-secret -oyaml
  echo '$password'|base64 --decode

 登录argocd后,创建project,在创建project时需要设置代码仓库的git地址,配置Destination,即部署的集群地址的namespace,git代码仓库地址上存放就是一个Deployment的yaml文件。

 项目创建完成后,点击Sync,argo-cd就会从git上拉取depoyment的yaml文件,并完成部署。

此时如果不修改git中的deployment文件,而是直接在集群中修改部署的deployment文件,修改成一个不存在的image版本,修改后,pod应该会启动失败。

 

 此时查看argo-cd,会看到argo-cd自动更新版本信息,获取最新的部署情况,可以看到argo-cd上也显示新的pod启动失败了。

此时,如果想回退到git仓库中的yaml文件配置信息,只需在argo-cd中点击Sync按钮即可。

查看pod信息,可以看到启动失败的pod已经被删除,deployment的yaml文件重新恢复到和git中存放的版本一致。

再次查看argo-cd,可以看到项目中也获取了Sync后的pod部署情况。

通过上面的实际例子演示,可以看到引入argo-cd可以有效避免生产上的误操作,当发现有问题时,可快速回滚到git仓库存放的yaml定义的部署版本上。

执行kubectl scale命令,对部署的httpserver的pod进行横向扩展,执行命令后运行的pod从1个变成了2个。

kubectl scale deployment httpserver --replicas=2

此时查看argo-cd的项目,项目状态会显示OutOfSync状态,因为创建项目时设置的是手动Sync。

 手动执行Sync后,查看部署信息,可以看到argo-cd上显示了有2个pod处于running状态。

当然也可以把项目设置为自动Sync模式,这样在生产环境scale了deployment后,argo-cd会自动同步最新的部署信息。

### ArgoCD 使用指南与介绍 Argo CD 是一个声明式的、GitOps 持续交付工具,专为 Kubernetes 设计。它通过将应用程序的状态与存储在 Git 仓库中的配置文件进行同步,实现了自动化部署持续交付。以下是关于 ArgoCD 的详细介绍以及使用方法[^1]。 #### 核心组件 ArgoCD 由多个核心组件组成,这些组件协同工作以实现自动化部署: - **API Server**:提供 REST API Web UI,用于与用户交互。 - **Repository Server**:负责从远程 Git 仓库中拉取配置文件,并将其缓存到本地。 - **Application Controller**:监控 Kubernetes 集群中的资源状态,并根据需要执行同步操作。 - **Dex(可选)**:用于集成身份认证服务,支持 OAuth2 OpenID Connect 等协议[^4]。 #### 安装 ArgoCD 可以通过 `kubectl` 命令行工具安装 ArgoCD: ```bash kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml ``` 安装完成后,可以使用以下命令访问 ArgoCD 的 Web UI: ```bash kubectl port-forward svc/argocd-server -n argocd 8080:443 ``` 默认情况下,用户名为 `admin`,密码可以通过以下命令获取: ```bash kubectl get pods -n kube-system | grep argocd-server ``` 示例输出: ``` argocd-server-5bf58444b4-mpvht 1/1 Running 0 64m ``` 使用 `argocd-server-5bf58444b4-mpvht` 作为初始密码登录[^5]。 #### 配置与管理 ArgoCD 支持多种配置管理方式,包括 Helm Charts Kustomize。以下是两种常见的集成方式: - **Helm Charts**:通过 Helm Charts 定义应用程序的配置,ArgoCD 能够自动解析并应用这些配置[^2]。 - **Kustomize**:使用 Kustomize 工具对 Kubernetes 资源进行定制化配置,ArgoCD 同样支持这种模式[^4]。 #### Redis 密码管理 在 ArgoCD 的默认安装中,Redis 使用密码验证,密码与密钥一起存储在安装命名空间中的 Kubernetes 机密中。管理员可以通过以下命令查看或修改 Redis 密码: ```bash kubectl get secret -n argocd argocd-redis -o yaml ``` 这有助于提高系统的安全性[^1]。 #### GitOps 实践 ArgoCD 是 GitOps 方法论的核心工具之一。通过将应用程序的配置存储在 Git 仓库中,团队可以实现版本控制、协作开发以及自动化部署。这种方式不仅提高了生产力,还增强了系统的可靠性一致性[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taoli-qiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值