Helmドキュメント-Chartテンプレートチュートリアル:初心者向け

13926 ワード

初心者入門
このセクションのチュートリアルでは、chartを作成し、テンプレートを追加します.ここで作成したchartは、チュートリアルの残りの部分を貫通します.始める前に、まず簡単にHelm Chartを見てみましょう.
Charts
Chartsチュートリアルで説明したように、Helm chartsの構造は次のようになります.
mychart/
  Chart.yaml
  values.yaml
  charts/
  templates/
  ...
  • templatesディレクトリtemplateファイルを格納する場所.Helmがchartを計算すると、templateディレクトリの下のすべてのファイルがテンプレートレンダリングエンジン(template rendering engine)を介してHelmに送信されて計算されます.最終的にHelmはこれらのテンプレートの結果を収集し、Kubernetesに送信します.
  • values.yamlファイルはテンプレートファイルにとって非常に重要です.このファイルにはchartのデフォルト値が含まれています.ユーザーがhelm instalまたはhelm upgradeコマンドを実行すると、これらのデフォルト値をリセットできます.
  • Chart.yamlファイルには、現在のchartの説明情報が含まれています.テンプレートでこれらの情報にアクセスすることもできます.
  • chartsディレクトリでは、他のcharts(サブchartsと呼ぶ)を含めることができます.このガイドの後部では、テンプレートレンダリング時にこれらがどのように動作するかを示します.

  • 最初のチャート
    このガイドでは、mychartという簡単なchartを作成し、このchartでテンプレートを作成します.
    $ helm create mychart
    Creating mychart
    

    これからは、mychartディレクトリの下に後続の操作があります.
    mychart/templates/ディレクトリをすばやく参照
    mychartの下のtemplatesディレクトリを見てみると、このディレクトリの下にすでにいくつかのファイルがあることがわかります.
  • NOTES.txt:あなたのchartのヘルプドキュメントです.ユーザーがhelm installコマンドを実行すると、このドキュメントの内容がユーザーに表示されます.
  • deployment.yaml:Kubernetes deploymentリソースを作成するための基本リストファイルです.
  • service.yaml:deploymentのserviceエンドポイントを作成する基本リストファイルです.
  • _helpers.tpl:テンプレートヘルプを配置する場所で、chart全体でこれらのテンプレートヘルプ
  • を繰り返し使用できます.
    次に私たちがしなければならないのは、すべてのファイルを削除することです!これにより、チュートリアルを最初から学ぶことができます.チュートリアルが進むにつれて、私たちは自分のNOTESを作成します.txtと_helpersファイル.
    $ rm -rf mychart/templates/*
    

    もちろん、本番レベルのchartを作成するときに、自動的に生成されるこれらの基本テンプレートファイルは非常に役に立ちます.日常的にchartを書く仕事では、削除しない可能性があります.
    最初のテンプレートファイル
    私たちが作成する最初のテンプレートはConfigMapです.Kubernetesでは、コンフィギュレーションデータを格納するためのコンテナにすぎません.他のもの、例えばpodsは、ConfigMapのデータにアクセスできます.ConfigMapsは基本的なリソースなので、私たちにとって良い出発点です.私が次に作成する最初のテンプレートはConfigMapです.Kubernetesでは、Configmapは皮抑制データを格納するための容器である.他のリソースオブジェクト、例えばpodsは、ConfigMapのデータにアクセスできます.ConfigMapは最も基本的なリソースの1つであり、定義が簡単であるため、私たちにとって良い出発点です.
    mychart/templates/ディレクトリの下にconfigmapという名前を作成し始めましょう.yamlのテンプレートファイルです.ファイルの内容は次のとおりです.
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mychart-configmap
    data:
      myvalue: "Hello World"
    

    TIPs:テンプレートファイルの命名には厳密な命名規則はありません.しかし、YAMLファイルの使用をお勧めします.yaml接尾辞は、ヘルプ(helpers)に使用されます.tpl接尾辞.
    上のYAMLファイルは簡単なConfigMapで、必要最小限のフィールドしかありません.このファイルはtemplates/ディレクトリにあるため、テンプレートエンジンで送信されます.
    このような普通のYAMLファイルをtemplates/ディレクトリに入れればいいです.Helmがテンプレートを読み込むと、単純にそのままKubernetesに送信されます.
    この簡単なテンプレートがあれば、インストール可能なchartがあります.次のコマンドを使用してインストールできます.
    $ helm install full-coral ./mychart
    NAME: full-coral
    LAST DEPLOYED: Tue Nov  1 17:36:01 2016
    NAMESPACE: default
    STATUS: DEPLOYED
    REVISION: 1
    TEST SUITE: None
    

    Helmを使用すると、パブリッシュされたreleaseを取得し、実際にロードされたテンプレートを表示できます.
    $ helm get manifest full-coral
    ---
    # Source: mychart/templates/configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mychart-configmap
    data:
      myvalue: "Hello World"
    

    helm get manifestコマンドの後ろにreleaseの名前が付いているので、サーバにアップロードされたKubernetesリソースをすべて印刷できます.各ファイルは-を先頭として、1つのYAMLドキュメントの開始を示し、2行目が自動的に生成されたコメントで、このYAMLドキュメントがどのテンプレートファイルに基づいて生成されたかを教えてくれます.
    上のコマンドの出力から、戻ってきたYAMLデータがconfigmapに置かれていることがわかります.yamlファイルの内容.
    上のrelease:$helm uninstall full-coralを削除するには、次のコマンドを使用します.
    単純なテンプレート呼び出しを追加
    リソースに名前をハードコーディングするのは、悪い実践経験とされています.releaseにとって名前は唯一でなければなりません.したがってrelease名を挿入して名前フィールドを生成することもできます.
    TIP:DNSドメイン名システムのため、nameフィールドの長さは63文字に制限されています.このためrelease名は53文字に制限されている.Kubernetes 1.3以降のバージョンは24文字に制限されています.
    ではconfigmap.yamlファイルの内容は以下に変更されました.
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: {{ .Release.Name }}-configmap
    data:
      myvalue: "Hello World"
    

    最大の変更点は,nameフィールドが{.Release.Name}−configmapテンプレート命令に変更され{と}}ブロックの間に含まれることである.
    テンプレート命令{.Release.Name}}はreleaseの名前をテンプレートに注入します.テンプレートに渡される値は、ポイント(.)で名前空間のあるオブジェクトと見なすことができます.各名前空間を区切る要素.
    Releaseの前の点(.)この役割ドメインの最上位レベルの名前空間から始まることを示します(役割ドメインについて少し議論します).私たちはRelease.Nameは、「一番上のネームスペースから、Releaseオブジェクトを見つけて、Nameという名前のオブジェクトを探します」と読みます.
    ReleaseはHelmの内蔵オブジェクトの1つで、後でもっと詳しく紹介します.ただし、{.Release.Name}}を呼び出すと、ライブラリから割り当てられたrelease名が表示されると説明すれば十分です.
    リソースをインストールすると、このテンプレートコマンドを使用した結果がすぐに表示されます.
    $ helm install clunky-serval ./mychart
    NAME: clunky-serval
    LAST DEPLOYED: Tue Nov  1 17:45:37 2016
    NAMESPACE: default
    STATUS: DEPLOYED
    REVISION: 1
    TEST SUITE: None
    

    現在、kubernetesのconfigmapの名前はclunky-serval-configmapであり、以前のmychart-configmapではありません.
    helm get manifest clunky-servalコマンドを実行することで、生成されたYAMLファイル全体を表示できます.
    ここで,テンプレートの最も基本的な部分として,{{と}}にテンプレート命令が埋め込まれたYAMLファイルを見た.次のセクションでは、テンプレートをより深く研究します.
    しかし、続行する前に、テンプレートの構築を高速化する方法があります.テンプレートのレンダリングをテストしたいが、実際に何もインストールされていない場合は、helm install--debug--dry-run good-guppy./を使用します.mychartコマンド.このコマンドはテンプレートをレンダリングしますが、chartは実際にインストールされず、レンダリングされたテンプレートを返します.したがって、次の出力が表示されます.
    $ helm install --debug --dry-run goodly-guppy ./mychart
    install.go:149: [debug] Original chart version: ""
    install.go:166: [debug] CHART PATH: /Users/ninja/mychart
    
    NAME: goodly-guppy
    LAST DEPLOYED: Thu Dec 26 17:24:13 2019
    NAMESPACE: default
    STATUS: pending-install
    REVISION: 1
    TEST SUITE: None
    USER-SUPPLIED VALUES:
    {}
    
    COMPUTED VALUES:
    affinity: {}
    fullnameOverride: ""
    image:
      pullPolicy: IfNotPresent
      repository: nginx
    imagePullSecrets: []
    ingress:
      annotations: {}
      enabled: false
      hosts:
      - host: chart-example.local
        paths: []
      tls: []
    nameOverride: ""
    nodeSelector: {}
    podSecurityContext: {}
    replicaCount: 1
    resources: {}
    securityContext: {}
    service:
      port: 80
      type: ClusterIP
    serviceAccount:
      create: true
      name: null
    tolerations: []
    
    HOOKS:
    MANIFEST:
    ---
    # Source: mychart/templates/configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: goodly-guppy-configmap
    data:
      myvalue: "Hello World"
    

    -dry-runを使用してコードをテストしますが、Kubernetes自体が生成したテンプレートを受け入れることはできません.dry-runが正常に動作するからといって、chartが正しくインストールされるとは思わないほうがいい.
    Chartテンプレートチュートリアルでは,ここで定義した基本chartを用い,Helmのテンプレート言語を詳細に検討した.次にhelmテンプレート言語の組み込みオブジェクトから始めます.
    本文は個人がHelm chartの過程の学習記録を学ぶためで、文章の内容はHelmの公式のドキュメントから翻訳して、もし翻訳の不当なところがあるならば、また教えてください.