能夠在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文件的模板。