26.云原生ArgoCD高级之ApplicationSet

news2024/11/27 19:39:17

云原生专栏大纲

文章目录

    • ApplicationSet介绍
    • ApplicationSet 特性
    • ApplicationSet 安装
    • ApplicationSet 工作原理
    • ApplicationSet 生成器
      • 列表类型生成器
      • 集群生成器
        • 基础使用方法
        • Label Selector 指定集群
        • Values 字段传递额外的参数
      • git生成器
        • git目录生成参数
        • 排除目录
        • git文件生成器
        • 矩阵生成器

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 特性

image.png

ApplicationSet 安装

官网中有安装方式

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

ApplicationSet 工作原理

image.png

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 生成器

image.png

列表类型生成器

根据提供的列表参数生成模板
image.png
上述list指定部署到两个k8s集群
image.png

集群生成器

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

基础使用方法

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

image.png

Label Selector 指定集群

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

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

Values 字段传递额外的参数

image.png
部署后查看应用详情
image.png

git生成器

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

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

git目录生成参数

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

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

image.png

排除目录

image.png
第二个目录需要排除
image.png

git文件生成器

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

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

image.png
image.png

矩阵生成器

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

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1432937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix server/agent源码编译成rpm包(通用版-小白教程)

前言 工作环境需要用到很多信创的操作系统,zabbix agent2的官方没有现成的包可用,网上巴拉了一下找到zabbix agent2通用版编译成rpm包的方法 思路:假如当你有一批ky10_x86的机器需要配套的zabbix agent的rpm包,那就找一台ky10_x…

6个国内可用的chat大模型

文心一言 - 一款适合中国人使用的AI智能助理,能够帮助用户进行对话、生成内容等工作,提高工作效率和创作水平 文心一言 文心一言 App 是一款适合中国人的 AI 智能助理,它的功能点主要包括: 工作生活助理:该应用通过简…

鉴权失败原因

在技术领域,鉴权失败是指一个系统或应用程序中的身份验证或权限验证过程失败。当用户试图访问受限资源或执行受限操作时,系统会进行鉴权过程来确认用户是否具有足够的权限。如果鉴权过程失败,则表示用户无法获得所需的访问权限。 鉴权失败可…

Java代码实现基数排序算法(附带源码)

基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 1. 基数排序…

基于Springboot的兼职网(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的兼职网(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&#xff0…

ubuntu离线安装k8s

目录 一、前期准备 二、安装前配置 三、安装docker 四、安装cri-dockerd 五、部署k8s master节点 六、整合kubectl与cri-dockerd 七、网络等插件安装 八、常见问题及解决方法 一、前期准备 ①ubuntu系统 本地已安装ubuntu系统,lsb_release -a命令查看版本信…

HarmonyOS应用/服务发布:打造多设备生态的关键一步

目前 前言HarmonyOS 应用/服务发布的重要性使用HarmonyOS 构建跨设备的应用生态前期准备工作简述发布流程生成签名文件配置签名信息编译构建.app文件上架.app文件到AGC结束语 前言 随着智能设备的快速普及和多样化,以及编程语言的迅猛发展,构建一个无缝…

打印文件pdf怎么转换成word文档?pdf转换工具推荐

有时候我们可能需要重用PDF文件中的文本内容,比如引用某些段落、复制粘贴特定文字或提取数据,通过将pdf文件转换成word,可以轻松地提取和重用其中的文本,节省时间和努力,那么pdf怎么转word呢?可以试试本文推…

读论文:DiffBIR: Towards Blind Image Restoration with Generative Diffusion Prior

DiffBIR 发表于2023年的ICCV,是一种基于生成扩散先验的盲图像恢复模型。它通过两个阶段的处理来去除图像的退化,并细化图像的细节。DiffBIR 的优势在于提供高质量的图像恢复结果,并且具有灵活的参数设置,可以在保真度和质量之间进…

SpringBoot实战第二天

今日战报 继续完善用户相关接口开发: 1.完成获取用户信息功能 2.完成更新用户信息功能 3.完成更新用户头像功能 4.完成更新用户密码功能 获取用户信息 接口文档 如接口文档所示,我们需要做的就是从header中的Authorization中读取token,解码…

CSS 闪电按钮效果

<template><view class="const"><div class="voltage-button"><button>闪电按钮</button><svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox=&q…

PyTorch 2.2 中文官方教程(十七)

&#xff08;Beta&#xff09;使用缩放点积注意力&#xff08;SDPA&#xff09;实现高性能 Transformer 原文&#xff1a;pytorch.org/tutorials/intermediate/scaled_dot_product_attention_tutorial.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 注意 点击这…

Flutter开发iOS问题记录

一、版本适配问题 warning: The iOS deployment target ‘IPHONEOS_DEPLOYMENT_TARGET’ is set to 10.0, but the range of supported deployment target versions is 12.0 to 17.2.99. (in target ‘Protobuf’ from project ‘Pods’) 可以通过在podfile中配置解决。 pos…

小埋的解密游戏的题解

题目描述 小埋最近在玩一个解密游戏&#xff0c;这个游戏的解密方法是这样的&#xff0c;这个游戏会给你提供 个数,让我们求出这 个数里面&#xff0c;有多少个连续的数的平均数大于某个给定的数 。这个数可能会很大&#xff0c;所以我们要输出这个数对 的取模结果。现在小…

Java并发之synchronized详解

☆* o(≧▽≦)o *☆嗨~我是小奥&#x1f379; &#x1f4c4;&#x1f4c4;&#x1f4c4;个人博客&#xff1a;小奥的博客 &#x1f4c4;&#x1f4c4;&#x1f4c4;CSDN&#xff1a;个人CSDN &#x1f4d9;&#x1f4d9;&#x1f4d9;Github&#xff1a;传送门 &#x1f4c5;&a…

使用Java实现基于HTTP的分布式系统:让你的应用“四处开花”

在数字世界里&#xff0c;分布式系统就像是一个大家庭&#xff0c;每个成员&#xff08;即节点&#xff09;都有自己的任务和职责&#xff0c;共同维护整个家庭的运转。如果你想使用Java来实现这样一个大家庭&#xff0c;让应用在各个节点上“四处开花”&#xff0c;那就需要借…

ensp实验合集(二)

实验6 VLAN划分....................................................................... - 30 - 实验7 路由器调试及常用命令使用........................................ - 42 - 实验8 配置静态路由器............................................................…

DevOps落地笔记-13|自动化测试:提高测试效率的不二之选

上一课时主要介绍了通过 API 管理平台来管理企业内部的 API。持续集成是能够保证软件处于可工作状态的实践&#xff0c;但实施持续集成有一个必不可少的步骤——测试。只有尽可能全面的测试覆盖&#xff0c;才能降低软件出错的概率。但是&#xff0c;大多数企业里还是基于人工来…

ChatGPT之搭建API代理服务

简介 一行Docker命令部署的 OpenAI/GPT API代理&#xff0c;支持SSE流式返回、腾讯云函数 。 项目地址&#xff1a;https://github.com/easychen/openai-api-proxy 这个项目可以自行搭建 OpenAI API 代理服务器工具&#xff0c;该项目是代理的服务器端&#xff0c;不是客户端。…

SpringMVC-组件解析

一、引子 我们在上一篇文章Spring MVC-基本概念中&#xff0c;为读者解释了如何使用SpringMVC框架&#xff0c;将承接客户端请求的工作从原生的Servlet转移到我们熟知的Controller中。那么我们不禁会好奇&#xff0c;SpringMVC框架到底做了什么&#xff0c;是怎么把请求分发给…