先月頭に、Cloud Native Computing Foundation (CNCF)のTechnical Oversight Committee (TOC)がHelmをインキュベーションレベルのホストされたプロジェクトとして受け入れることを投票によって決めた。Helmは、「Kubernetes向けに構築されたソフトウェアを簡単に見つけ、共有し、使用する方法」を提供するパッケージマネージャである。
Helmは、コンテナオーケストレータであるKubernetes CNCFが主催するプロジェクトの下で、2016年2月から存在していた。このプロジェクトは、Deis(2017年にMicrosoftに買収された)によって開始され、GoogleのKubernetes Deployment Managerと合併してKubernetes Helmになった。Helmのホスティングをスタンドアロンプロジェクトとして発表しているCNCFブログ記事で「この成長をより適切に管理していくために、Kubernetesはコアに焦点を移しており、継続して、開発者や事業者がKubernetesの導入を効率的に実施できるようにする上で、CNCFはHelmにとって非常によい場所である」と述べられている。
概念的に、HelmはDebianのAPT、Red HatのYum、macOSのHomebrewなどのオペレーティングシステム(OS)のパッケージマネージャーに似ているが、ファイルをファイルシステムの正しい場所にコピーし、適切なアクセス権を設定し、アプリケーションをどのように初期化し、実行するかを設定する。Helmのパッケージングフォーマットは、チャートと呼ばれ、関連するKubernetesリソースの集合を記述するファイルの集合である。チャートは、特定のディレクトリツリーに配置されるファイルとして作成され、デプロイされるバージョン管理されたアーカイブにパッケージ化される。
サムスンSDSの上級スタッフエンジニアであり、アプリケーション(SIG Apps)にフォーカスしたKubernetes Special Interest Groupの共同設立者であるMatt Farina氏は、パッケージマネージャHelmがKubernetesツールのエコシステム内のどこに位置付けられるかを説明する有益なブログ記事を作成した。オペレーティングシステムのアナロジーを参考に、Farina氏は、Helmは「aptと同じ流儀のパッケージマネージャー」であり、ELFバイナリや 「/etc」や「/opt」などのOS固有のディレクトリに格納されている設定などの他の抽象概念よりも上位のパッケージマネージャであると述べている。彼はさらに、Chef、Puppet、AnsibleなどのOS構成管理ツールが上位レベルのアプリケーション管理に使用されているのと同様に、helmfile、armada、landscaperなど概念的にHelmの上にある類似プロジェクトがあると述べている。
Farina氏は、Kubernetesアプリケーションを管理するためにHelmのようなパッケージマネージャを使う必要がある理由について、なぜ多くのオペレータが不思議に思うのかを書いている。パッケージ管理が望ましい理由の大半は、アプリケーションを対象とした再利用可能な専門知識を共有することにつながるということである。
アプリケーションを運用している一般的な人であれば、アプリケーションに関心があり、それを実行しているプラットフォームやアプリケーションの依存関係に関心はないでしょう。
彼は考慮すべき3つの項目を挙げている。
- 分散アプリケーション固有の運用上の専門知識の管理 - 開発者は専門知識を持つ人物のパッケージに依存できるため、そのパッケージを所有する必要はなく、特定のビジネスニーズに集中することができる
- 再利用可能な組織のパッケージ - 企業内の運用エキスパートがまとめたカスタムパッケージであり、再利用可能なさまざまな状況で、ローカル、テスト、およびプロダクションで実行できる
- アプリケーション固有の設定 - アプリケーション運用はそのアプリケーションに関することであり、また、アプリケーションにはさまざまなニーズがあり、それは設定可能である
Helmは、Kubernetesのパッケージ管理とアプリケーションのインストールの問題の唯一の解決策であることに注目していただきたい。Shahidh K Muhammed氏は、代替手段を調査する「Draft vs Gitkube vs Helm vs Ksonnet vs Metaparticle vs Skaffold」という包括的なブログ記事を作成した。
この領域に興味を持っている読者は、CoreOSチーム(現在はRed Hatに買収されている)によって定義されているオペレータパターンに慣れることも推奨される。CoreOSチームは、「Kubernetes上に複雑なアプリケーションインスタンスを確実に作成、設定、管理する」メカニズムを定義している。演算子は、Kubernetes Custom Resources(Custom Resource Definitions (CRDs)とも呼ばれる)とCustom Controllersで構成される。大規模なeコマースプラットフォームであるShopifyは、カスタムコントローラーを幅広く使用している。Niko Kurtti氏は、今後開催されるQCon New Yorkの講演「Forced Evolution: Shopify's Journey to Kubernetes」でこのテーマについて詳細を語るであろう。
Helmに関する追加情報は、https://helm.sh/をご覧ください。2017年のKubeCon / CloudNativeConカンファレンスのAmy Chen氏のビデオ「Building Helm Charts From the Ground Up」ではHelmチャートを作成する方法について説明しており、CNCFのYouTubeチャンネルで視聴できる。
Rate this Article
- Editor Review
- Chief Editor Action