能够在requirements.yaml里去配置它的依赖关系, 它支持两种方式表示依赖关系,能够使用requirements.yaml或者直接将依赖的Chart放置到charts目录中。redis
dependencies: - name: mariadb version: 7.x.x repository: https://kubernetes-charts.storage.googleapis.com/ condition: mariadb.enabled tags: - wordpress-database
templates目录下的yaml文件,遵循Go template语法。使用过Hugo的静态网站生成工具的人应该对此很熟悉。
templates目录中存放了Kubernetes部署文件的模版,好比deployment.yaml,service.yaml等,它里面引用的变量来自values.yaml里docker
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
上面的{{ .Values.image.repository }}
表示values.yaml文件里的image节点下的repository元素的内容数据库
k8s应用(包括有状态跟无状态应用),须要使用数据卷的话,须要在存储卷中进行设置和声明,下面列出持久化数据卷的声明跟设置的模板:json
数据卷设置:api
apiVersion: v1 kind: PersistentVolume -这里说明是持久化数据卷 metadata: finalizers: - kubernetes.io/pv-protection labels: alicloud-pvname: {{ .Values.volumes.name }} -数据卷标签,eg:XXX-data name: {{ .Values.volumes.name }} -数据卷名称,eg:XXX-data spec: accessModes: - ReadWriteMany -权限 capacity: storage: {{ .Values.volumes.storage }} -容量大小,eg:10Gi flexVolume: driver: alicloud/nas -数据卷类型是nas options: path: {{ .Values.volumes.path }} -数据卷路径,eg:/tmp server: {{ .Values.volumes.server }} -数据卷服务商,eg:xxxxx.nas.aliyuncs.com vers: '3' persistentVolumeReclaimPolicy: Retain storageClassName: nas
数据卷声明:app
apiVersion: v1 kind: PersistentVolumeClaim -持久化数据卷声明 metadata: annotations: pv.kubernetes.io/bind-completed: 'yes' pv.kubernetes.io/bound-by-controller: 'yes' finalizers: - kubernetes.io/pvc-protection name: {{ .Values.volumes.name }} spec: accessModes: - ReadWriteMany resources: requests: storage: {{ .Values.volumes.storage }} -容量,eg:10Gi selector: matchLabels: alicloud-pvname: {{ .Values.volumes.name }} storageClassName: nas volumeName: {{ .Values.volumes.name }}
应用弹性伸缩配置,这个能够配置最大、最小副本集跟伸缩条件的参数到values.yaml文件里面wordpress
kind: HorizontalPodAutoscaler apiVersion: autoscaling/v1 metadata: name: {{ include "admin.appname" . }}-hpa -admin.appname就是后面执行helm命令的时候倒数第二个参数,为何前面是admin呢,admin就是你配置Chart.yaml的时候里面的name变量的值 spec: scaleTargetRef: kind: Deployment name: {{ include "admin.appname" . }} apiVersion: apps/v1beta2 minReplicas: 1 -最小副本集 maxReplicas: 10 -最大副本集 targetCPUUtilizationPercentage: 70 -伸缩条件
配置项设置,通常每一个项目有都对应的环境参数,好比:数据库、redis等这些帐号密码类的参数,这些能够抽离出来当成一个配置项处理工具
apiVersion: v1 kind: ConfigMap metadata: name: {{ .Values.envConfigName }} -每一个环境就配置一个配置项 data: {{- range $k, $v := .Values.configDatas }} -这里是循环遍历configDatas这个变量 {{ $k | indent 2 }}.yml: >- -下面这两行配置一个key->value的配置项(即文件名->文件内容) {{ $v | indent 4 }} {{- end -}}
将镜像的密码配置到保密字典中flex
apiVersion: v1 kind: Secret metadata: name: image-secret -name随意写 data: .dockerconfigjson: {{ .Files.Get "image.pwd" | b64enc }} -内容 type: kubernetes.io/dockerconfigjson
TLs证书配置(后面配置ingress的时候要用到,否则没法用https)网站
apiVersion: v1 kind: Secret metadata: name: tls-secret data: tls.crt: {{ .Files.Get "XXXXX.com.pem" | b64enc }} tls.key: {{ .Files.Get "XXXXX.com.key" | b64enc }} type: Opaque
下次主要说一下几个重要的yaml文件的模板。