Helm 模板流程控制

Helm 的模板语言提供了多种控制结构,以允许模板作者根据条件逻辑生成模板内容。以下是 Helm 模板控制结构的核心内容总结:

控制结构

Helm 模板支持以下控制结构:

  • if/else:用于创建条件语句,根据给定的条件包含或排除模板中的文本块。
  • with:用于指定作用域,改变当前作用域(.)的上下文。
  • range:提供“for each”类型的循环,用于迭代集合,如列表、元组、映射或字典。

命名模板

除了控制结构,Helm 还提供了声明和使用命名模板的关键字:

  • define:在模板中声明一个新的命名模板。
  • template:导入一个命名模板。
  • block:声明一种特殊的可填充的模板块。

条件语句 (if/else)

if/else 结构允许执行管道操作,而不仅仅是计算值。以下值被视为 false

  • 布尔值 false
  • 数字 0
  • 空字符串
  • nil(空或 null)
  • 空集合(如 map, slice, tuple, dict, array

示例

[root@master ~]# tail -5 python-flask/values.yamlaffinity: {}
favorite:drink: coffeefood: pizza[root@master ~]# cat python-flask/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}-configmap
data:myvalue: "Hello World"drink: {{ .Values.favorite.drink | default "tea" | quote }}food: {{ .Values.favorite.food | upper | quote }}{{ if eq .Values.favorite.drink "coffee" }}mug: "true"{{ end }}

结果

# Source: python-flask/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: geared-marsupi-configmap
data:myvalue: "Hello World"drink: "coffee"food: "PIZZA"mug: "true"

YAML文件中空格是有意义的,因此管理空格变得很重要。这里把缩进去掉就执行成功了。

作用域 (with)

with 语句可以改变当前作用域,使得模板中的 . 指向特定的对象。这允许模板作者在不重复前缀的情况下引用对象的字段。

循环 (range)

range 操作符允许对集合进行迭代,每次迭代 . 都会指向当前迭代的元素。这使得模板能够为集合中的每个元素生成内容。

空格控制

Helm 模板中的空格控制非常重要,因为 YAML 格式中空格是有意义的。Helm 提供了特殊的语法来控制空格:

  • {{-:表示左侧的空格应该被删除。
  • -}}:表示右侧的空格应该被删除。

正确管理空格可以避免生成无效的 YAML 文件。

示例

[root@master ~]# cat python-flask/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}-configmap
data:myvalue: "Hello World"drink: {{ .Values.favorite.drink | default "tea" | quote }}food: {{ .Values.favorite.food | upper | quote }}{{ if eq .Values.favorite.drink "coffee" }}mug: "true" # 此处多了空格{{ end }}

结果

[root@master ~]# helm install geared-marsupi ./python-flask  --dry-run --debug -n default
install.go:214: [debug] Original chart version: ""
install.go:231: [debug] CHART PATH: /root/python-flaskError: INSTALLATION FAILED: YAML parse error on python-flask/templates/configmap.yaml: error converting YAML to JSON: yaml: line 9: did not find expected key
helm.go:84: [debug] error converting YAML to JSON: yaml: line 9: did not find expected key

实例应用

通过 ifwithrange,模板可以动态地根据 values.yaml 中定义的值来生成 Kubernetes 配置文件。例如,可以根据不同条件设置 ConfigMap 的数据字段,或者根据列表生成复杂的多行字符串。

结论

掌握 Helm 模板的控制结构对于创建灵活且动态的 Kubernetes 部署配置文件至关重要。这些控制结构提供了强大的工具,以适应不同的部署需求和条件。

更多详细信息和高级用法可以在 Helm 的官方文档中找到。

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

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

相关文章

力扣刷题Day5——内涵动态规划讲解

题目1: 先来一道很简单的题目: 2697. 字典序最小回文串 - 力扣(LeetCode) 思路: 为了得到字典序最小的回文字符串,对于回文串,就是需要左右的字符相等,而要最小的回文串&#xff…

从开发角度理解漏洞成因(03)

文章目录 JS前端验证 - 文件上传设计浏览器禁用JS,前端绕过文件上传漏洞验证漏洞 Ajax 登录验证,状态回显,状态码设计修改返回包绕过登录验证 通过Ajax 传递数据进行购物验证设计1此漏洞也可以修改状态码绕过 持续更新中… 文章中代码资源已上…

Codeforces Round 943 (Div. 3) A~G1

A.Maximize?&#xff08;枚举&#xff09; 题意&#xff1a; 给你一个整数 x x x。你的任务是找出任意一个整数 y y y ( 1 ≤ y < x ) (1\le y\lt x) (1≤y<x)&#xff0c;使得 gcd ⁡ ( x , y ) y \gcd(x,y)y gcd(x,y)y为最大可能数。 ( 1 ≤ y < x ) (1\le y\lt…

深入解析Python中的`add_argument`用法

深入解析Python中的add_argument用法 在Python编程中&#xff0c;add_argument通常与命令行参数解析库argparse有关。这个库主要用于编写用户友好的命令行接口&#xff0c;其核心功能之一就是通过add_argument方法来指定程序可以接受哪些命令行参数。本篇博客将详细介绍argpar…

【算法练级js+java】重复给定字符n次

题目 Repeats the given string n times.&#xff08;复制指定的字符串n次&#xff09; 期望结果 /** * Repeats the given string n times. * * repeat(‘, 3) * // > **’ * * repeat(‘abc’, 2) * // > ‘abcabc’ * * repeat(‘abc’, 0) * // > “” **/ 代码…

【自动驾驶|毫米波雷达】逻辑化讲清快时间与慢时间傅里叶变换

碎碎念&#xff1a;实习过程中发现在进行雷达知识交流时&#xff0c;大部分同事都会用英文简称代替中文的一些称呼&#xff0c;比如Chirp、FFT等等。起初我觉得是因为很多英伟达、TI芯片的开发教程都是英文的&#xff0c;所以看得多了大家都习惯这样称呼&#xff0c;后来在和指…

CSGO游戏搬砖:导致Steam账号红锁的原因有哪些?

CSGO游戏搬砖&#xff1a;哪些行为容易导致steam账号红锁&#xff1f; 1、第一点&#xff0c;毫无疑问&#xff0c;就是挂箱了&#xff0c;最近很多挂箱工作室都被集体献祭了。有工作室甚至被红了上百万&#xff0c;惨不忍睹&#xff0c;还好我们不是挂箱的&#xff0c;当然&am…

python爬虫学习------scrapy第三部分(第三十一天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

Sarcasm detection论文解析 |使用 BERT 进行中间任务迁移学习的刺检测

论文地址 论文地址&#xff1a;https://www.mdpi.com/2227-7390/10/5/844#/ github&#xff1a;edosavini/TransferBertSarcasm (github.com) 论文首页 笔记框架 使用 BERT 进行中间任务迁移学习的讽刺检测 &#x1f4c5;出版年份:2022 &#x1f4d6;出版期刊:Mathematics &…

如何利用AI提高内容生产效率

目录 一、自动化内容生成 二、内容分发与推广 三、内容分析与优化 图片来源网络&#xff0c;侵权联系可删 一、自动化内容生成 随着AI技术的飞速发展&#xff0c;自动化内容生成已经成为提高内容生产效率的重要手段。AI可以通过自然语言处理&#xff08;NLP&#xff09;、机…

参数服务器

参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点也可以往其中存储数据。 参数服务器&#xff0c;一般适用于存在数据共享…

linux的Wget命令下载文件示例

wget 是一个从网络上自动下载文件的命令行工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。它是一个非交互式工具,非常适合通过脚本或者在命令行终端中使用以及后台执行下载。 apt install wget 01、单个文件下载 该命令将下载单个文…

鸿蒙内核源码分析(特殊进程篇)

三个进程 鸿蒙有三个特殊的进程&#xff0c;创建顺序如下: 2号进程&#xff0c;KProcess&#xff0c;为内核态根进程.启动过程中创建.0号进程&#xff0c;KIdle为内核态第二个进程&#xff0c;它是通过KProcess fork 而来的.这有点难理解.1号进程&#xff0c;init&#xff0c…

【2024最新华为OD-C卷试题汇总】游戏表演赛分队(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; 文章目录 前…

VS编辑器下使用MFC完成数据相册系统

背景&#xff1a; 实验项目8:数字相册系统 (2周) (一)实验目的 通过该实验&#xff0c;使学生掌握windows程序设计的基本方法。了解相册的基本功能&#xff0c;在传统相册的基础上&#xff0c; 通过应用时钟、图形绘制功能、图形文件的读写功能以及数据库技术&#xff0c;实现对…

MySQL删除大批量表的数据

先删表后建表 -- 删除表 DROP TABLE table_name;-- 创建表 CREATE TABLE table_name ( ... );使用DROP TABLE&#xff1a;这种方式删除数据也比较快&#xff0c;直接删除整个表结构和数据。但是&#xff0c;这个操作不能回滚&#xff0c;约束和索引会释放&#xff0c;需要重新…

AI模型:windows本地运行下载安装ollama运行Google CodeGemma可离线运行数据模型【自留记录】

AI模型&#xff1a;windows本地运行下载安装ollama运行Google CodeGemma可离线运行数据模型【自留记录】 CodeGemma 没法直接运行&#xff0c;需要中间软件。下载安装ollama后&#xff0c;使用ollama运行CodeGemma。 类似 前端本地需要安装 node.js 才可能跑vue、react项目 1…

2024 年你不懂使用了索引反而变慢如何排查你就 OUT 啦

可以用过 MySQL 的执行计划来查看索引是否有用 explain {SQL语句}&#xff0c;主要观察几个点&#xff1a; type&#xff08;访问类型&#xff09;&#xff1a;这个属性显示了查询使用的访问方法&#xff0c;例如 ALL、index、range 等。当查询使用索引时&#xff0c;这个属性…

智慧农场系统应该具有哪些模块

传感器网络模块&#xff1a;通过在农田、设施、养殖场等关键位置布置各种传感器&#xff0c;如土壤湿度传感器、温度传感器、光照强度传感器、空气湿度传感器、二氧化碳浓度传感器等&#xff0c;实现对环境参数的实时监测和数据采集。数据采集与传输模块&#xff1a;该模块负责…

JS各种概念

/纯函数&#xff08;Pure Function&#xff09;&#xff1a;一个纯函数的输出只取决于输入参数&#xff0c;不会改变任何外部状态或产生副作用。 // 纯函数示例function add(a, b) {return a b;} 副作用&#xff08;Side Effect&#xff09;&#xff1a;在函数执行期间对外部…