首页 > 其他分享 >ArgoCD 同步配置

ArgoCD 同步配置

时间:2023-12-12 18:12:01浏览次数:29  
标签:同步 false 示例 配置 ArgoCD io true spec argoproj

自动同步策略

当 Argo CD 检测到 Git 中所需的清单与集群中的实时状态之间的差异时,它能够自动同步应用程序。自动同步的好处是 CI/CD 管道不再需要直接访问 Argo CD API 服务器来执行部署。相反,管道会提交并推送到 Git 存储库,并对跟踪 Git 存储库中的清单进行更改。

Prune Resource

集群上某个资源在GitRepo中找不到对应的配置时,自动删除集群上的该资源。

Self-Healing

因各种原因(如手动修改)集群上资源的实时状态而导致与GitRepo不匹配时,自动将实际状态与GitRepo的期望状态同步。

自动同步时间配置

自动同步间隔由 argocd-cm ConfigMap 中的 timeout.reconciliation 值决定,默认为 180 秒(3 分钟)。

dashboard 选项

同步选项

dashboard 选项

Prune 

资源修剪。可选值:true,false。推荐值:true。

配置示例

metadata:
  annotations:
    argocd.argoproj.io/sync-options: Prune=false

Validation

是否执行资源规范格式的校验,相当于“kubectl apply --validate={true|false}”,默认为true。

配置示例

metadata:
  annotations:
    argocd.argoproj.io/sync-options: Validate=false

SkipDryRunOnMissingResource

跳过测试新的自定义类型的资源。

配置示例

metadata:
  annotations:
    argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true

ApplyOutOfSyncOnly

仅对那些处于OutOfSync状态的资源执行同步操作。

配置示例

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  syncPolicy:
    syncOptions:
    - ApplyOutOfSyncOnly=true

PrunePropagationPolicy

资源修剪传播策略,默认使用foreground(前台执行)策略,另外可选的策略还有background(后台执行)和orphan(在新的管理接口执行)。

配置示例

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  syncPolicy:
    syncOptions:
    - PrunePropagationPolicy=foreground

PruneLast

在同步操作的最后再执行修剪操作,即其它资源已经部署且转为健康状态后再进行Prune。

配置示例

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  syncPolicy:
    syncOptions:
    - PruneLast=true

or

metadata:
  annotations:
    argocd.argoproj.io/sync-options: PruneLast=true

Replace

对资源的修改,以replace方式进行,而非默认的apply。

配置示例

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  syncPolicy:
    syncOptions:
    - Replace=true

or

metadata:
  annotations:
    argocd.argoproj.io/sync-options: Replace=true

FailOnSharedResource

默认的同步操作不会考虑GitRepo中定义的资源是否已经被其它Application所使用。将该选项设置为true,意味着在发现资源已经被其它Application所使用时,则将同步状态设置为fail。

配置示例

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  syncPolicy:
    syncOptions:
    - FailOnSharedResource=true

RespectIgnoreDifferences

在同步阶段忽略期望状态的字段。

配置示例

apiVersion: argoproj.io/v1alpha1
kind: Application
spec:

  ignoreDifferences:
  - group: "apps"
    kind: "Deployment"
    jsonPointers:
    - /spec/replicas

  syncPolicy:
    syncOptions:
    - RespectIgnoreDifferences=true

CreateNamespace

创建缺失的名称空间。

配置示例

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  namespace: test
spec:
  syncPolicy:
    managedNamespaceMetadata:
      labels: # The labels to set on the application namespace
        any: label
        you: like
      annotations: # The annotations to set on the application namespace
        the: same
        applies: for
        annotations: on-the-namespace
    syncOptions:
    - CreateNamespace=true

ServerSideApply

资源太大,无法容纳允许的 262144 字节注释大小。在这种情况下,可以使用服务器端应用来避免此问题,因为在这种情况下不使用注释。
修补集群上未完全由 Argo CD 管理的现有资源。
使用更具声明性的方法,跟踪用户的字段管理,而不是用户上次应用的状态。
ServerSideApply 还可以通过提供部分 yaml 来修补现有资源。例如,如果需要仅更新给定 Deployment 中的副本数量,则可以向 Argo CD 提供以下 yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  syncPolicy:
    syncOptions:
    - ServerSideApply=true
    - Validate=false

Delete

对于某些资源,即使您的应用程序被删除,您可能也希望保留它们,例如。Persistent Volume Claims。在这种情况下,您可以使用以下注释来阻止在应用程序删除期间清理这些资源:

配置上示例

metadata:
  annotations:
    argocd.argoproj.io/sync-options: Delete=false

