云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

@
目录

  • 概述
    • 定义
    • 工作原理
    • 主要组件
    • 核心概念
  • 环境准备
    • 概述
    • 安装Kubekey
    • 创建K8S
    • 安装K9S
    • OpenLB
    • 安装ArgoCD
    • 安装 ArgoCD CLI
    • 从Git库中创建一个应用程序
概述定义
ArgoCD 官网地址 https://argoproj.github.io/cd
ArgoCD 最新官网文档 https://argo-cd.readthedocs.io/en/stable/
ArgoCD GitHub源码地址 https://github.com/argoproj/argo-cd
Argo官网 https://argoproj.github.io/(用Kubernetes做更多的事情,用于Kubernetes运行工作流、管理集群和正确执行giitops的开源工具)
Argo CD是Kubernetes的声明式、GitOps连续交付工具 。Argo CD是由Intuit主导的开源项目,是Argo项目集合中的一个,Argo项目集合还包括Argo Workflow、Argo Rollout、Argo Event等项目 。
Argo CD 遵循 GitOps 模式,使用 Git 仓库作为定义所需应用程序状态的真实来源,Argo CD 支持多种 Kubernetes 清单:
  • kustomize
  • helm charts
  • ksonnet applications
  • jsonnet files

云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

文章插图
Argo CD主要优势有:
  • 应用程序定义、配置和环境应该是声明性的和版本控制的 。
  • 应用程序部署和生命周期管理应该是自动化的、可审计的,并且容易理解 。
  • Argo CD是一个独立的部署工具,支持对多个环境、多个Kubernetes集群上的应用进行统一部署和管理 。
工作原理Argo CD 是通过一个 Kubernetes 控制器来实现的,它持续 watch 正在运行的应用程序并将当前的实时状态与所需的目标状态( Git 存储库中指定的)进行比较 。已经部署的应用程序的实际状态与目标状态有差异,则被认为是 状态,Argo CD 会报告显示这些差异,同时提供工具来自动或手动将状态同步到期望的目标状态 。在 Git 仓库中对期望目标状态所做的任何修改都可以自动应用反馈到指定的目标环境中去 。
云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

文章插图
主要组件
  • API 服务:API 服务是一个 gRPC/REST 服务,它暴露了 Web UI、CLI 和 CI/CD 系统使用的接口,主要有以下几个功能:
    • 应用程序管理和状态报告
    • 执行应用程序操作(例如同步、回滚、用户定义的操作)
    • 存储仓库和集群凭据管理(存储为 K8S Secrets 对象)
    • 认证和授权给外部身份提供者
    • RBAC
    • Git webhook 事件的侦听器/转发器
  • 仓库服务:存储仓库服务是一个内部服务 , 负责维护保存应用程序清单 Git 仓库的本地缓存 。当提供以下输入时,它负责生成并返回 Kubernetes 清单:
    • 存储 URL
    • revision 版本(commit、tag、branch)
    • 应用路径
    • 模板配置:参数、ksonnet 环境、helm values.yaml 等
  • 应用控制器:应用控制器是一个 Kubernetes 控制器 , 它持续 watch 正在运行的应用程序并将当前的实时状态与所期望的目标状态( repo 中指定的)进行比较 。它检测应用程序的 状态,并采取一些措施来同步状态 , 它负责调用任何用户定义的生命周期事件的钩子(PreSync、Sync、PostSync) 。功能
    • 自动部署应用程序到指定的目标环境
    • 支持多种配置管理/模板工具(Kustomize、Helm、Ksonnet、Jsonnet、plain-YAML)
    • 能够管理和部署到多个集群
    • SSO 集成(OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedIn)
    • 用于授权的多租户和 RBAC 策略
    • 回滚/随时回滚到 Git 存储库中提交的任何应用配置
    • 应用资源的健康状况分析
    • 自动配置检测和可视化
    • 自动或手动将应用程序同步到所需状态
    • 提供应用程序活动实时视图的 Web UI
    • 用于自动化和 CI 集成的 CLI
    • Webhook 集成(GitHub、BitBucket、GitLab)
    • 用于自动化的 AccessTokens
    • PreSync、Sync、PostSync Hooks,以支持复杂的应用程序部署(例如蓝/绿和金丝雀发布)
    • 应用程序事件和 API 调用的审计
    • Prometheus 监控指标
    • 用于覆盖 Git 中的 ksonnet/helm 参数
核心概念