首页 > 其他分享 >Argo CD初体验

Argo CD初体验

时间:2024-09-08 11:35:45浏览次数:9  
标签:初体验 Kubernetes CD nginx Git 集群 Argo

什么是 Argo CD?

Argo CD 是一个声明式的 GitOps 持续交付工具,用于 Kubernetes 集群。它通过持续监控 Git 仓库中的 Kubernetes 资源配置文件,将这些配置自动应用到指定的 Kubernetes 集群中,确保集群的实际状态与仓库中的配置保持一致。Argo CD 支持各种 Kubernetes 清单格式,如 Kustomize、Helm Charts、Ksonnet、YAML 和 JSON,允许你通过 Git 仓库管理和部署 Kubernetes 资源。

Argo CD 的好处

  1. 声明式管理:Argo CD 采用声明式的管理方式,开发者只需在 Git 仓库中定义好应用的期望状态,Argo CD 就会自动将集群的实际状态与之同步。这样可以减少人为错误,并使配置管理更加清晰和可审计。

  2. GitOps 工作流:Argo CD 将 Git 仓库作为配置管理的唯一真理来源(Source of Truth),实现了 GitOps 的最佳实践。每一次应用的部署或更新都通过提交代码和合并请求触发,从而保证了自动化和审核跟踪。

  3. 持续同步和自愈:Argo CD 能够持续监控 Kubernetes 集群中的资源状态,并在检测到任何偏离期望状态的情况时自动纠正,使集群的状态始终与 Git 仓库中的配置一致。

  4. 多集群支持:Argo CD 可以管理多个 Kubernetes 集群,使得跨集群的应用部署和管理更加容易。

  5. 细粒度访问控制:Argo CD 提供了细粒度的访问控制机制,允许基于角色的访问控制(RBAC)以及通过 SSO 集成来控制对特定项目和应用的访问权限。

Argo CD 与 Jenkins 的对比

功能Argo CDJenkins
架构 专注于 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 环境,尤其适合微服务和容器化应用的持续交付。

标签:初体验,Kubernetes,CD,nginx,Git,集群,Argo
From: https://www.cnblogs.com/chenyishi/p/18402683

相关文章

  • ETCD调优有哪些方法
    调优etcd可以显著提升其性能和可靠性。以下是一些有效的调优方法:1.集群配置选择合适的节点数:建议使用奇数个节点(如3、5、7)来确保高可用性和故障恢复。设置heartbeat-interval和election-timeout:根据网络延迟和负载调整这些参数,以减少选举频率和提高响应速度。2.存储......
  • Etcd集群备份失败问题
    问题现象k8s中etcdctl备份etcd时第2步卡住。exportETCDCTL_API=3etcdctl--endpoints172.18.0.2:2379snapshotsavesnapshot.db问题分析k8s中执行etcdctl命令时没有指定证书文件路径。解决问题exportETCDCTL_API=3aliasmyetcd="etcdctl--cacert/etc/kubernetes/p......
  • Etcd集群备份恢复
    安装Etcd集群dockerpullquay.io/coreos/etcd:v3.3.1dockerrun-d--nameetcd1quay.io/coreos/etcd:v3.3.1etcd-nameetcd1-advertise-client-urlshttp://172.17.0.2:2379-initial-advertise-peer-urlshttp://172.17.0.2:2380-listen-client-urlshttp://0.0.0.0:237......
  • SciTech-Science: 纯色滤(分)光塑料片: 将光分解为BGR三原纯色(彩色CCD传感器原理) +
    彩色滤(分)光塑料片:将光分解为BGR三原纯色彩色CCD传感器原理透过一张彩色滤(分)光塑料片可以分解出光源的“与滤光片同颜色”的成份;例如“B(蓝色)滤光塑料片”:用"P紫"光源照射,其“蓝色成份”就会穿透过"蓝色滤光塑料片";用"G绿"或"R红"光源照射,则没有光线透过.......
  • 解决Windows 远程登陆后vscdoe,chrome,cursor 等程序假死无法输入字符的问题(键盘没有
    作过程试着使用鼠标点击vscode左侧的文件列表,打开一个新的文件。如果鼠标没有反应,可以切换到其他软件(比如浏览器),再切换回来就能恢复鼠标的点击了。将鼠标移到vscode打开的文件的窗口,按住键盘s键(其他按键也行)不松开,然后用鼠标点击vscode打开的文件窗口;点击后切换到其他打开的软件(......
  • 【第98课】云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • 【第96课】云原生篇&Docker安全&系统内核&版本漏洞&CDK自动利用&容器逃逸
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • 推荐2个实用的持续集成与部署(CI&CD)自动化工具
    前言最近DotNetGuide技术社区交流群有不少同学在咨询:持续集成与部署(CI&CD)自动化工具有什么好用的推荐?今天大姚给大家推荐2个实用且免费的持续集成与部署(CI&CD)自动化工具,希望可以帮助到有需要的同学。持续集成与部署工具的作用持续集成(CI)和持续交付/部署(CD)自动化工具是用于实现软件......
  • 如何快速求一个序列的gcd和lcm
    背景:教授在打某道关于序列gcd与lcm的题,但是看不懂题解,于是决定打表找规律;然而自己又懒得算数,于是写了个程序。使用说明:输入格式:nstra1a2...an,\(n\)为序列长度;str为操作种类,只有GCD和LCM;\(a\)为序列,其中所有元素都必须是自然数。如果输入不合法,程序会中断计算并返回错误......
  • etcd数据备份与恢复
    etcd数据备份与恢复 单节点etcd数据备份与恢复一、数据备份1、设置环境变量ETCDCTL_API=3 2、创建备份目录,使用快照备份mkdir-p/data/etcd/backupetcdctlsnapshotsave/data/etcd/backup/etcd.db 二、数据恢复1、停止etcd服务systemctlstop......