26.云原生ArgoCD高级之ApplicationSet

云原生专栏大纲

文章目录

ApplicationSet介绍

Argo CD的ApplicationSet是一种功能强大的工具,用于在Kubernetes集群中批量创建和管理应用程序。它允许你使用模板化的方式定义和部署大量相似的应用程序实例。

ApplicationSet基于Kustomize和Kubernetes的自定义资源(Custom Resource Definition,CRD)机制实现。它使用模板和参数化配置来生成一组应用程序实例,每个实例都可以根据模板中定义的规则进行个性化配置。

使用ApplicationSet,你可以实现以下功能:

  1. 批量部署:通过定义一个模板和一组参数,可以轻松地批量创建和部署多个应用程序实例。这对于需要在不同环境或不同命名空间中部署相似应用程序的场景非常有用。
  2. 参数化配置:ApplicationSet支持在模板中使用参数,并根据参数值生成实际的应用程序配置。这样可以根据需要自定义每个应用程序实例的配置,例如名称、标签、镜像版本等。
  3. 动态更新:当模板或参数发生变化时,ApplicationSet能够检测到变化并自动更新相应的应用程序实例。这样可以确保应用程序的配置与模板保持同步,并自动应用任何更改。
  4. 声明式管理:与Argo CD的其他功能一样,ApplicationSet采用声明式的管理方式。你可以通过Git仓库中的应用程序定义文件来描述和管理ApplicationSet,实现版本控制和可追溯性。

总之,Argo CD的ApplicationSet提供了一种强大的方式来批量创建和管理应用程序实例。它通过模板化和参数化配置,使得在Kubernetes集群中部署大量相似应用程序变得更加简单和高效。

ApplicationSet 特性

ApplicationSet 安装

官网中有安装方式

java 复制代码
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/applicationset/v0.4.1/manifests/install.yaml

ApplicationSet 工作原理

ApplicationSet并不会操作kubernetes资源

除ArgoCD 部署的集群外,ApplicationSet 不会连接其他集群

除ArgoCD部署的命名空间外,ApplicationSet不与其他命名空间交互

ApplicationSet 是 Argo CD 中的一种特殊资源类型,它允许你通过模板化和参数化的方式来创建和管理多个应用程序。ApplicationSet 的原理是根据定义的模板和参数生成一组具体的应用程序资源,并将其提交给 Argo CD 进行处理和部署。

下面是 ApplicationSet 的基本原理:

  1. 模板定义:首先,你需要定义一个 ApplicationSet 模板,它描述了要创建的应用程序的结构和配置。模板可以包含任意数量的 Kubernetes 资源定义,如 Deployment、Service、ConfigMap 等。
  2. 参数化:在模板中,你可以使用参数来标记需要根据不同实例进行替换的部分。这些参数可以是静态的值,也可以是基于函数的动态值,如生成唯一标识符、从外部数据源获取值等。
  3. 实例化:基于模板和参数,ApplicationSet 将生成一组具体的应用程序实例。每个实例都是根据模板中的参数替换而来,从而生成一个独立的应用程序资源定义。
  4. 应用程序创建和管理:生成的应用程序实例将被提交给 Argo CD 进行处理和部署。Argo CD 将根据实例的定义,自动创建和管理相应的应用程序资源。这包括应用程序的同步、状态监控、自动化部署等。

通过使用 ApplicationSet,你可以通过一次定义和管理多个相似的应用程序。它可以帮助你提高工作效率,减少手动操作和重复工作。例如,你可以定义一个模板,根据不同的参数值生成多个相似的应用程序,如不同环境的部署、多个命名空间的部署等。

ApplicationSet 生成器

列表类型生成器

根据提供的列表参数生成模板

上述list指定部署到两个k8s集群

集群生成器

根据Argocd管理的集群自动生成集群参数

基础使用方法

下述clusters不填写表示应用部署到argocd中配置的全部k8s集群

Label Selector 指定集群

部署到指定k8s集群,下述cluster是外部集群

怎么确定是填写cluster?查看argocd命名空间下保密字典(Secret ),添加外部集群会生成一个Secret

Values 字段传递额外的参数

部署后查看应用详情

git生成器

Git 仓库中的文件或文件夹生成参数

  1. Git 目录生成参数
  2. 排除不需要的目录
    1.
    1. Git目录生成器会自动排除,开头的文件夹;
    2. 2,通过exclude选项排除单个目录;
  3. Git文件生成器
    1. 根据其内容生成参数。JSON字段被扁平化为键值对。
    2. 还提供了Git目录生成器的参数{path)},{path.basename]
git目录生成参数

官方示例地址:https://github.com/argoproj/applicationset

  1. git会根据上述两个目录生成对应参数
  2. path是上述两个文件夹路径
  3. path.basename上述两个文件夹名称
排除目录

第二个目录需要排除

git文件生成器

json文件中配置address地址有问题,若是配置问题如何排除?

  1. 查看argocd-applicationset-controller容器日志


矩阵生成器

组合两个子生成器的参数,做矩阵运算

相关推荐
极客天成ScaleFlash6 小时前
极客天成让统一存储从云原生‘进化’到 AI 原生: 不是版本升级,而是基因重组
人工智能·云原生
小闫BI设源码7 小时前
Dockerfile
云原生·eureka·日志收集·自动重启·容器监控·健康检查·生产环境部署
码路工人13 小时前
第8章:K8s 核心概念(上)- 工作负载
docker·云原生·容器
货拉拉技术16 小时前
货拉拉离线大数据跨云迁移 - 数据迁移篇
大数据·云原生
qq_5693841220 小时前
K8S (使用步骤)
云原生·容器·kubernetes
老马爱知1 天前
《红色脉络:一部PLMN在中国的演进史诗 (1G-6G)》 第11篇 | 核心网演进终局:从EPC到5GC——微服务与“云原生”
微服务·云原生·核心网·nfv·epc·5g核心网·sba架构
simon_skywalker1 天前
阿里云云原生挑战官方用例SPL
阿里云·云原生·kubernetes
斯普信专业组1 天前
Kubernetes(K8S)完全详解:从架构设计到云原生实践
云原生·容器·kubernetes
能不能别报错1 天前
kubeasz二进制部署k8s生产环境集群
云原生·容器·kubernetes
码路工人2 天前
第7章:迈向云原生 - Kubernetes 简介
docker·云原生·容器