ArgoCD(五)----ArgoCD 各CRD资源配置文件规范

news/2024/10/31 3:28:51/

3.4.1 Application资源规范

  • Application CRD的spec字段主要嵌套如下几个字段:

    • source :配置仓库及相关的配置访问及使用方法;支持如下几种类型:
      1. kubernetets的原生配置文件
      2. Helm chart
      3. kustomize:由kustomize字段进行定义
      4. Jsonnet:由directory字段进行定义
    • destination :应用程序要部署的目标位置:
      1. server:目标kubernetes集群的API server访问入口
      2. namespace: 目标名称空间
    • syncPolicy :同步策略,可选字段
      1. automated
      2. syncOptions <[]string>
      3. retry
    • ignoreDifferences <[]object>: 在syncc中,要忽略的存在不同的资源列表
  • 提示: argocd相关的资源需要创建到argocd部署的名称空间之下

  • 配置示例

    • Application CRD资源创建在argocd的namespace
    • 而要部署的应用程序可以部署在其他namespace
    • 同步策略设置为自动同步,配置仓库的变更将直接反应到活动对象上
    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:name: spring-boot-helloworldnamespace: argocd
    spec:project: defaultsource:repoURL: https://gitee.com/mageedu/spring-boot-helloworld-deployment.gittargetRevision: HEADpath: deploy/kubernetesdestination:server: https://kubernetes.default.svcnamespace: helloworldsyncPolicy:automated:prune: trueselfHeal: truesyncOptions:- Validate=false- CreateNamespace=true- PrunePro[agationPolicy=foreground- PruneLast=trueretry:limit: 5backoff:duration: 5sfactor: 2maxDuration: 3m

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJTj02pR-1686036830961)(images\image-20230119145852222.png)]

3.4.2 Project配置

  • Project负责为Application提供逻辑分组,它主要实现如下功能:

    • 限制可以部署的内容(指定受信任的Git Repo仓库);
    • 限制Application可以部署到的目标位置(指定目标cluster和namespace);
    • 限制能够及不能够部署的对象类型,例如RBAC,CRD,DeamonSet等
  • ArgoCD的默认project

    • default project由ArgoCD自动部署,需要用户按需要修改,但不能被删除

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iGAEJwXZ-1686036830962)(images\image-20230119150523090.png)]

  • Project CRD资源规范的spec字段,可以嵌套多个字段:

    • 可读取资源配置的Repo

      1. sourceRepos <[]string>
    • 可用的资源类型

      clusterResourceBlacklist <[]Object>

      clusterResourceWhitelist <[]Object>

      namespaceResourceBlacklist <[]Object>

      namespaceResourceWhitelist <[]Object>

    • 可部署Application的目标集群和名称空间

      1. deatinations <[]Objects>
    • 其他可用配置

      1. description :该project的描述信息
      2. roles <[]Object>:该project上的可用角色
      3. syncWindows <[]Object>:该资源的同步窗口
  • 管理project的命令行操作

    • 创建Project:

      argocd proj create PROJECT -d,--dest stringArray -s,--src stringArray
      
    • 在project上添加使用的Repo:

      argocd proj add-source <PROJECT> <REPO>
      argocd proj remove-source <PROJECT> <REPO>
      
    • 在project上添加添加可以使用的目标cluster和namespace

      argocd proj add-destination <PROJECT> <CLUSTER>,<NAMESPACE>
      argocd proj remove-destination <PROJECT> <CLUSTER>,<NAMESPACE>
      
    • project上可用的资源类型

      argocd proj allow-cluster-resource <PROJECT> <GROUP> <KIND>
      argocd proj allow-namespace-resource <PROJECT> <GROUP> <KIND>
      argocd proj deny-cluster-resource <PROJECT> <GROUP> <KIND>
      argocd proj deny-namespace-resource <PROJECT> <GROUP> <KIND>
      
    • 将Application添加到指定的project上

      argocd app set <APPLICATION> --project <PROJECT>
      

3.4.3 ApplicationSet配置

3.4.3.1 ApplicationSet CRD

  • ApplicationSet CRD

    • ApplicationSet CRD用于定义可自动生成的Aplication的模板,从而能够在单一repo定义多个application或多个repo,以及跨cluster的场景
    • ApplicationSet CRD需要由专门的ApplicationSet控制器实现
  • ApplicationSet可提供如下功能

    • 目标cluster的模板化,从而能够在单个资源配置文件中适配部署到多个kubernetes集群
    • 源Git配置仓库模板化

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FkwdwdAW-1686036830962)(images\image-20230119152847392.png)]

3.4.3.2 ApplicationSet 控制器的工作模式

  • ApplicationSet负责管理Application,因此,ApplicationSet控制器会生成或更新Application;
  • 生成或更新的Application资源则由Application控制器确保期望状态和实际状态的一致
  • 因此,ApplicationSet控制器仅负责确保ApplicationSet资源期望状态和实际状态的一致

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XlwVx13P-1686036830962)(images\image-20230119153357339.png)]

