Argo CD初体验
什么是 Argo CD?
Argo CD 是一个声明式的 GitOps 持续交付工具,用于 Kubernetes 集群。它通过持续监控 Git 仓库中的 Kubernetes 资源配置文件,将这些配置自动应用到指定的 Kubernetes 集群中,确保集群的实际状态与仓库中的配置保持一致。Argo CD 支持各种 Kubernetes 清单格式,如 Kustomize、Helm Charts、Ksonnet、YAML 和 JSON,允许你通过 Git 仓库管理和部署 Kubernetes 资源。
Argo CD 的好处
声明式管理:Argo CD 采用声明式的管理方式,开发者只需在 Git 仓库中定义好应用的期望状态,Argo CD 就会自动将集群的实际状态与之同步。这样可以减少人为错误,并使配置管理更加清晰和可审计。
GitOps 工作流:Argo CD 将 Git 仓库作为配置管理的唯一真理来源(Source of Truth),实现了 GitOps 的最佳实践。每一次应用的部署或更新都通过提交代码和合并请求触发,从而保证了自动化和审核跟踪。
持续同步和自愈:Argo CD 能够持续监控 Kubernetes 集群中的资源状态,并在检测到任何偏离期望状态的情况时自动纠正,使集群的状态始终与 Git 仓库中的配置一致。
多集群支持:Argo CD 可以管理多个 Kubernetes 集群,使得跨集群的应用部署和管理更加容易。
细粒度访问控制:Argo CD 提供了细粒度的访问控制机制,允许基于角色的访问控制(RBAC)以及通过 SSO 集成来控制对特定项目和应用的访问权限。
Argo CD 与 Jenkins 的对比
| 功能 | Argo CD | Jenkins |
|---|---|---|
| 架构 | 专注于 Kubernetes 集群的声明式部署 | 通用的 CI/CD 工具,支持多种编程语言和环境 |
| GitOps 支持 | 内置支持 GitOps 工作流,Git 是唯一的真理来源 | 需要通过插件或自定义脚本来支持 GitOps 工作流 |
| 部署自动化 | 自动同步 Kubernetes 资源配置,持续保持集群一致性 | 通过流水线(pipeline)手动配置部署过程 |
| 可观测性和回滚 | 内置监控和自动回滚功能 | 通过第三方工具或插件实现 |
| 插件支持 | 提供基础功能,无需大量插件 | 通过插件扩展功能,插件种类丰富 |
| CI/CD 整合 | 专注于 CD 部分,通常与 Argo Workflows 等其他工具整合使用 | 既支持 CI 又支持 CD,整合度较高 |
使用 Argo CD 部署一个服务
接下来我们将展示如何使用 Argo CD 部署一个简单的服务。假设我们要在 Kubernetes 集群中部署一个 Nginx 服务。
1. 安装 Argo CD
首先,我们需要在 Kubernetes 集群中安装 Argo CD:
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
安装完成后,可以通过以下命令获取 Argo CD API Server 的外部访问地址:
kubectl get svc -n argocd
2. 访问 Argo CD
你可以通过 port-forward 访问 Argo CD 的 Web 界面:
kubectl port-forward svc/argocd-server -n argocd 8080:443
然后在浏览器中访问 https://localhost:8080。默认的用户名是 admin,可以通过以下命令获取初始密码:
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
3. 创建 Git 仓库并推送配置
在 GitHub 或其他 Git 服务上创建一个新仓库,并将以下内容保存为 nginx-deployment.yaml 文件,推送到你的 Git 仓库中。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
4. 使用 YAML 文件定义 Argo CD 应用
创建一个新的 YAML 文件 argo-nginx-app.yaml,并将以下内容添加到其中:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: nginx-app
namespace: argocd
spec:
project: default
source:
repoURL: '<YOUR_GIT_REPOSITORY_URL>'
targetRevision: HEAD
path: '<YOUR_APP_PATH>'
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: true
将 <your-username> 和 <your-repo> 替换为你的 GitHub 用户名和仓库名。
5. 应用 YAML 文件
通过以下命令将 Argo CD 应用的定义文件应用到 Kubernetes 集群:
kubectl apply -f argo-nginx-app.yaml
6. 验证部署
回到 Argo CD 的 Web 界面,你应该能看到名为 nginx-app 的应用。如果状态为 “Synced”,说明部署已经成功。
你也可以通过以下命令在 Kubernetes 中验证 Nginx 服务是否正常运行:
kubectl get pods -l app=nginx
kubectl get svc nginx-service
总结
Argo CD 是一个强大的 Kubernetes 持续交付工具,能够简化和自动化 Kubernetes 集群中的应用管理。通过 GitOps 工作流,Argo CD 使得应用部署和配置更具透明性和可追溯性。与 Jenkins 等传统 CI/CD 工具相比,Argo CD 更专注于 Kubernetes 环境,尤其适合微服务和容器化应用的持续交付。
Argo CD初体验的更多相关文章
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- win7升win10,初体验
跟宿舍哥们聊着聊着,聊到最近发布正式版的win10,听网上各种评论,吐槽,撒花的,想想,倒不如自己升级一下看看,反正不喜欢还可以还原.于是就开始了win10的初体验了,像之前装黑苹果双系统一样的兴奋, ...
- node.js 初体验
node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...
- Git 使用初体验
http://my.oschina.net/moooofly/blog/228608 很久之前在 http://git.oschina.net/ 上创建了一个私有项目 modb ,目的主要是用来学习如 ...
- ipython及Python初体验
阅读目录: Python环境体验 Python编辑器 ipython安装 Python提示符 Python初体验 print和变量 变量操作 内建函数:方法 数学运算:简单算术.随机数 关于模块 一. ...
- cucumber java从入门到精通(1)初体验
cucumber java从入门到精通(1)初体验 cucumber在ruby环境下表现让人惊叹,作为BDD框架的先驱,cucumber后来被移植到了多平台,有cucumber-js以及我们今天要介绍 ...
- Python+Flask+Gunicorn 项目实战(一) 从零开始,写一个Markdown解析器 —— 初体验
(一)前言 在开始学习之前,你需要确保你对Python, JavaScript, HTML, Markdown语法有非常基础的了解.项目的源码你可以在 https://github.com/zhu-y ...
- Node.js 网页瘸腿爬虫初体验
延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...
- 【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验
一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...
- 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验
一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...
随机推荐
- SpringBoot彩蛋之定制启动画面
写在前面 在日常开发中,我们经常会看到各种各样的启动画面.例如以下几种 ① spring项目启动画面 ② mybatisplus启动画面 ③若依项目启动画面 还有很多各式各样好看的启动画面,那么怎么定 ...
- Windows下git配合Unity要设置autocrlf=false
Unity的.asset文件的换行符一定是Unix (LF)格式的,哪怕在设置里选了用Windows (CRLF)也没用,这个选项只对创建的C# Script有效. 这些Unix换行文件提交上去没问题 ...
- SDL3 入门(5):纹理渲染
创建纹理 有三个 API 可以用来创建纹理: SDL_CreateTexture 参数少,使用方便,适用于创建简单的纹理 SDL_CreateTextureFromSurface 适用于从已有图像数据 ...
- [oeasy]python0135_变量名与下划线_dunder_声明与赋值
变量定义 回忆上次内容 变量 就是 能变的量 上次研究了 变量标识符的 规则 第一个字符 应该是 字母或下划线 合法的标识符可以包括 大小写字母 数字 下划线 还研究了字符串(str)的函数 ...
- 使用Cloudflare Worker加速docker镜像
前言 开发者越来越难了,现在国内的docker镜像也都️了,没有镜像要使用docker太难了,代理又很慢 现在就只剩下自建镜像的办法了 GitHub上有开源项目可以快速搭建自己的镜像库,不过还是有点麻 ...
- 题解:CF1984B Large Addition
题解:CF1984B Large Addition 题意 判断 \(n\) 是否是两个位数相同的 \(large\) 数的和. 思路 有以下三种证明方法: 最高位为 \(1\),因为两个 \(larg ...
- Windows cifs共享给linux
Windows 搜索启用或关闭Windows功能 启用cifs 共享文件并添加普通用户 解禁guest用户和设置本地策略 右键计算机 win+r输入secpol.msc 将guest删除 修改网络访问 ...
- Jmeter二次开发函数之入门
背景:Jmeter不能满足我们的参数需求,如生成手机号码.身份证号码等业务,固对jmeter进行二次函数开发. jmeter提供了接口供用户进行二次开发,我们只需引入包进行编辑.从jmeter规范上, ...
- Label Studio数据标注--通过源码安装
Label Studio是Heartex公司开发的一款在线数据标注工具,分为社区版(开源)和企业版(云服务,收费),企业版提供了增强的安全性(单点登录.角色基于访问控制.SOC2).团队管理.分析和报 ...
- 9、IDEA集成Github
9.1.登录Github账号 9.1.1.打开IDEA的Settings界面 如上图所示,打开IDEA的 Settings(设置)界面. 9.1.2.使用账号密码登录(方式一) 如上图所示,在&quo ...