内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

helm模板文件chart編寫語法詳解

charts編寫介紹

開始

快速創(chuàng)建一個chart模板,helm create mychart,執(zhí)行命令后本地生成一個mychart目錄.

創(chuàng)新互聯(lián)自2013年起,先為蓬萊等服務建站,蓬萊等地企業(yè),進行企業(yè)商務咨詢服務。為蓬萊企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

chart目錄結(jié)構(gòu)

  • Chart.yaml: 該chart的描述文件,包括ico地址,版本信息等
  • vakues.yaml: 給模板文件使用的變量
  • charts: 依賴其他包的charts文件
  • requirements.yaml: 依賴的charts
  • README.md: 開發(fā)人員自己閱讀的文件
  • templates: 存放k8s模板文件目錄
    • NOTES.txt 說明文件,helm install之后展示給用戶看的內(nèi)容
    • deployment.yaml 創(chuàng)建k8s資源的yaml文件
    • _helpers.tpl: 下劃線開頭的文件,可以被其他模板引用.

一個最小的chart目錄,只需要包含一個Chart.yaml,和templates目錄下一個k8s資源文件.如:

    # mychart/Chart.yaml
    apiVersion: v1
    appVersion: 2.9.0
    version: 1.1.1

    # mychart/templates/configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mychart-configmap
    data:
      myvalue: "Hello World"

helm的模板語法實現(xiàn)原理:

- go-template雙
- sprig

helm模板語法

  1. 模板引用方式,{{ .Release.Name }}, 通過雙括號注入,小數(shù)點開頭表示從最頂層命名空間引用.

  2. helm內(nèi)置對象
    # Release, release相關(guān)屬性
    # Chart, Chart.yaml文件中定義的內(nèi)容
    # Values, values.yaml文件中定義的內(nèi)容
  3. 模板中使用管道
    apiVersion: v1
    kind: ConfigMap
    metadata:
       name: {{ .Release.Name }}-configmap
    data:
      myvalue: "Hello World"
      drink: {{ .Values.favorite.drink | repeat 5 | quote }}
      food: {{ .Values.favorite.food | upper | quote }}
  4. if語句
    {{ if PIPELINE }}
    # Do something
    {{ else if OTHER PIPELINE }}
    # Do something else
    {{ else }}
    # Default case
    {{ end }}
  5. 操作符, and/eq/or/not

    {{/* include the body of this if statement when the variable .Values.fooString exists and is set to "foo" */}}
    {{ if and .Values.fooString (eq .Values.fooString "foo") }}
        {{ ... }}
    {{ end }}
    
    {{/* do not include the body of this if statement because unset variables evaluate to false and .Values.setVariable was negated with the not function. */}}
    {{ if or .Values.anUnsetVariable (not .Values.aSetVariable) }}
       {{ ... }}
    {{ end }}
  6. 控制語句塊在渲染后生成模板會多出空行,需要使用{{- if ...}}的方式消除此空行.如:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Release.Name }}-configmap
    data:
      myvalue: "Hello World"
      {{- if eq .Values.favorite.drink "coffee"}}
      mug: true
      {{- end}}
  7. 引入相對命名空間,with命令:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Release.Name }}-configmap
    data:
      myvalue: "Hello World"
      {{- with .Values.favorite }}
      drink: {{ .drink | default "tea" | quote }}
      food: {{ .food | upper | quote }}
      {{- end }}
  8. range命令實現(xiàn)循環(huán),如:

    # values.yaml
    favorite:
      drink: coffee
      food: pizza
    pizzaToppings:
      - mushrooms
      - cheese
      - peppers
      - onions
    
    #configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Release.Name }}-configmap
    data:
      myvalue: "Hello World"
      toppings: |-
        {{- range .Values.pizzaToppings }}
        - {{ . }}
        # .表示range的命令空間下的取值
        {{- end }}
        {{- range $key, $val := .Values.favorite }}
        {{ $key }}: {{ $val | quote }}
        {{- end}} 
  9. 變量賦值
    ApiVersion: v1
    Kind: ConfigMap
    Metadata:
      name: {{ .Release.Name }}-configmap
    Data:
      myvalue: "Hello World"
      # 由于下方的with語句引入相對命令空間,無法通過.Release引入,提前定義relname變量
      {{- $relname := .Release.Name -}}
      {{- with .Values.favorite }}
      food: {{ .food }}
      release: {{ $relname }}
      # 或者可以使用$符號,引入全局命名空間
      release: {{ $.Release.Name }}
      {{- end }}
  10. 公共模板,define定義,template引入,在templates目錄中默認下劃線_開頭的文件為公共模板(_helpers.tpl)

    # _helpers.tpl文件
    {{- define "mychart.labels" }}
      labels:
        generator: helm
        date: {{ now | htmlDate }}
    {{- end }}
    
    # configmap.yaml文件
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Release.Name }}-configmap
      {{- template "mychart.labels" }}
    data:
      myvalue: "Hello World"
  11. template語句的升級版本include,template是語句無法在后面接管道符來對引入變量做定義,
    include實現(xiàn)了此功能.

    # _helpers.tpl文件
    {{- define "mychart.app" -}}
    app_name: {{ .Chart.Name }}
    app_version: "{{ .Chart.Version }}+{{ .Release.Time.Seconds }}"
    {{- end -}}
    
    # configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Release.Name }}-configmap
      labels:
        {{- include "mychart.app" . | nindent 4 }}
    data:
      myvalue: "Hello World"
      {{- range $key, $val := .Values.favorite }}
      {{ $key }}: {{ $val | quote }}
      {{- end }}
      {{- include "mychart.app" . | nindent 2 }}
    
    # 如果使用template只能手動空格,不能使用管道后的nindent函數(shù)來做縮進
  12. 一個坑helm install stable/drupal --set image=my-registry/drupal:0.1.0 --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt] --set livenessProbe.httpGet=null<br/>,livenessProbe在values.yaml中定義了httpGet,需要手動設置為null,然后設置exec的探針.

網(wǎng)站欄目:helm模板文件chart編寫語法詳解
瀏覽地址:http://m.rwnh.cn/article4/jcgioe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、虛擬主機網(wǎng)站設計公司、電子商務、動態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
四子王旗| 河北省| 佛学| 台北市| 水城县| 商南县| 嘉鱼县| 平湖市| 兴国县| 全椒县| 东乡族自治县| 固始县| 石狮市| 汉寿县| 武山县| 青龙| 白山市| 左贡县| 武冈市| 岢岚县| 巨鹿县| 建昌县| 康马县| 彭州市| 宝坻区| 新巴尔虎左旗| 锡林郭勒盟| 江川县| 广元市| 四会市| 交口县| 永福县| 乌兰浩特市| 天长市| 安泽县| 新竹县| 杨浦区| 桓仁| 商洛市| 龙川县| 新平|