3.4.3.3 ApplicationSet 资源配置

  • ApplicationSet CRD资源规范遵循kubernetes API规范,其spec内嵌如下三个字段:

    • generators <[]Object>

      1. 定义负责生成参数的生成器,这些参数会渲染template中的模板
      2. 生成器的关键作用在于,他们是模板参数的数据源
      3. ApplicationSet支持多种不同的generator
    • syncPolicy

      1. 资源同步策略
      2. 仅支持内嵌一个布尔型字段preserveResourcesOnDeletion
    • template

      1. Application资源模板,配置格式与Appliction规范相同,但他还有一些参数化的配置
      2. 通过将这些参数替换为generator生成的值,完成模板的实例化

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U6vgIvTa-1686036830963)(images\image-20230119154250188.png)]

  • ApplicationSet配置示例

    • 使用了列表生成器(list generator)
      1. 有3个参数,分别为environment参数传递不同的值,该参数作为目标集群的名称及空间
    • Application 模板
      1. 给出了模板化的source
      2. 定义了模板化的destination
      3. 定义了公用的syncPolicy
    • ApplicationSet的syncPolicy
      1. preserveResourcesOnDeletion:是否在删除当前ApplicationSet资源时,一并删除由其创建的Application,即是否执行级联删除操作.
    • 目前有7种不同的generator可用,常用的有4种
      1. list generator
      2. cluster generstor
      3. git generstor
      4. matrix generator
    apiVersion: argoproj.io/v1alpha1
    kind: ApplicationSet
    metadata:name: helloworldnamespace: argocd
    spec:generators:- list:elements:- environment: dev- environment: staging- environment: prodtemplate:metadata:name: 'helloworld-{{environment}}'spec:project: defaultsource:repoURL: https://gitee.com/mageedu/spring-boot-helloworld-deployment.gittargetRevision: HEADpath: helloworld/{{environment}}destination:server: https://kubernetes.default.svcnamespace: '{{environment}}'syncPolicy:automated:prune: trueselfHeal: truesyncOptions:- Validate=false- CreateNamespace=true- PrunePro[agationPolicy=foreground- PruneLast=true

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1WCB3eAG-1686036830963)(images\image-20230119160502250.png)]


http://www.ppmy.cn/news/242745.html

相关文章

数据结构-递归

递归 概述 定义 计算机科学中&#xff0c;递归是一种解决计算问题的方法&#xff0c;其中解决方案取决于同一类问题的更小子集 In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instan…

Android RK3588-12 默认开启位置信息

默认开启位置信息 modified: frameworks/base/packages/SettingsProvider/res/values/defaults.xml diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml index ca3c14b…

uni-app 启动手机模拟器

1、下载蓝叠模拟器 下载完成后设置 adb链接和root 设置竖屏 2、设置uni-app adb 环境变量 在 HBuilderX目录下>plugins目录下>launcher目录下>tools目录下>adbs 复制该路径后打开电脑高级环境变量 3、配置 HBuilderX adb 点击工具>设置>运行配置配置adb路…

android ps2 模拟器,手机目前安卓系统PS2模拟器最好用的是一款叫做呆萌PS2模拟器的APP!这一款竟然是国产的!...

原标题&#xff1a;手机目前安卓系统PS2模拟器最好用的是一款叫做呆萌PS2模拟器的APP&#xff01;这一款竟然是国产的&#xff01; 手机目前安卓系统是有PS2模拟器的&#xff0c;最好用的是一款叫做呆萌PS2模拟器的APP&#xff0c;而且这一款还是国人开发的哦&#xff0c;以下我…

uniapp app运行到手机模拟器

用过两种模拟器&#xff0c;一种是mumu模拟器&#xff0c;一种是雷电模拟器 模拟器下好后 mumu模拟器 按照官方说的来就行&#xff0c;官方链接 mumu模拟器的默认端口是7555 然后就可以运行了 雷电模拟器 雷电模拟器 雷电模拟器 先到设置里多点几次版本号打开开发者选项 打…

安卓psp模拟器哪个好_手机psp模拟器哪个好_安卓PSP模拟器中文官方版下载_66游戏网...

模拟器PSP是为PlayStation(PSP)Android平台伟大的模拟器内置800款PSP游戏。你可以发挥自己的PSP游戏在Android设备上。在有额外的功能和最佳的游戏兼容性高清晰度顶级最好的游戏体验。仿真器PSP行之有效的大多数智能手机和平板电脑。这是PSP上最好的模拟器&#xff0c;具有良好…

移动端必备——手机模拟器

作为一个测试&#xff0c;今天才知道有手机模拟器的存在真的是有点过分了&#xff08;作为一个不玩游戏且主要测试web端的测试而言也挺正常的&#xff09;&#xff0c;如果要测试移动端&#xff0c;这个真的是一个神器。今天体验了一下觉得真的蛮不错的&#xff0c;只是有些深入…

Android模拟器群控,安卓模拟器多开哪个好 流畅不卡、省资源、群控刷机都有

原标题&#xff1a;安卓模拟器多开哪个好 流畅不卡、省资源、群控刷机都有 安卓模拟器多开哪个好呢?一般多开的玩家分为两种&#xff0c;一种就是自己多开挂机玩&#xff0c;另外一种就是工作室需求&#xff0c;需要挂机开更多&#xff0c;对安卓模拟器多开的流畅性、稳定性及…