Chart.yaml 檔案作用
- name: [必須] Chart的名稱
- version: [必須] Chart的版本號,版本號必須符合 SemVer 2:http://semver.org/
- description: [可選] Chart的簡要描述
- keywords: - [可選] 關鍵字串列,便于檢索
- home: [可選] 專案地址
- sources: - [可選] 當前Chart的下載地址串列
charts依賴
可以在requirements.yaml里去配置它的依賴關系, 它支持兩種方式表示依賴關系,可以使用requirements.yaml或者直接將依賴的Chart放置到charts目錄中,
dependencies:
- name: mariadb
version: 7.x.x
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
tags:
- wordpress-database
templates 目錄
templates目錄下的yaml檔案,遵循Go template語法,使用過Hugo的靜態網站生成工具的人應該對此很熟悉,
templates目錄中存放了Kubernetes部署檔案的模版,比如deployment.yaml,service.yaml等,它里面參考的變數來自values.yaml里
- 生成最終的yaml檔案-文本對齊
{{ include "test" | indent 4}} - 生成最終的yaml檔案-去除空行
{{- define "test" -}}模版內容{{- end -}} - 變數(默認值)的使用
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
上面的{{ .Values.image.repository }}表示values.yaml檔案里的image節點下的repository元素的內容
資料卷Volume、資料卷宣告VolumeClaim
k8s應用(包括有狀態跟無狀態應用),需要使用資料卷的話,需要在存盤卷中進行設定和宣告,下面列出持久化資料卷的宣告跟設定的模板:
資料卷設定:
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
資料卷宣告:
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 }}
伸縮配置 HorizontalPodAutoscaler
應用彈性伸縮配置,這個可以配置最大、最小副本集跟伸縮條件的引數到values.yaml檔案里面
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 -伸縮條件
配置項ConfigMap
配置項設定,一般每個專案有都對應的環境引數,比如:資料庫、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 -}}
鏡像密碼配置Secret
將鏡像的密碼配置到保密字典中
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檔案的模板,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/14122.html
標籤:其他
上一篇:Markdown寫作教程
