Skip to content

Helmについて調べる #18

Description

@ques0942

理由

Helmを Kuberetesにいい感じに機能を追加するためのインストーラ+パッケージレポジトリ ぐらいの認識しかしてないので少し調べる。

知りたいこと

  • アーキテクチャ
    • Helmの安定利用にどのようなコンポーネントが必要か?
    • 自前のアプリケーションをHelmで管理するメリットは有るか?
      • 他者への配布を考えない自前のアプリケーションの管理、運用用途でも使用すべきか?
  • 運用面
    • 自前のレジストリなどを使ってパッケージの配信停止などに対応できるか?
    • 導入するコンポーネントのバージョニングなどはどうすればよいか?
    • GitOps可能か? できるなら何を使うのが良いか? CircleCI/CodeBuild...

調べたこと

GitHub: https://github.com/helm/helm

アーキテクチャ

https://helm.sh/docs/topics/architecture/

  • Chart: kubernetesアプリケーションをインストールするために必要なものを1つにまとめたもの
  • Config: Chartから実際のアプリケーションを作製するための設定
  • Release: Chartから生成され、Configを組み込まれたアプリケーションそのもの。
    https://helm.sh/docs/intro/using_helm/#three-big-concepts

Helm自体はクライアントだけで、サーバサイドは無い。
クライアントがKubernetesAPIを操作することで機能を実現している。

private repository

自分用のレポジトリを作る機能は有る。
https://helm.sh/docs/howto/chart_repository_sync_example/

まとめ

HelmはKubernetesにおけるapt/yum/homebrewのようなもの。
アプリケーションをKubernetesにインストール/アンインストールするための手順をChartというパッケージにまとめて管理できる。

ドキュメントをざっと読んだ限りでは自作のアプリケーションを管理するメリットはなさそう。あくまでもミドルウェアのような様々なクラスタでインストールされる可能性のあるものを配付するための仕組みという印章。
一方で同じChartから復数のReleaseを生成することもできるため、共通した設定でコンポーネントを利用したい場合などには役に立ちそう。
例えばlog forwarderやproxyをsidecarとして道入する際に定型の設定がある場合など。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions