kubernetes实战篇之helm示例yaml文件文件详细介绍
前面完整示例里,我們主要講解helm打包,部署,升級,回退等功能,關于這里面的文件只是簡單介紹,這一節我們詳細介紹一下這里面的文件,以方便我們參照創建自己的helm chart.
Helm Chart 結構
Chart 目錄結構
mychart/ Chart.yaml LICENSE README.md values.yaml requirements.yaml charts/ templates/ templates/NOTES.txt默認生成的chart如果沒有修改是沒有這么多的.
Chart.yaml 文件
name: [必須] Chart的名稱version: [必須] Chart的版本號,版本號必須符合 SemVer 2:http://semver.org/description: [可選] Chart的簡要描述keywords: - [可選] 關鍵字列表,便于檢索home: [可選] 項目地址sources: - [可選] 當前Chart的下載地址列表maintainers: - name: [必須] 名字 email: [可選] 郵箱engine: gotplicon: [可選] 一個SVG或PNG格式的圖片地址requirements.yaml 和 charts目錄
requirements.yaml 文件內容:
dependencies: - name: example version: 1.2.3 repository: http://example.com/charts - name: Chart名稱 version: Chart版本 repository: 該Chart所在的倉庫地址Chart支持兩種方式表示依賴關系,可以使用requirements.yaml或者直接將依賴的Chart放置到charts目錄中。
templates 目錄
templates目錄中存放了Kubernetes部署文件的模版。
例如:
模版語法擴展了 golang/text/template的語法:
# 這種方式定義的模版,會去除test模版尾部所有的空行{{- define "test"}}模版內容{{- end}} # 去除test模版頭部的第一個空行{{- template "test" }}用于yaml文件前置空格的語法:
# 這種方式定義的模版,會去除test模版頭部和尾部所有的空行{{- define "test" -}}模版內容{{- end -}} # 可以在test模版每一行的頭部增加4個空格,用于yaml文件的對齊{{ include "test" | indent 4}}創建自己的chart
我們創建一個名為mongodb的chart,看一看chart的文件結構
$ helm create mongodb$ tree mongodbmongodb├── Chart.yaml├── charts├── templates│ ├── NOTES.txt│ ├── _helpers.tpl│ ├── deployment.yaml│ └── service.yaml└── values.yaml 2 directories, 6 files模板
Templates目錄下是yaml文件的模板,遵循Go template語法。使用過Hugo的靜態網站生成工具的人應該對此很熟悉。
我們查看下deployment.yaml文件的內容。
apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: {{ template "fullname" . }} labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"spec: replicas: {{ .Values.replicaCount }} template: metadata: labels: app: {{ template "fullname" . }} spec: containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - containerPort: {{ .Values.service.internalPort }} livenessProbe: httpGet: path: / port: {{ .Values.service.internalPort }} readinessProbe: httpGet: path: / port: {{ .Values.service.internalPort }} resources:{{ toyaml .Values.resources | indent 12 }}這是該應用的Deployment的yaml配置文件,其中的雙大括號包擴起來的部分是Go template,其中的Values是在values.yaml文件中定義的:
replicaCount: 1image: repository: nginx tag: stable pullPolicy: IfNotPresentservice: name: nginx type: ClusterIP externalPort: 80 internalPort: 80resources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128Mi比如在Deployment.yaml中定義的容器鏡像image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"其中的:
.Values.image.repository就是nginx
.Values.image.tag就是stable
以上兩個變量值是在create chart的時候自動生成的默認值
原文地址:https://www.cnblogs.com/tylerzhou/p/11141538.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的kubernetes实战篇之helm示例yaml文件文件详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用.NET Core实现一个类似于饿了吗
- 下一篇: GRPC与.net core