【Kubernetes】HelmでMariaDB(MySQL)をカンタンにインストールする

Kubernetes

こんにちは。エンジニアのオオイシです。

KubernetesのYAMLの記述はとっても煩雑で面倒くさくないですか?

インフラエンジニアじゃないから最低限で動けばいいんだよー

と、考えている人も多いはず。

しかし、GKEAKS、デスクトップ用のDockerもKubernetesを正式対応しているため、wall of YAML(YAMLの壁)を登るのは必然のようです。

そこで、この問題を解決するための1つの手段としてHelm(ヘルム)を紹介します。

Helmを使うとMySQLやJenkinsなどのソフトウェアを最低限の設定でk8sにデプロイできるようになります!

Helmとは

Helm(ヘルム)とは、k8sのパッケージマネージャです。

LinuxのYumやAptのような位置付けで、コマンド一つで必要なソフトウェアをK8sクラスタにデプロイ可能です。

Helmの構成は、

  • コマンドを実行するためのクライアント
  • Helmリポジトリからマニフェストを取得したりk8sへデプロイするためtillerというサーバーアプリケーション

から構成されます。

パッケージそのものは、HelmではChartと呼びます。

用語をまとめると、

名前 意味 説明
Helm 船のかじ k8sパッケージマネージャ
Chart 海図 yamlテンプレート群
Tiller 舵の頭に通してある横棒 k8sにデプロイするサーバー

となります。

ちなみに、Kubernetesは船の操舵手の意味です。

Helmのインストール

Helmは環境ごとにバイナリで提供されています。

Home BrewChocolateyでもインストールが可能なので通常であれば、これらを使った方がいいでしょう。

インストールが完了するとhelm initコマンドで初期化します。

初期するとtillerというサーバーアプリケーションがk8sクラスタにデプロイされます。

Happy Helming!と出ればインストール完了です。

デプロイされていることを確認してみましょう。

Helmリポジトリの種類

Helmのリポジトリには、いくつかの種類があります。

  • local
    • ローカルで作成したパッケージ用のリポジトリ
    • 自分でパッケージを作る場合に使う
  • stable
    • 安定した品質のパッケージが配置されたリポジトリ
    • Jenkinsなどの公式ツールはここに公開されていて、誰でも使うことができる
  • incubator
    • stableの要件を満たしていない開発中のパッケージ用のリポジトリ
    • 近い将来stableに移行するパッケージがここに配置される

そのため、通常は、stableリポジトリを利用することになります。

試しに、helmコマンドでstableのChartの一覧をみてみましょう。

このように、パッケージの一覧が確認できます。

Chartの構成の簡単な説明

Helmのリポジトリは、GitHubのhelm/chartsに集められています。

stable配下のパッケージを見ると次のような構成なっています。

通常使う場合には、Chartの中の定義は知らなくても利用が出来ます。

必要なパラメータの初期値やパラメータはhelm inspect リポジトリ/chart名で調べるかgit hub上の説明を読んで設定します。

Helmコマンドの使い方

よく使うコマンドを紹介します。

Chartインストール:

Chartリポジトリ検索:

Chartの初期値やパラメーターなどの詳細情報:

Chartの削除:

デプロイしたChartの一覧:

Chartを使ってMariaDBをインストールしてみる

helmを使ってMariaDB(MySQL)をインストールしてみましょう。

個別のパラメーター設定したい場合はyamlを作成し、インストール時に-f オプションで渡します。

今回はrootパスワードの指定しました。

デプロイされたことを確認してみます。

クライアントから接続してみましょう。

このように、KubernatisでMariaDBを簡単にデプロイすることができました。

なお、helmコマンドのBash Complationで自動補完するには、こちらを確認してください。

(おまけ)port-forwardでホストから接続する

Macなどのローカルからport-forward してDBに接続してみます。

まとめ

Helm(ヘルム)は、K8sのパッケージマネージャで、yumのように簡単にKubanatisにソフトウェアもデプロイすることができました。

煩雑なYamlを書かなくても、信頼のあるツールをカンタンに使えるので、これからさらに充実していくことが期待できます!