k8s中Chart的命名模板

Chart的命名模板

命名模板有时候也被称为部分或子模板。

相对于 deployment.yaml 这种主模板,命名模板只是定义部分通用内容,然后在各个主模板中调用。

templates目录下有个_helpers.tpl文件。公共的命名模板都放在这个文件里。

命名模板使用 define 来定义。

如,这里先简单定义一个只包含字符串的模板,用作资源名称。

cat >  templates/_helpers.tpl <<EOF
{{/* 定义资源名称 */}}
{{ define "mytest.name" -}}
tanglinux
{{- end }}
EOF

使用template引用

cat > templates/test.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:name: {{ template "mytest.name" }}labels:app: {{ .Values.myname }}
EOF

渲染

helm template testrelease .

include用法:

cat >  templates/_helpers.tpl <<EOF
{{/* 定义资源名称 */}}
{{ define "mytest.name" -}}
tanglinux
{{- end }}{{/* 定义label */}}
{{- define "mytest.label" -}}
app: {{ .Release.Name }}
release: stable
env: qa
{{- end }}
EOF

在template的yaml文件里调用

cat > templates/test.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:name: test-{{ template "mytest.name" . }}labels:{{- include "mytest.label" . | nindent 4 }}
EOF

渲染

helm template testrelease .

自定义Chart实战

1)创建chart包

helm create tanglinux

2)自定义templates模板文件

删除掉默认的模板文件

