日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Helm — Chart介绍

發(fā)布時(shí)間:2023/12/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Helm — Chart介绍 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • Charts
    • Charts 結(jié)構(gòu)
      • Chart.yaml
      • Chart 類(lèi)型
      • Chart 依賴
      • Templates and Values
        • 模板文件
        • Values文件
    • Hook 機(jī)制
    • 內(nèi)置對(duì)象
      • Release
      • Values
      • Chart
      • Files
      • Capabilities
      • Template

Charts

Charts描述的是一組k8s資源相關(guān)的文件集合,用戶可以通過(guò)簡(jiǎn)單地修改一些參數(shù)使得helm部署的應(yīng)用符合我們的要求。

Charts 結(jié)構(gòu)

wordpress/Chart.yaml # 包含了chart信息的YAML文件LICENSE # 可選: 包含chart許可證的純文本文件README.md # 可選: 可讀的README文件values.yaml # chart 默認(rèn)的配置值values.schema.json # 可選: 一個(gè)使用JSON結(jié)構(gòu)的values.yaml文件charts/ # 包含chart依賴的其他chartcrds/ # 自定義資源的定義templates/ # 模板目錄, 當(dāng)和values 結(jié)合時(shí),可生成有效的Kubernetes manifest文件templates/NOTES.txt # 可選: 包含簡(jiǎn)要使用說(shuō)明的純文本文件
  • templates/ 目錄包括了模板文件。安裝應(yīng)用時(shí),helm會(huì)將用戶設(shè)置的參數(shù)值通過(guò)模板引擎渲染到模板文件里,然后再將渲染后的結(jié)果發(fā)送給kubernetes。
  • values.yaml 這個(gè)文件包含了chart的 默認(rèn)值 。這些值會(huì)在用戶執(zhí)行 helm install 或 helm upgrade 時(shí)被相應(yīng)的命令行參數(shù)覆蓋。
  • Chart.yaml 文件包含了該chart的描述。你可以從模板中訪問(wèn)它。charts/目錄可以包含其他的chart。

Chart.yaml

apiVersion: The chart API version (required) name: The name of the chart (required) version: A SemVer 2 version (required) kubeVersion: A SemVer range of compatible Kubernetes versions (optional) description: A single-sentence description of this project (optional) type: The type of the chart (optional) keywords:- A list of keywords about this project (optional) home: The URL of this projects home page (optional) sources:- A list of URLs to source code for this project (optional) dependencies: # A list of the chart requirements (optional)- name: The name of the chart (nginx)version: The version of the chart ("1.2.3")repository: (optional) The repository URL ("https://example.com/charts") or alias ("@repo-name")condition: (optional) A yaml path that resolves to a boolean, used for enabling/disabling charts (e.g. subchart1.enabled )tags: # (optional)- Tags can be used to group charts for enabling/disabling togetherimport-values: # (optional)- ImportValues holds the mapping of source values to parent key to be imported. Each item can be a string or pair of child/parent sublist items.alias: (optional) Alias to be used for the chart. Useful when you have to add the same chart multiple times maintainers: # (optional)- name: The maintainers name (required for each maintainer)email: The maintainers email (optional for each maintainer)url: A URL for the maintainer (optional for each maintainer) icon: A URL to an SVG or PNG image to be used as an icon (optional). appVersion: The version of the app that this contains (optional). Needn't be SemVer. Quotes recommended. deprecated: Whether this chart is deprecated (optional, boolean) annotations:example: A list of annotations keyed by name (optional).

Chart 類(lèi)型

type字段定義了chart的類(lèi)型。有兩種類(lèi)型: application 和 library。 application 是默認(rèn)類(lèi)型,是可以完全操作的標(biāo)準(zhǔn)chart。 庫(kù)類(lèi)型 chart 提供針對(duì)chart構(gòu)建的實(shí)用程序和功能。 庫(kù)類(lèi)型chart與應(yīng)用類(lèi)型chart不同,因?yàn)樗荒馨惭b,通常不包含任何資源對(duì)象。
應(yīng)用類(lèi)型chart 可以作為庫(kù)類(lèi)型chart使用??梢酝ㄟ^(guò)將類(lèi)型設(shè)置為 library來(lái)實(shí)現(xiàn)。 然后這個(gè)庫(kù)就被渲染成了一個(gè)庫(kù)類(lèi)型chart,所有的實(shí)用程序和功能都可以使用。所有的資源對(duì)象不會(huì)被渲染。

Chart 依賴

