24.云原生ArgoCD高级之钩子

news2024/11/15 23:30:21

云原生专栏大纲

文章目录

  • Argo CD钩子
    • 如何定义钩子
    • 钩子删除策略

Argo CD钩子

Argo CD 是一个用于部署和管理 Kubernetes 应用程序的工具,它提供了一种声明式的方式来定义和自动化应用程序的部署过程。Argo CD 钩子(Hooks)是一种机制,允许在部署过程中执行自定义的操作。
image.png
Argo CD 钩子可以在以下几个阶段执行:

  1. PreSync 钩子:在同步操作之前执行。可以用于在同步应用程序之前执行一些准备工作,例如创建必要的资源或检查先决条件。(可以在部署应用前,执行数据库迁移或初始化)
  2. Sync 钩子:在同步操作期间执行。可以用于在同步应用程序期间执行一些操作,例如修改配置、应用变换或执行其他自定义逻辑。
  3. PostSync 钩子:在同步操作之后执行。可以用于在同步应用程序之后执行一些清理工作或触发其他操作。(集成监控和健康检查等)
  4. SyncFaild钩子:在同步失败后执行,可以数据清理、逻辑终结、应用回滚等操作

如何定义钩子

参考https://github.com/ppsite/argocd-in-action
image.png

argocd.argoproj.io/hook: PreSync定义钩子执行阶段,多个阶段用","逗号分隔

apiVersion: batch/v1
kind: Job
metadata:
  name: app-wxwork
  annotations:
    # 指定钩子阶段
    argocd.argoproj.io/hook: PostSync
    # 钩子删除策略
    argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
  template:
    spec:
      containers:
      - name: wxwork-notification
        image: curlimages/curl
        # 下述钩子通知企业微信发布完成
        command:
          - "curl"
          - "--request"
          - "POST"
          - "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b291a492-62be-406a-9b65-13cd2061045b"
          - "--header"
          - "'Content-Type: application/json'"
          - "--data-raw"
          - "{\"msgtype\": \"text\",\"text\": {\"content\": \"hello world\"}}"
      restartPolicy: Never
  backoffLimit: 1

钩子删除策略

在 Argo CD 中,可以使用钩子(hook)来在应用程序部署的不同阶段执行自定义操作。钩子可以用于在部署之前或之后运行脚本、命令或其他操作。当应用程序被删除时,也可以使用钩子来执行清理操作。删除钩子的策略可以通过 Argo CD 应用程序的配置进行设置。
Argo CD 提供了以下几种钩子删除策略选项:

  1. BeforeHookCreation: 在创建钩子之前删除旧的钩子。这是默认的删除策略,它会在创建新钩子之前删除先前的钩子。
  2. HookSucceeded: 仅当钩子成功执行后才删除旧的钩子。这种策略适用于需要确保钩子成功执行后再删除旧钩子的情况。
  3. HookFailed: 仅当钩子执行失败后才删除旧的钩子。这种策略适用于需要在钩子执行失败时保留旧钩子的情况。
  4. HookSucceededOrFailed: 无论钩子成功还是失败,都删除旧的钩子。这种策略适用于无论钩子执行结果如何,都希望删除旧钩子的情况。

钩子删除策略可以在 Argo CD 应用程序的配置文件(例如 YAML 文件)中设置。例如,以下是一个应用程序配置文件的示例,其中设置了钩子删除策略为 HookSucceeded:

apiVersion: batch/v1
kind: Job
metadata:
  name: app-wxwork
  annotations:
    # 指定钩子阶段
    argocd.argoproj.io/hook: PostSync
    # 钩子删除策略
    argocd.argoproj.io/hook-delete-policy: HookSucceeded

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

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

相关文章

Damn Small Linux 停更16年后,2024 回归更新

Damn Small Linux(DSL) 发行版释出了最新的 2024 版本,并重新定义了什么叫“Damn Small”。 DSL 诞生于 2005 年,原本是尝试提供一个 50MB 大小的 LiveCD,2008 年开发停滞。 2024 年原作者 John Andrews 宣布 DSL 复活,在几乎所…

springboot基础案例(二)

文章目录 前言一.需求分析: 分析这个项目含有哪些功能模块二.库表设计(概要设计): 1.分析系统有哪些表 2.分析表与表关系 3.确定表中字段(显性字段 隐性字段(业务字段))2.1 创建一个库: ems-thymeleaf2.2 创建 2张表三.编码(环境搭建)1.创建一个springboot项目 项目名字: ems-t…

【IDEA】反编译Jar包

反编译步骤 使用IDEA安装decompiler插件 找到decompiler插件文件夹所在位置(IDEA安装路径/plugins/java-decompiler/lib ),将需要反编译的jar包放到decompiler插件文件夹下,并创建一个空的文件夹,用来存放反编译后的…

Docker 有哪些常见的用途?

Docker 是一种容器化技术,它允许应用程序在不同的环境之间具有一致的运行环境。这使得 Docker 在开发和运维领域中非常受欢迎,因为它简化了应用程序的部署和管理。以下是 Docker 的一些常见用途: 快速部署应用程序 Docker 允许开发人员和运…

【TCP】高频面试题

前言 在IT行业的求职过程中,传输控制协议(TCP)作为网络通信的核心协议之一,其相关面试题常常出现在各大公司面试中。TCP的稳定性和可靠性是支撑互联网数据传输的基石,因此,对TCP有深入理解不仅能够帮助求职…

Linux大集合