cd  tanglinux
rm -rf  templates/*

生成一个deployment模板

kubectl create deployment tanglinux --image=nginx:1.23.2 -o yaml --dry-run > templates/deployment.yaml

修改deployment.yaml

vi templates/deployment.yaml #改成如下内容
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: {{ .Values.appname }}                  #将values.yaml中的appname对应的变量值渲染在这里name: tanglinux
spec:replicas: {{ .Values.replicas }}              #将values.yaml中的replicas对应的变量值渲染在这里selector:matchLabels:app: {{ .Values.appname }}                #标签可以和资源名称一样,因此也可以直接调用appname变量template:metadata:labels:app: {{ .Values.appname }}              #标签可以和资源名称一样,因此也可以直接调用appname变量spec:containers:- image: {{ .Values.image }}:{{ .Values.imageTag }}               #将values.yaml中的image、imageTag对应的变量值渲染在这里,表示镜像的版本号name: {{ .Values.appname }}                     #容器的名称也和资源的名称保持一致即可command: [ "/bin/sh","-c","/data/init.sh" ]ports:- name: webcontainerPort: 80protocol: TCPvolumeMounts:- name: codemountPath: /data/code/tanglinux- name: configmountPath: /data/nginx/conf/conf.d/volumes:  - name: configconfigMap:name: {{ .Values.appname }}-cm                              #confimap的名字也可以使用程序名称的变量加上-cm- name : codepersistentVolumeClaim:claimName: {{ .Values.appname }}-pvc                #pvc的名字也可以使用程序名称的变量加上-pvreadOnly: false    

编辑svc模板

vi templates/service.yaml ##写入如下内容
apiVersion: v1
kind: Service
metadata:labels:app: {{ .Values.appname }}                  #service要管理deployment的pod资源,因此这里的标签要和pod资源的标签对应上,直接调用appname这个变量name: {{ .Values.appname }}-svc               #service资源的名称,也可以直接调用appname这个变量,后面加一个-svc
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: {{ .Values.appname }}                  #标签选择器还是调用appname这个变量type: NodePort

编辑configmap模板

vi templates/configmap.yaml  ##写入如下内容
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Values.appname }}-cm                        #引入appname变量加上-cm作为cm资源的名称
data:test.tanglinux.com.conf: |server {listen 80;server_name test.tanglinux.com;location / {root /data/code/tanglinux;index index.html;}}

编辑pv/pvc模板

vi templates/pv-pvc.yaml #内容如下
apiVersion: v1
kind:  PersistentVolume
metadata:name: {{ .Values.appname }}-pv                        #引入appname变量加上-pv作为pv资源的名称labels:pv: {{ .Values.appname }}-pv                        #标签也可以使用和pv名称一样的名字
spec:capacity:storage: 2GiaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: Retainnfs:path: {{ .Values.nfsPath }}                         #这里会引入nfsPath变量的值server: {{ .Values.nfsServer }}                     #这里会引入nfsServer变量的值
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: {{ .Values.appname }}-pvc                       #引入appname变量加上-pvc作为pvc资源的名称
spec:accessModes:- ReadWriteManyresources:requests:storage: 2Giselector:matchLabels:pv: {{ .Values.appname }}-pv                      #指定pv的标签

定义values.yaml

vi  values.yaml #内容如下
appname: tanglinux
replicas: 2
image: tanglinux/helm-custom-chart  ##这是一个测试的镜像
imageTag: v0
nfsPath: /data/nfs/tanglinux  ##这个目录需要提前创建好
nfsServer: 192.168.222.99

注意:假定NFS服务器已经搭建好了

3)安装chart

helm install tanglinux-release .

4)查看svc

kubectl get svc

5)到NFS服务器上创建一个测试页

echo "This is a test site." > /data/nfs/tanglinux/index.html

6)浏览器访问

http://192.168.222.131:32745

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

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

相关文章

Python中最常用的10个内置函数!

Python作为一种多用途编程语言&#xff0c;拥有丰富的内置函数库&#xff0c;这些函数可以极大地提高开发效率。本文将介绍Python中最常用的10个内置函数&#xff0c;它们的功能各有不同&#xff0c;但在实际编程中经常派上用场。我们将深入了解每个函数&#xff0c;并提供示例…

解锁高效工作!5款优秀工时管理软件推荐

工时管理&#xff0c;一直是让许多企业和团队头疼的问题。传统的纸质工时表、复杂的电子表格&#xff0c;不仅操作繁琐&#xff0c;还容易出错。幸好&#xff0c;随着科技的进步&#xff0c;我们迎来了工时管理软件的春天。今天&#xff0c;就让我们一起走进这个新时代&#xf…

2016年第五届数学建模国际赛小美赛B题直达地铁线路解题全过程文档及程序

2016年第五届数学建模国际赛小美赛 B题 直达地铁线路 原题再现&#xff1a; 在目前的大都市地铁网络中&#xff0c;在两个相距遥远的车站之间运送乘客通常需要很长时间。我们可以建议在两个长途车站之间设置直达班车&#xff0c;以节省长途乘客的时间。   第一部分&#xf…

【银行测试】银行金融测试+金融项目测试点汇总...

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

EOCR-i3M420/iFM420施耐德智能通讯保护继电器产品简介

EOCR-i3M420/iFM420是施耐德EOCR的新一代电子式电动机保护器产品&#xff0c;具有过电流、欠电流、缺相、逆相、堵转、失速、三相不平衡等保护功能&#xff0c;并具有4-20mA电流输出功能。EOCR-i3M420/iFM420是通讯型产品&#xff0c;提供Modbus RTU通讯协议&#xff0c;RS485接…

从零实现一套低代码(保姆级教程) --- 【3】实现Button组件和画布区的拖拽

摘要 目前是每天更新一篇&#xff0c; 因为我不止要写文章&#xff0c;这些代码也是我正在敲的。可能速度没有那么快&#xff0c;但是这个频率感觉还是可以的。 本篇是这个系列的第三篇&#xff0c;如果你是第一次看到这个文章&#xff0c;那你应该会对低代码有那么一丢丢兴趣…

中小型教育网络安全解决方案

热门IT技术视频教程&#xff1a;https://xmws-it.blog.csdn.net/article/details/134398330?spm1001.2014.3001.5502 一、中小型教育网络的安全现状及挑战 当前&#xff0c;校园网的安全形势非常严峻&#xff0c;大量的垃圾邮件、黑客攻击、病毒蠕虫等困扰着管理者。而且这些作…

福建农林大学 html +css + JavaScript 期末复习 -- 保姆级

html css JavaScript 期末复习&#xff08;保姆级复盘&#xff09; 考试题型 1、选择题 20题 30分 2、判断题 15题 15分 3、程序题 3 题 30分 4、综合题 2 题 25分 1、网页第一代文本标签&#xff08;直接上代码&#xff0c;看保姆级注解&#xff09; <!-- doctype: docum…

ArcGIS基础:便捷查看外业照片及识别举证照片方位角

打开工具&#xff1a;【地理标记照片转点】。 打开工具后&#xff0c;输入文件夹&#xff0c;并对相应的参数进行勾选。 右键&#xff0c;图层属性&#xff0c;打开【显示】&#xff0c;对【超链接】设置等参数进行勾选。 找到【符号系统】&#xff0c;点击【高级】&#xff…

Linux基本内容学习

Linux 命令 文件命令 命令释义语法格式lslist&#xff0c;用于显示目录中文件及其属性信息ls [参数名] [文件名]cdchange directory&#xff0c;用于更改当前所处的工作目录&#xff0c;路径可以是绝对路径&#xff0c;也可以是相对路径&#xff0c;若省略不写则会跳转至当前…

[前端]模块化开发

[前端]模块化开发 为什么需要模块化开发模块化开发的目标模块化开发的演化文件划分方案对象封装方案立即执行函数 模块化开发规范CommonJS 规范特点定义模块全局对象 global导出模块(变量或方法)导入模块 AMD 规范特点定义模块导出模块(变量或方法)导出对象导出函数导出符合 Co…

自媒体新手如何写出爆款公众号文章

今天跟大家分享一下&#xff0c;作为新手怎么样写出一篇阅读量过万的公众号的文章。 我的公众号是从2020年开始写的&#xff0c;写到今天差不多三年多一点。然后现在的粉丝数虽然不多&#xff0c;但也差不多近两千个了。 我这三年多差不多更新了150篇原创文章。刚开始的时候写的…

Nature Commun.:物理所揭示原子分辨下的铁电涡旋畴的原位力学转变过程

通过复杂的晶格-电荷相互作用形成的铁电涡旋畴在纳米电子器件研发中具有巨大的应用潜力。实际应用中&#xff0c;如何在外界激励下操纵这类结构的拓扑状态是至关重要的。中国科学院物理研究所/北京凝聚态物理国家研究中心表面物理国家重点实验室与北京大学、湘潭大学和美国宾夕…

Jwt工具类

导入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version> </dependency> <dependency><groupId>javax.xml.bind</groupId><artifactId>jax…

关于时区处理策略

前端会通过 App-Id 请求头附带 客户端时区 信息 前端传入的如果是 字符串&#xff0c;会自动根据 请求的客户端时区 解析为对应的 日期 如果前端传入的是时间戳&#xff0c;则无需额外解析转换 如果是 商户后台、管理后台 都统一基于 商户所在国家的时区&#xff08;总台目前…

设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列

文章目录 前言一、什么是6大设计原则&#xff1f;以及它们的使用场景&#xff1f;1.单一职责原则 (Single Responsibility Principle, SRP)&#xff1a;3.依赖倒置原则 (Dependency Inversion Principle, DIP)&#xff1a;4.接口隔离原则 (Interface Segregation Principle, IS…

文化旅游数据合集,多个数据分享~有图有数据

本周我们将分享一类数据分析常用的数据类型——文化旅游&#xff0c;这里将我们目前所上线的文化旅游类相关数据进行汇总&#xff0c;后续也会持续更新~ 1、全国博物馆数据 基本信息. 数据名称: 全国博物馆数据 数据格式: shpexcel 数据几何类型: 点 数据坐标系: WGS84 …

【MYSQL】MYSQL 的学习教程(五)之 MySQL 索引底层:B+ 树详解

1. 树 树跟数组、链表、堆栈一样&#xff0c;是一种数据结构。它由有限个节点&#xff0c;组成具有层次关系的集合。因为它看起来像一棵树&#xff0c;所以得其名。一颗普通的树如下: 关于树的概念&#xff1a; 结点的度&#xff1a;一个结点含有的子结点个数称为该结点的度树…

C/C++ 块作用域的静态变量static的应用

块作用域的静态变量 静态变量(static variable)听起来自相矛盾&#xff0c;像是一个不可变的变量。实际上&#xff0c;静态的意思是该变量在内存中原地不动&#xff0c;并不是说它的值不变。具有文件作用域的变量自动具有&#xff08;也必须是&#xff09;静态存储器。创建的具…

小红书kos和kop有什么区别,营销玩法有哪些

相信熟悉媒介传播的朋友&#xff0c;对于kol和koc都不陌生。但随着平台的发展和市场的进步&#xff0c;又出现了kos和kop。那么小红书kos和kop有什么区别&#xff0c;营销玩法有哪些&#xff1f; 一、什么是kos和kop KOS&#xff0c;全称叫做Key Opinion Sales&#xff0c;意思…