云原生下的CI/CD:安装Argo CD

本文介绍了ArgoCD在Kubernetes环境中实现GitOps持续部署的过程,包括ArgoCD的概念、功能、组件以及如何部署和使用。通过将运维流程自动化,ArgoCD简化了应用的部署和更新,支持多云、多平台的复杂场景。在实验部分,详细展示了如何在Kubernetes上安装ArgoCD,创建和管理应用,以及进行版本升级和回滚操作。
1.Argo CD 能解决什么问题

1.1 从 GitOps 说起

GitOps 起源于 Weaveworks 公司在 2017 年发表的一篇博客, GitOps - Operations by Pull Request 。在文中,Alexis 介绍了一种以 Git 为唯一事实来源的部署方式。

在 GitOps 实践中,我们需要将软件设施定义在 Git 仓库中进行管理。其中的软件设施,包括 IaaS、Kubernetes 这样的基础设施,也包括应用本身。每个人都可以通过提交 Pull Request 来修改软件设施,然后通过自动化的程序执行这种修改。

这种方式使得每个人都可以专注于开发新的功能,而不用陷入繁琐的安装、变更、迁移等运维工作。同时,整个过程具有完整的操作记录和权限审批管理。

1.2 Argo CD 能落地 GitOps

Argo CD 是以 Kubernetes 为基础设施的 GitOps 持续部署工具。下面是来自 Argo CD 社区的原理图:
在这里插入图片描述
Argo CD 从 Git Repo 拉取应用的配置,部署在 Kubernetes 集群中。
当有人新增功能时,提交一个 Pull Requests 到 Git Repo 修改应用的部署配置,等待合并。
在 Pull Requests 合并之后,通过 Webhook 触发 Argo CD 执行更新操作。
应用得到更新,发送通知
理解起来很容易,将运维过程自动化,持续的部署。

1.3 强大而易扩展的 Argo CD
对于一般的 Kubernetes 运维场景,上面描述的功能是够用的。但是如果是复杂场景,涉及多云、多平台、多中间件,也是需要考虑的。

在这里插入图片描述

在 Argo CD 的处理逻辑中,定义了四个组件:

Event Source,接入各种事件消息
Sensor,将消息转换为触发的动作
Eventbus,消息订阅路由系统
Trigger,触发外部的实际动作

对于运维人员,需要了解的主要是两点:

Argo CD 可以处理什么事件?

AMQP、AWS SNS、AWS SQS、Cron Schedules、GCP PubSub、GitHub、GitLab、HDFS、File Based Events、Kafka、Minio、NATS、MQTT、K8s Resources、Slack、NetApp StorageGrid、Webhooks、Stripe、NSQ、Emitter、Redis、Azure Events Hub
Argo CD 可以处理执行哪些动作?

Argo Workflows、Standard K8s Objects、HTTP Requests、AWS Lambda、NATS Messages、Kafka Messages、Slack Notifications、Argo Rollouts CR、Custom / Build Your Own Triggers、Apache OpenWhisk

2. 在 Kubernetes 上部署 Argo CD
新建命名空间,部署 Argo CD
这里选择当前发布的最新版本: 1.8.3

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

Argo CD 社区还提供了 HA 模式的部署方式

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.8.3/manifests/ha/install.yaml 用于生产环境。

将服务改为 NodePort 类型,方便访问

kubectl patch svc argocd-server -p '{"spec": {"type": "NodePort"}}' -n argocd

现在我们已经将名字为 argocd-server 的 Service 改成 NodePort 类型了,可以在集群外部通过 <节点 IP>:<随机生成的 NodePort 端口> 来访问 Argo CD,我这里随机生成的 NodePort 端口是 32313。

$ kubectl get svc -n argocd 
NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
argocd-dex-server       ClusterIP   10.68.51.140    <none>        5556/TCP,5557/TCP,5558/TCP   5m11s
argocd-metrics          ClusterIP   10.68.76.255    <none>        8082/TCP                     5m11s
argocd-redis            ClusterIP   10.68.223.131   <none>        6379/TCP                     5m11s
argocd-repo-server      ClusterIP   10.68.1.35      <none>        8081/TCP,8084
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值