ヘルムへの6分間の導入


Kubernetesアプリケーション管理の簡素化
pexelsによる写真.コム

After completing a 4-month period on a client’s project that included a complete migration from “raw” K8S-yaml-files to Helm Charts, I figured I need to put the things I’ve learned in writing for others to read, and for me to better learn.
This post is the little brother of my , make sure you read it first if you're not yet familiar with basic K8s concepts.


TLドクター


あなたのK 8 Sクラスタに依存性と独自のソフトウェアをインストールすることができます簡単です.helm install https://dev.to/prodopsio/an-8-minute-introduction-to-kubernetes-1oi/mysql , このような何百もの利用可能なインストールがありますが、また、あなた自身の製品/サービスでそれを行うことができます!

何がヘルムですか?

  • 「ヘルムマンかヘルム」は船、ヨット、潜水艦、他のタイプの海上船や宇宙船を操縦する人ですWikipedia
  • Kubernetesのパッケージマネージャー、Kerbernetes用に構築されたソフトウェアを見つけ、共有し、使用するための最良の方法ですHelm.sh
  • なぜ我々はそれが必要ですか?


    私はこの魔法のインストーラのことは私のKubernetesの生活をより良い方法を理解しようとして、私は何度も自分自身に尋ねた質問.
    まあ、ヘルムをフェッチ、展開し、アプリケーションのライフサイクルを管理することができます、両方のサードパーティ製の製品と自分自身.
    これ以上のYAMLファイル(または非常に長いもの)のランダムなグループを維持しているのは、ポッド、レプリカセット、サービス、RBAC設定などを記述していますtemplates と呼ばれるテンプレートを変更する別の層values . 値はテンプレートに注入されます.したがって、構成の分離を許して、変更が許されるところを定義します.このパッケージは「ヘルムチャート」と呼ばれます.
    基本的には、Kubernetesクラスタで実行するために必要なすべてを含む構造化されたアプリケーションパッケージを作成します依存関係を含むアプリケーションが必要です.

    舵はCLIで、ティラーはバックエンドです


    実際には、ヘルムはCLIのツールは、そのバックエンドサーバー“ティラー”と呼ばれる対話です.Tillerは通常、コマンドを送信することによってインストールされますhelm init そして、kube-system 名前空間.ヘルムが要求するチャートの展開を担当しています.
    グラフがインストールされると、Tillerは“リリース”を作成し、変更のためにそれを追跡を開始します.この方法は、インストールに参加するだけでなく、チャートリリースとその修正を使用してクラスタ内のアプリケーションのライフサイクルを管理する実際の展開ツールです.

    ヘルム概念


    ヘルムは、展開、実行、スケールにアプリケーションのすべての必要なK 8 Sコンポーネントをパックするためにチャートを使用します.また、依存関係が定義され、構成が更新され、維持されます.
    グラフルートは1つのファイルだけを持つ必要がありますChart.yaml 慣例によって.
    オプションを指定することができます(デフォルトではhelm createを使用している場合には、いくつかのより多くのコンポーネントを持っています).
        ├── Chart.yaml
        ├── templates
        │   ├── service.yaml
        │   └── replicaset.yaml
        ├── charts
        │   ├── nginx-ingress-1.1.2.tgz
        ├── requirements.lock
        ├── requirements.yaml
        └── values.yaml
    
    このチャートでは、それを「ウェブUI」と呼びましょうService and ReplicaSet , ヘルムインストール時にvalues.yaml リストの底を見ることができるファイル.
    また、Web UIチャートNNGXを実行する必要がありますので、nginxはsubchart の下にcharts ディレクトリ.requirements.yaml ファイルは実際の要件を記述し、nginxを内部にリストします.ヘルム依存アップデートでコマンドを実行したときにヘルムがインストールされたときに、パックの一部であるロックファイルも作成されます.
    エーChart.yaml パッケージの説明と実際に必要なファイルだけです.必要なエントリは三つあります.apiVersion , name and version . 以下に例を示します.
    (グラフのオプションとエントリの完全なリストを見つけることができますright here .)
        apiVersion: v1
        name: drone
        version: 1.0.0
    

    テンプレート


    テンプレートは、グラフ内の任意のサブディレクトリです.
    彼らはK 8 Sコンポーネントを結合しますGo-Template 値が後にマッチする形式.
    部分的なテンプレート例を見てみましょう.
        apiVersion: apps/v1
        kind: DaemonSet
        metadata:
          name: {{ .Values.name }}
          labels:
            app: {{ .Values.name }}
            somelabel: {{ .Values.labels.somelabelkey }}
    


    値は値に記述されます.YAMLファイルで、テンプレートにマッチする値を保持する.上記のテンプレートを考慮すると、対応する値ファイルは次のようになります.
        name: web-ui
        labels:
          somelabelkey: somelabelvalue
    

    サブチャート


    また、依存関係という名前のサブチャートは、現在の1つのグラフです.
    アプリケーションをパッキングする別の方法として、バックエンドでREDISキャッシュを実行する必要がある場合は、これを別の方法で設定できます.
    サブグラフを使用する別の方法は、テンプレートを使用して標準的なグラフを取得することができますし、値を提供する複数の親グラフのサブグラフとして使用する継承メカニズムとして考えています.

    ヘルムコンセプト


    リポジトリはヘルムチャートが保持され維持されるところです.本質的に、これらはテンプレートと設定値のセットです.tar.gz ファイル).
    ヘルムをインストールしたとき、デフォルトヘルムで安定した/redisをインストールしますHelm/Charts repo on GitHub , 安定した木の下で探索
    このレポを訪れてください.そうすればインキュベータのサブディレクトリを見つけることができます.インキュベータのサブディレクトリを見つけることができます.これは、あなたがそれらを使用することができないことを意味しません開発クラスタでそれらを導入し、それらを使用してください.ヘルムコミュニティは厳しい管理sem-ver バージョン管理のためのガイドライン、および最小の変更でも、新しいグラフのリリースを作成します.リモートチャートの特定のバージョンが1つの方法で動作している場合は、それは自信を持って青からあなたを破ることはありません.
    別のレポを使用しての優れた例は、ヘルム/チャートレポの会社によって維持されるために使用される弾性の弾性検索チャートです.
    弾性は、彼らのヘルムレポに自分の製品を移動することを決めたし、今できる最新の公式チャートを取得するadd 彼らのレポによるhelm repo add elastic https://helm.elastic.co
    続いてhelm install --name elasticsearch elastic/elasticsearch

    ヘルム概念


    リリースをK 8 Sクラスタにインストールされたアプリケーションを追跡するメカニズムと考えてくださいアプリケーションがヘルムによってインストールされると、リリースが作成されます.Redisなどの製品の異なるインストールを作成することができますし、2つの異なるリリースを作成し、クラスタで追跡します.
    リリースはヘルムLSで追跡することができます、各々は「リビジョン」を持ちます.特定のリリースが更新されるならば、例えば、REDISリリースにより多くのメモリを加えることで、改正は増加されます.舵は、特定の改正に戻ることを許します.そして、展開と生産状況ハンドラのために実質的にマネージャーになります.

    TLS


    耕うんとヘルムの通信方法が必要です.デフォルトでは、この接続は非常に安全ではありません.つまり、エンドポイントの1つが妥協しているか、妥協したコンポーネントにアクセス可能であれば、トラフィックを読み込み、解析することができます.システム間の通信を安全にしないことの実際の攻撃面を議論することを超えて、我々は簡単に自動生成された証明書を使用して安全なTLS接続を作成することができます.それをするためにhere’s a script that takes you through the process とどこでも実装することができます.

    貢献


    あなた自身(私が持っているように)の下に公式チャートから能力や機能のための新しい要件に実行して見つけることができますgithub.com/helm/charts , それは非常によくバグかもしれない(インキュベーターチャートではそうではない).ヘルムとそのチャートは、貢献者の何百ものオープンソースのプロジェクトですので、彼らは激しくアクティブです.すべての要件がなされて、世話をされるならば、チームは数日の変化を承認します.
    プロセスがかなり要求している間(そして、我々はそう感謝しなければなりません)、変化は確認されて、承認されるか、すぐに承認されません.Read more about contributing プロジェクトにあなたが小さな変更をするだけであるならば、それが新しいチャートの必要条件を概説して、文書の大部分は関連していない点に注意してください.

    それです。


    私は今、あなたはヘルムを理解し、なぜそれがこのような強力なシステムであることを願っています.として、これは入門を学ぶには、“感じる”それは、それを強烈な仕事を回避することはない;サードパーティ製の製品を展開し、グラフを構築する.
    私の名前はオマー、私はエンジニアですProdOps — DEVOPS文化を採用することによって信頼できる、安全で簡単な方法でソフトウェアを届ける世界的なコンサルティング.私は以下のコメントであなたの考えを知っているか、直接Twitterと接続してください.閉じるこの動画はお気に入りから削除されています.