配置示例

 

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: ''
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  destination:
    name: ''
    namespace: ''
    server: 'https://kubernetes.default.svc'
  source:
    path: ''
    repoURL: ''
    targetRevision: HEAD
    directory:
      recurse: false
      jsonnet:
        tlas: []
  sources: []
  project: ''
  syncPolicy:
    automated:
      prune: false
      selfHeal: false
    syncOptions:
      - Validate=true
      - PruneLast=false
      - RespectIgnoreDifferences=false
      - CreateNamespace=true
      - ApplyOutOfSyncOnly=true
      - ServerSideApply=false

参考文档

https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/

标签:同步,false,示例,配置,ArgoCD,io,true,spec,argoproj
From: https://www.cnblogs.com/wangguishe/p/17897322.html

相关文章

  • 在Windows 10上安装和配置EasyGUI库的步骤
     EasyGUI是一个方便易用的Python库,可以帮助开发者快速构建图形用户界面(GUI)应用程序。下面是在Windows10上安装和配置EasyGUI库的步骤: 1.安装Python: 首先,确保你的Windows10系统已经安装了Python解释器。 2.安装pip: 在Windows10上,可以通过以下步骤安装pip包管理器: -打开命......
  • Mac 配置Sencha环境(Ext JS6)
    1.下载安装包地址:SenchaCmdDownload-SenchaCmdLatestVersion下载所需的版本 2.解压,安装3.配置环境变量vim~/.bash_profile  添加一行环境变量(根据你自己的安装目录修改变量):exportPATH=${PATH}:/Users/你的user名/bin/Sencha/Cmd/6.5.3.6 修改完成后,保......
  • 【Centos】Centos 7.6 配置内存交换区
    1  前言嘿嘿,双十二搞活动了,兄弟们,看便宜买了一台腾讯云的,我本身已经有一台2C2G的了,上边部署的微服务,主要是熟悉微服务的体系,什么注册中心、配置中心、数据库、XXL-JOB、Redis基础设施就一堆,还有我的微服务四个中心一个应用,实在是不堪重负,这不是搞活动,正好再来一台,一台用来部署......
  • 思科wlc使用windows radius 认证配置
    原贴https://www.cnblogs.com/sanjiu/p/14131980.html思科wlc使用windowsradius认证配置  目录一      需求介绍:...2二      实验环境:...2三      windows环境安装...33.1     第一步,安装windows环境。...33.2     第......
  • uboot移植及图形化配置
    一、编译通过官方的uboot,修改uboot,参考文档一些配置文件,lcd、网络配置二、图形化配置界面1.指定默认配置文件makemx6ull_alientek_emmc_defconfig2.打开图形化配置界面makemenuconfig3.完成配置后编辑完成之后要保存好当前的配置文件如./configs/test_defconfigsave ......
  • Cordova环境配置
    Cordova热更新插件:https://github.com/nordnet/cordova-hot-code-pushCordova热更新工具:https://github.com/nordnet/cordova-hot-code-push-cli一.Cordova环境配置 1.安装node.js =>网址:https://nodejs.org/en/检测:node-v 2.安装npm =>检测版本:npm-v 3.安装jdk,配......
  • nsis常用配置项
    nsis:{ "oneClick":false,//创建一键安装程序还是辅助安装程序(默认是一键安装)"allowElevation":true,//是否允许请求提升,如果为false,则用户必须使用提升的权限重新启动安装程序(仅作用于辅助安装程序)"allowToChangeInstallationDirectory":true,//是否允许......
  • Unity3D帧同步的原理以及项目开发中可能遇到的问题与解决方案
    一、Unity3D帧同步的原理帧同步是指将游戏中的每一帧的状态数据同步给所有的客户端,使得所有客户端的游戏画面都保持一致。在Unity3D中,帧同步一般分为两种模式:客户端模式和服务器模式。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开......
  • 【新工具】从零配置Vim+Latex提升写作效率(Windows)
    1.首先安装gvimwelcomehome:vimonline2.接着安装vimplugGitHub-junegunn/vim-plug::hibiscus:MinimalistVimPluginManager或终端直接运行iwr-usebhttps://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim|`ni$HOME/vimfiles/autoload/plu......
  • 在CentOS7等老系统上配置clangd进行C/C++开发
    应该有许多公司开发机器上还是用着比较老的环境,比如CentOS7之类的。这类系统上很可能他的glibc的版本不到2.18,clangd要求的最低glibc版本就是2.18,因此我们没办法直接在这类老系统上运行clangd。但是vscode上微软的那个c++插件一坨史,慢不说,补全也差劲。我的要求有几点:不能升级......