【5分で読み流し】Helmってなんだっけ?【入門Kubernetes】

こんばんは。今日は、Kubernetesと関連して話題に挙がるHelmについて調べて分かったことを自分の備忘も兼ねてまとめておきたいと思います。

それではまいります。

Contents

Helmの概要

まずは公式サイトから情報収集です。

https://helm.sh/ja/

分かったポイントを箇条書き。

  • Kubernetes用パッケージ管理ツール
  • Kubernetesにおけるアプリのデプロイでは、YAMLマニフェストを記述する方法があるが、これよりもさらにデプロイを便利にするために登場。
  • Helmの機能としては、大きく以下の4つ。
    • 「チャート」と呼ばれるものを作成できる
    • チャートをチャートアーカイブ(tgz)ファイルにパッケージ化できる
    • チャートを既存のKubernetesクラスターにインストール/アンインストールできる
    • Helmでインストールされたチャートのリリースサイクルを管理できる

補足のポイントは以下。

  • チャート(海図)とは、KubernetesリソースのセットをKubernetesクラスターにインストールするのに必要な情報が含まれるHelmパッケージのこと
  • Helmチャートには、具体的にChart.yamlファイル、テンプレート、デフォルト値(values.yaml)、依存関係が含まれている
  • チャートは決まったディレクトリ構造で作成され、チャートアーカイブというアーカイブ形式にパッケージ化される
  • チャートにはコンテナイメージ自体は含まれない。KubernetesのDeploymentと同様、イメージを発見できる場所に関するメタデータが含まれるだけ。
  • チャートはKubernetesのYAMLマニフェストのラッパ的なもの
  • チャートをKubernetesにインストールすると、Kubernetesが、チャートで指定された場所(子コンテナのレジストリ)からコンテナイメージを見つけてダウンロードしてくる。

英語ですがYoutubeに開発者による紹介動画もあるので貼っておきます。

Helmのアーキテクチャ

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

  • Go言語で実装されている
  • Helmは、HelmクライアントとHelmライブラリという2つコンポーネントから成る
  • Helmクライアントは、ユーザ向けコマンドラインクライアント。ローカルチャート開発、リポジトリ管理、リリースの管理、Helmライブラリとのインターフェースを担う。
  • Helmライブラリは、すべてのHelm操作を実行するためのロジックを提供。チャートと構成を組み合わせたリリースの構築、チャートのKubernetesへのインストール、Kubernetesとの対話によるチャートのアップグレード/アンインストールが行える。

Helmを使ってみる

ドキュメントの説明だけだとよくわからないとも思いますので、実際に使ってみたいとおもいます。Helm公式Docにクイックスタートガイドがあったので、これに従って進めてみます。

イメージをつかみたい方は結果だけ眺めていただければと思います。

https://helm.sh/ja/docs/intro/quickstart/

前提

  • Kubernetesがインストール済かつクラスターが起動していること

こちらがまだの方で、試してみたい方は以下記事を参照ください。

Helmのインストール

インストールリンクはこちから。

https://helm.sh/ja/docs/intro/install/

上のリンク先にあるGithubページからOSに応じたバイナリを団ロードしてきてインストールします。(私は今回Windows環境で実施しました)

ダウンロードしたら、Helm.exeにパスを通すと、ターミナルからHelmコマンドが利用できるようになります。

helm version

Helmチャートリポジトリを初期化する

続けて、ターミナルで以下コマンドを実行します。

## 公式のHelm Stableチャートポジトリを追加
helm repo add stable https://charts.helm.sh/stable

## インストールできるチャートを一覧表示
helm search repo stable

チャートのインストール

以下コマンドを実行。クイックスタートだとmysqlのチャートでしたが、興味本位でwordpressに変えて実行してみました。

## コマンド
helm install stable/wordpress --generate-name

## 結果
WARNING: This chart is deprecated
NAME: wordpress-1648482130
LAST DEPLOYED: Tue Mar 29 00:42:11 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
This Helm chart is deprecated

(以下略)

localhostにアクセスしてみる。おお、確かにWordpressが起動している!

リリースされた内容は以下コマンドで確認できる。

helm ls

チャートの情報を確認

以下コマンドでチャート情報を表示してみる。コンテナの実体ではなくて、こういった情報を保持している。

helm show chart stable/wordpress

## 結果
apiVersion: v1
appVersion: 5.3.2
dependencies:
- condition: mariadb.enabled
  name: mariadb
  repository: https://kubernetes-charts.storage.googleapis.com/
  tags:
  - wordpress-database
  version: 7.x.x
deprecated: true
description: DEPRECATED Web publishing platform for building blogs and websites.
home: http://www.wordpress.com/
icon: https://bitnami.com/assets/stacks/wordpress/img/wordpress-stack-220x234.png
keywords:
- wordpress
- cms
- blog
- http
- web
- application
- php
name: wordpress
sources:
- https://github.com/bitnami/bitnami-docker-wordpress
version: 9.0.3

チャートのアンインストール

helm uninstall <リリース名>

以上、Helmの概要 + ちょっと触ってみた、でした。参考になりましたら幸いです・・!

おしまい

(おまけ)Kubernetesを体系的に学びたい人へ

最近読んだ以下の本が恐ろしく良書だったので、自信を持ってお勧めします。

何がよいって、Kubernetesの機能をただ羅列するだけではなく、DevOps実現の文脈で各機能背景から分かりやすく説明してくれていること。ハンズオンもあって親切です。

筆者はKubernetesに関しては初心者の状態で読みましたがとてもよく理解することができました。

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。