Helm 中,chart可能會(huì)依賴其他任意個(gè)chart。 這些依賴可以使用Chart.yaml文件中的dependencies 字段動(dòng)態(tài)鏈接,或者被帶入到charts/ 目錄并手動(dòng)配置。

dependencies:- name: apacheversion: 1.2.3repository: https://example.com/charts- name: mysqlversion: 3.2.1repository: https://another.example.com/charts
  • name字段是你需要的chart的名稱
  • version字段是你需要的chart的版本
  • repository字段是chart倉(cāng)庫(kù)的完整URL。必須使用helm repo add在本地添加倉(cāng)庫(kù)
  • 你可以使用倉(cāng)庫(kù)的名稱代替URL
$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com dependencies:- name: awesomenessversion: 1.0.0repository: "@fantastic-charts"

一旦你定義好了依賴,運(yùn)行 helm dependency update 就會(huì)使用你的依賴文件下載所有你指定的chart到你的charts/目錄。

當(dāng) helm dependency update 拉取chart時(shí),會(huì)在charts/目錄中形成一個(gè)chart包。因此對(duì)于上面的示例,會(huì)在chart目錄中期望看到以下文件

charts/apache-1.2.3.tgzmysql-3.2.1.tgz

Templates and Values

Helm Chart 模板是按照 Go 模板語(yǔ)言書(shū)寫(xiě), 增加了50個(gè)左右的附加模板函數(shù), 這些函數(shù)來(lái)自 Sprig 庫(kù)和一些其他 指定的函數(shù)。

所有模板文件存儲(chǔ)在chart的 templates/ 文件夾。 當(dāng)Helm渲染chart時(shí),它會(huì)通過(guò)模板引擎遍歷目錄中的每個(gè)文件。

模板的Value通過(guò)兩種方式提供:

  • Chart開(kāi)發(fā)者可以在chart中提供一個(gè)命名為 values.yaml 的文件。這個(gè)文件包含了默認(rèn)值。
  • Chart用戶可以提供一個(gè)包含了value的YAML文件??梢栽诿钚惺褂?helm install命令時(shí)提供。

當(dāng)用戶提供自定義value時(shí),這些value會(huì)覆蓋chart的values.yaml文件中value。

模板文件

模板文件遵守書(shū)寫(xiě)Go模板的標(biāo)準(zhǔn)慣例.

示例:

apiVersion: v1 kind: ReplicationController metadata:name: deis-databasenamespace: deislabels:app.kubernetes.io/managed-by: deis spec:replicas: 1selector:app.kubernetes.io/name: deis-databasetemplate:metadata:labels:app.kubernetes.io/name: deis-databasespec:serviceAccount: deis-databasecontainers:- name: deis-databaseimage: {{ .Values.imageRegistry }}/postgres:{{ .Values.dockerTag }}imagePullPolicy: {{ .Values.pullPolicy }}ports:- containerPort: 5432env:- name: DATABASE_STORAGEvalue: {{ default "minio" .Values.storage }}

Values文件

針對(duì)前面部分的模板,values.yaml文件提供的必要值如下:

imageRegistry: "quay.io/deis" dockerTag: "latest" pullPolicy: "Always" storage: "s3"

然后在模板文件中使用.Values對(duì)象就可以任意訪問(wèn)這些值了

注意:chart包含的默認(rèn)values文件必須被命名為values.yaml。不過(guò)在命令行可以通過(guò)-f指定其他文件。

Hook 機(jī)制

Helm 提供了一個(gè) hook 機(jī)制允許chart開(kāi)發(fā)者在發(fā)布生命周期的某些點(diǎn)進(jìn)行干預(yù)。比如你可以使用hook用于:

  • 安裝時(shí)在加載其他chart之前加載配置映射或密鑰
  • 安裝新chart之前執(zhí)行備份數(shù)據(jù)庫(kù)的任務(wù),然后在升級(jí)之后執(zhí)行第二個(gè)任務(wù)用于存儲(chǔ)數(shù)據(jù)。
  • 在刪除發(fā)布之前執(zhí)行一個(gè)任務(wù)以便在刪除服務(wù)之前退出滾動(dòng)。

helm定義了以下hook:

  • pre-install 在模板渲染之后,Kubernetes資源創(chuàng)建之前執(zhí)行
  • post-install 在所有資源加載到Kubernetes之后執(zhí)行
  • pre-delete 在Kubernetes刪除之前,執(zhí)行刪除請(qǐng)求
  • post-delete 在所有的版本資源刪除之后執(zhí)行刪除請(qǐng)求
  • pre-upgrade 在模板渲染之后,資源更新之前執(zhí)行一個(gè)升級(jí)請(qǐng)求
  • post-upgrade 所有資源升級(jí)之后執(zhí)行一個(gè)升級(jí)請(qǐng)求
  • pre-rollback 在模板渲染之后,資源回滾之前,執(zhí)行一個(gè)回滾請(qǐng)求
  • post-rollback 在所有資源被修改之后執(zhí)行一個(gè)回滾請(qǐng)求
  • test 調(diào)用Helm test子命令時(shí)執(zhí)行 ( test文檔)

