こんばんは。今日は、Kubernetesと関連して話題に挙がるHelmについて調べて分かったことを自分の備忘も兼ねてまとめておきたいと思います。
それではまいります。
Contents
Helmの概要
まずは公式サイトから情報収集です。
分かったポイントを箇条書き。
- 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に関しては初心者の状態で読みましたがとてもよく理解することができました。
コメントを残す