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

news2024/11/28 12:42:15

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-helloworld
      namespace: argocd
    spec:
      project: default
      source:
        repoURL: https://gitee.com/mageedu/spring-boot-helloworld-deployment.git
        targetRevision: HEAD
        path: deploy/kubernetes
      destination:
        server: https://kubernetes.default.svc
        namespace: helloworld
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
        - Validate=false
        - CreateNamespace=true
        - PrunePro[agationPolicy=foreground
        - PruneLast=true
        retry:
          limit: 5
          backoff:
            duration: 5s
            factor: 2
            maxDuration: 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: helloworld
      namespace: argocd
    spec:
      generators:
      - list:
          elements:
          - environment: dev
          - environment: staging
          - environment: prod
      template:
        metadata:
          name: 'helloworld-{{environment}}'
        spec:
          project: default
          source:
            repoURL: https://gitee.com/mageedu/spring-boot-helloworld-deployment.git
            targetRevision: HEAD
            path: helloworld/{{environment}}
          destination:
            server: https://kubernetes.default.svc
            namespace: '{{environment}}'
          syncPolicy:
            automated:
              prune: true
              selfHeal: true
            syncOptions:
            - Validate=false
            - CreateNamespace=true
            - PrunePro[agationPolicy=foreground
            - PruneLast=true
    
    

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

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

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

相关文章

软件测试实战,支付二维码测试-测试点汇总,全面覆盖...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 面试的时候&#…

递归——先递后归——平衡二叉树

目录 1.什么是递归 &#xff08;1&#xff09;问问无所不能的chatgpt。 ​&#xff08;2&#xff09;我的理解 2.递归的应用之——树 &#xff08;1&#xff09;二叉树的录入与打印 &#xff08;2&#xff09;举个例子&#xff1a;将有序的数组转化为平衡二叉树 1.什么是递…

ffmpeg中的avs解码器综述

最近拿了一个avs的视频流&#xff0c;用硬件可以解码&#xff0c;但是ffmpeg自带的却无法解码。 所以研究了一下&#xff0c;首先看ffmpeg的avs解码器&#xff1a; 可以看到avs有两个&#xff0c;第一个是avs 第二个是cavs. 我们先用avs来解码&#xff0c;解码的视频是通过【a…

浅谈医院能耗监控平台研究与应用

摘要&#xff1a;综合性医院作为大型公共机构&#xff0c;能耗高的问题日益突出&#xff0c;构建能耗监控平台对医院能耗量化管理以及效果评估已经成为迫切需要。建立智能能耗监控平台&#xff0c;对采集的能耗数据进行分析&#xff0c;实现对医院能耗平台监控&#xff0c;为医…

java并发编程:Fork/Join并发框架介绍

文章目录 Fork/Join简介工作窃取算法Fork/Join的具体实现ForkJoinTaskfork()方法join()方法 ForkJoinPoolWorkQueuerunState Fork/Join的异常处理Fork/Join的使用 Fork/Join简介 Fork/Join框架是一个实现了ExecutorService接口的多线程处理器&#xff0c;它专为那些可以通过递…

java的内部类

1.内部类的概念 内部类表示的事物是外部类的一部分&#xff0c;内部类单独出现没有任何意义。如发动机是汽车的一部分。 内部类的访问特点&#xff1a; &#xff08;1&#xff09;内部类可以直接访问外部类的成员&#xff0c;包括私有&#xff1b; &#xff08;2&#xff09;外…

11.无监督学习之主成分分析

11.1 降维 降维的两种应用&#xff1a;一是数据压缩&#xff1b;二是可视化数据。 11.1.1 数据压缩 将相关性强的两个特征导致冗余&#xff0c;可以直接去掉其中一个特征&#xff0c;或者将两个特征进行某种转换&#xff0c;得到一个特征。 11.1.2 可视化数据 直接看数据可…

设计模式:提升软件设计质量的利器,适合入门者的指南

目录 导言&#xff1a;设计模式的概念常见的设计模式2.1. 单例模式&#xff08;Singleton Pattern&#xff09;2.2. 工厂模式&#xff08;Factory Pattern&#xff09;2.3. 观察者模式&#xff08;Observer Pattern&#xff09;2.4. 策略模式&#xff08;Strategy Pattern&…

OpenGL 摄像机

1.简介 OpenGL本身没有摄像机(Camera)的概念&#xff0c;但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机&#xff0c;产生一种我们在移动的感觉&#xff0c;而不是场景在移动。 要定义一个摄像机&#xff0c;我们需要它在世界空间中的位置、观察的方向…

Java 实现在顺序表中获取 pos 元素的位置

一、思路 1.顺序表不能是空的 2.pos位置要合法 3.直接返回当前的pos位置的下标 二、图解 返回的要是当前 pos 位置的下标&#xff0c;因为下标是没有负数的&#xff0c;由此就可以得出如果下标是负数的话&#xff0c; 这就是一种不合法的情况。 pos 位置的下标也不会超过顺序…

星空特效,截图不太完美

先上效果&#xff1a; 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>星空</title><meta name"viewport" content"widthdevice-width, user-scalable…

【立体视觉(三)】之张正友标定法原理

【立体视觉&#xff08;三&#xff09;】之张正友标定法原理 一、相机标定二、参数求解一&#xff09;闭合解二&#xff09;极大似然解三&#xff09;考虑相机畸变 三、实验流程 此为个人学习笔记&#xff0c;在各处借鉴了不少好图好文&#xff08;参考文献在文末&#xff09;&…

项目中常用的linux命令总结大全

哈喽 大家好啊&#xff0c;相信大家在项目中都会常常部署服务器&#xff0c;就涉及到一些常见的linux命令了 1.命令提示符表示命令输入 ps aux | grep nginx&#xff08;查看nginx进程运行状态&#xff09;whereis nginx 查找哪里有nginxlsof -i:5300 查看端口状态kill -9 xxx进…

攻防世界-Crypto-转轮机加密

1. 题目如下&#xff1a; 1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: < AMKGHIWPNYCJBFZDR…

大数据需要学习哪些内容?

大数据技术的体系庞大且复杂&#xff0c;每年都会涌现出大量新的技术&#xff0c;目前大数据行业所涉及到的核心技术主要就是&#xff1a;数据采集、数据存储、数据清洗、数据查询分析和数据可视化。 Python 已成利器 在大数据领域中大放异彩 Python&#xff0c;成为职场人追求…

论文阅读和分析:Binary CorNET Accelerator for HR Estimation From Wrist-PPG

主要贡献&#xff1a; 一种完全二值化网络(bCorNET)拓扑结构及其相应的算法-架构映射和高效实现。对CorNET进行量化后&#xff0c;减少计算量&#xff0c;又能实现减轻运动伪影的效果。 该框架在22个IEEE SPC受试者上的MAE为6.675.49 bpm。该设计采用ST65 nm技术框架&#xff…

04_两种常见的网页反爬措施及应对方法

一、封禁IP地址反爬 1、应对思路: 理解这种反爬方法的含义:当我们用自己电脑的ip地址短时间,高频率访问某个具有此类反爬设置的网站,这种网站就会把我们的ip地址封禁,一般都是封24小时或者其他时间。解决方案:通过代理ip访问,这种方式只不过就是让你有了重新访问网页的…

宝塔面板搭建thinkphp后请求中去除index.php后缀

宝塔面板搭建thinkphp后请求中去除index.php后缀 nginx配置 在宝塔面板网站中绑定thinkphp的public&#xff0c;添加站点 点击站点设置按钮打开项目设置页面 找到配置文件 选项&#xff0c;然后在 22行 后添加一下代码 location / {if (!-f $request_filename) {rewrite …

一学就会----链表的中间节点

文章目录 题目描述思路代码示例在原题上增加难度思路代码示例 题目描述 给定一个头结点为 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 图片示例&#xff1a; 思路 因为这道题目并没有时间复杂度的规定&#xf…

iOS17beta有哪些Bug?iOS17值得升级吗?iOS17Bug大汇总!

iOS17Beta已上线几天&#xff0c;带来了新增横屏待机、“嘿Siri”去除了“嘿”、联系人海报、NameDrop等新功能。 做为第一个beta版本&#xff0c;避免不了许多Bug的出现。 小编收集了目前体验遇到和网上反馈的所有BUG&#xff0c;还没更新iOS17的小伙伴们可以看看截止目前升级…