德阳网站开发,聚名网评价,中企动力做网站 知乎,百度指数怎么看地域数据Chart的命名模板
命名模板有时候也被称为部分或子模板。
相对于 deployment.yaml 这种主模板#xff0c;命名模板只是定义部分通用内容#xff0c;然后在各个主模板中调用。
templates目录下有个_helpers.tpl文件。公共的命名模板都放在这个文件里。
命名模板使用 define…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 tanglinux2自定义templates模板文件
删除掉默认的模板文件
cd tanglinux
rm -rf templates/*生成一个deployment模板
kubectl create deployment tanglinux --imagenginx: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 svc5到NFS服务器上创建一个测试页
echo This is a test site. /data/nfs/tanglinux/index.html6浏览器访问
http://192.168.222.131:32745