示例:

apiVersion: batch/v1 kind: Job metadata:name: "some-job"labels:app.kubernetes.io/managed-by: {{ .Release.Service | quote }}app.kubernetes.io/instance: {{ .Release.Name | quote }}app.kubernetes.io/version: {{ .Chart.AppVersion }}helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"annotations:# This is what defines this resource as a hook. Without this line, the# job is considered part of the release.# 在所有資源加載到Kubernetes之后執(zhí)行"helm.sh/hook": post-install# 可以為鉤子定義權(quán)重,這有助于建立一個(gè)確定性的執(zhí)行順序"helm.sh/hook-weight": "-5"# 定義策略來(lái)決定何時(shí)刪除對(duì)應(yīng)的鉤子資源"helm.sh/hook-delete-policy": hook-succeeded...此處省略...

內(nèi)置對(duì)象

Release

Release對(duì)象描述了版本發(fā)布本身

  • Release.Name: release名稱
  • Release.Namespace: 版本中包含的命名空間(如果manifest沒(méi)有覆蓋的話)
  • Release.IsUpgrade: 如果當(dāng)前操作是升級(jí)或回滾的話,該值將被設(shè)置為true
  • Release.IsInstall: 如果當(dāng)前操作是安裝的話,該值將被設(shè)置為true
  • Release.Revision: 此次修訂的版本號(hào)。安裝時(shí)是1,每次升級(jí)或回滾都會(huì)自增
  • Release.Service: 該service用來(lái)渲染當(dāng)前模板

Values

Values對(duì)象是從values.yaml文件和用戶提供的文件傳進(jìn)模板的。默認(rèn)為空

Chart

Chart.yaml 文件內(nèi)容。 Chart.yaml里的所有數(shù)據(jù)在這里都可以可訪問(wèn)的。比如 {{ .Chart.Name }}-{{ .Chart.Version }} 會(huì)打印出 mychart-0.1.0

Files

在chart中提供訪問(wèn)所有的非特殊文件的對(duì)象。你不能使用它訪問(wèn)Template對(duì)象,只能訪問(wèn)其他文件。

  • Files.Get 通過(guò)文件名獲取文件的方法。 (.Files.Get config.ini)
  • Files.GetBytes 用字節(jié)數(shù)組代替字符串獲取文件內(nèi)容的方法。 對(duì)圖片之類(lèi)的文件很有用
  • Files.Glob 用給定的shell glob模式匹配文件名返回文件列表的方法
  • Files.Lines 逐行讀取文件內(nèi)容的方法。迭代文件中每一行時(shí)很有用
  • Files.AsSecrets 使用Base 64編碼字符串返回文件體的方法
  • Files.AsConfig 使用YAML格式返回文件體的方法

Capabilities

  • Capabilities.APIVersions 是一個(gè)版本列表
  • Capabilities.APIVersions.Has $version 說(shuō)明集群中的版本 (比如,batch/v1) 或是資源 (比如, apps/v1/Deployment) 是否可用
  • Capabilities.KubeVersion 和Capabilities.KubeVersion.Version 是Kubernetes的版本號(hào)
  • Capabilities.KubeVersion.Major Kubernetes的主版本
  • Capabilities.KubeVersion.Minor Kubernetes的次版本
  • Capabilities.HelmVersion 包含Helm版本詳細(xì)信息的對(duì)象,和 helm version 的輸出一致
  • Capabilities.HelmVersion.Version 是當(dāng)前Helm語(yǔ)義格式的版本
  • Capabilities.HelmVersion.GitCommit Helm的git sha1值
  • Capabilities.HelmVersion.GitTreeState 是Helm git樹(shù)的狀態(tài)
  • Capabilities.HelmVersion.GoVersion 是使用的Go編譯器版本

Template

包含當(dāng)前被執(zhí)行的當(dāng)前模板信息

  • Template.Name: 當(dāng)前模板的命名空間文件路徑 (e.g. mychart/templates/mytemplate.yaml)
  • Template.BasePath: 當(dāng)前chart模板目錄的路徑 (e.g. mychart/templates)

總結(jié)

以上是生活随笔為你收集整理的Helm — Chart介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。