Linux Linux是什么? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、 支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和 64位硬件。 Linux内核 是一个Linux系统…

Backtrader 文档学习- Sizers

Backtrader 文档学习- Sizers 1.概述 智能仓位 Strategy提供了交易方法,即:buy,sell和close。看一下buy的定义: def buy(self, dataNone,sizeNone, priceNone, plimitNone,exectypeNone, validNone, tradeid0, **kwargs):注意&…

电路设计(13)——生产线易拉罐自动计数装置的proteus仿真

1.设计要求 使用指定元件,用模电、数电等有关知识,设计并制作一个易拉罐饮料计数自动化的模拟装置。生产单位常采用红外自动计数装置,将装有饮料的易拉罐放在马达带动的传动带上,在传动带运动的过程中让每个易拉罐依次同一方向地穿…

Linux第43步_移植ST公司uboot的第4步_uboot测试

uboot移植结束后,需要进行测试。 1、烧录程序 1)、将STM32MP157开发板的网络接口与路由器的网络接口通过网线连接起来。 2)、将开发板的串口和电脑通过USB线连接起来。 3)、将开发板的USB OTG接口和电脑通过USB线连接起来。 4)、将开发板上拨码开关拨到“000”…

RTthread线程间通信(邮箱,消息队列,信号/软件中断)---01实际使用API函数

layout: post title: “RT-Thread线程间通信” date: 2024-2-5 15:39:08 0800 tags: RT-Thread 线程间通信 这一篇是实际使用, 代码分析看后面的文章 一般可以使用全局变量以及线程间同步进行实现 RT-Thread也提供了一部分的通信机制 邮箱 一个线程发送, 另外的线程接受信息…

二叉树的最近公共祖先,力扣

目录 题目地址: 题目: 审题目事例提示: 解题方法: 解题分析: 解题思路: 代码实现: 补充说明: 代码优化: 代码实现(存储父节点) : 题目地址: 236. 二叉树的最近…

人工智能的运维服务有哪些?智能化运维发展方向有哪些

当前人工智能运维服务的主要类型和特点?智能化运维的未来发展趋势,包括但不限于技术进步、行业应用以及潜在的挑战和机遇。 目前人工智能运维服务的主要类型和优点包括: 基于规则的专家系统:根据事先定义的规则和逻辑进行故障检测和处理。特…

linux centos 安装teleport

效果 安装 1.创建目录 mkdir -p /opt/teleport/data cd /opt/teleport/2.下载解压文件 wget https://tp4a.com/static/download/teleport-server-linux-x64-3.6.4-b3.tar.gz tar -xvf teleport-server-linux-x64-3.6.4-b3.tar.gz3.安装 cd /opt/teleport/teleport-server-l…

每日一题来啦!请查收~(至少是其他数字两倍,两个数组的交集)

今天要写的题目有哪些呢&#xff1f; 747. 至少是其他数字两倍的最大数 - 力扣&#xff08;LeetCode&#xff09; int dominantIndex(int* nums, int numsSize) {int max0;maxnums[0];int index0;for(int i1;i<numsSize;i){if(nums[i]>max){maxnums[i];indexi;i;//找出最…

c++之说_12|模板

关于模板&#xff0c;至少我们要先了解几个概念 一&#xff1a;函数模板 二&#xff1a;类模板 三&#xff1a;模板特化 四&#xff1a;形参参数包 模板覆盖的东西太多 我目前也不了解太多 函数模板 语法 template<typename 类型名,typename 类型名,typename ...多参…

KMP算法|next指针|详细讲解学习

KMP 算法介绍 KMP 算法是基于串的朴素模式匹配算法优化的。 串的朴素模式匹配算法是将主串中所有的与模式串长度相等的子串与模式串进行比较&#xff0c;如果模式串与进行比较的的子串相等&#xff0c;就匹配成功&#xff0c;否则匹配失败。 在 KMP 算法的理解的基础上&#x…

SpringFramework实战指南(六)

SpringFramework实战指南(六) 4.4 基于 配置类 方式管理 Bean4.4.1 完全注解开发理解4.4.2 实验一:配置类和扫描注解4.4.3 实验二:@Bean定义组件4.4.4 实验三:高级特性:@Bean注解细节4.4.5 实验四:高级特性:@Import扩展4.4.6 实验五:基于注解+配置类方式整合三层架构组…

C#(C Sharp)学习笔记_前言及Visual Studio Code配置C#运行环境【一】

前言 这可以说是我第一次正式的踏入C#的学习道路&#xff0c;我真没想过我两年前是怎么跳过C#去学Unity3D游戏开发的&#xff08;当然了&#xff0c;游戏开发肯定是没有成功的&#xff0c;都是照搬代码&#xff09;。而现在&#xff0c;我真正地学习一下C#&#xff0c;就和去年…

调和平均

L1-4 调和平均 分数 10 作者 陈越 单位 浙江大学 N 个正数的算数平均是这些数的和除以 N&#xff0c;它们的调和平均是它们倒数的算数平均的倒数。本题就请你计算给定的一系列正数的调和平均值。 输入格式&#xff1a…

Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ①

&#x1f4c1; 前情提要&#xff1a; Springboot 整合 Elasticsearch&#xff08;一&#xff09;&#xff1a;Linux下安装 Elasticsearch 8.x Springboot 整合 Elasticsearch&#xff08;二&#xff09;&#xff1a;使用HTTP请求来操作ES 目录 一、Springboot 整合 Elasticsea…