【続】Kubernetesのアプリケーション管理は難しい?いいえ、Helmがあるじゃないか! – インストール編 –

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Helmのインストール

HelmはKubernetesのパッケージ管理ツールです。ここでは、Helmのインストールと設定について説明をします。Helmの概要にについては、概要編にて説明をしていますので、Helmをはじめて利用される場合は、事前に確認をしておくことをお勧めします。

事前準備

Kubernetesクラスタの準備

Helmのサーバコンポーネント(Tiller)は、Kubernetesクラスタのコンポーネントとしてインストールされます。Helmのインストール前に、Helmの管理対象とするKuernetesクラスタを準備しておいてください。

kubectlの設定

Helmサーバ(Tiller)のインストール先は、Kubernetesの設定ファイルの内容に従います。Kubernetesの設定ファイルは通常、以下の場所に kubectlによって作られます。

$HOME/.kube/config

Helmのインストール前に、現在のKubernetesの設定で、どのコンテキストに接続するようになっているかを確認しておいてください。Helmサーバ(Tiller)は、デフォルトで現在設定されているKubernetesコンテキストにインストールされます。現在のKubernetesコンテキストは、以下のコマンドで確認することができます。

$ kubectl config current-context

Tillerをインストールするコンテキストになっているか確認をしてください。表示されたコンテキストが正しくない場合は、 kubectlコマンドでコンテキストの変更を行ってください。

$ kubectl config use-context <your-context>

 

Helmクライアントのインストール

Helmクライアントのインストールを行います。以下の実行例では、一般的なLinux環境(linux-amd64)を対象としています。

Helmバイナリファイルのダウンロード

Helmの公式リリースページ(https://github.com/helm/helm/releases)から、Helmクライアントをインストールするアーキテクチャのバイナリファイルをダウンロードします。リリースページにはPre-releaseバージョンのバイナリファイルも置いてあります。必ず公式リリースページを確認し、どのバージョンのHelmをインストールするのかを確認してください。通常は、最新安定版であるLatest releaseのバイナリファイルを選択するのが良いでしょう。

$ wget https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz

ダウンロードしたファイルの解凍

公式リリースページからダウンロードしたファイルを解凍します。

$ tar xvfz helm-v2.13.1-linux-amd64.tar.gz

Helmファイルの移動

解凍したディレクトリにできたhelmファイルを、パス(PATH)の通ったディレクトリに移動します。

$ sudo mv linux-amd64/helm /usr/local/bin/helm

helmコマンドの実行

最後に、 helm helpコマンドを実行して、正常にHelmクライアントがインストールができたかを確認します。

$ helm help

ヘルプメッセージが表示されれば、Helmクライアントのインストールは成功です。

[参考]そのほかのインストール方法

Helmクライアントのインストールは、上記で紹介した公式リリースページからバイナリファイルをダウンロードする以外にも方法があります。

  • Snapを利用する方法(Linux)
  • Homebrewを利用する方法(macOS)
  • Chocolateyもしくはscoopを利用する方法(Windows)
  • インストールスクリプトを使う方法
  • ソースファイルからインストールする方法

インストール方法の詳細は、公式ドキュメント(https://helm.sh/docs/using_helm/#installing-helm)を参照してください。

 

Helmサーバ(Tiller)のインストール

helm initコマンドの実行

Helmサーバ(Tiller)のインストールを行います。TillerはKubernetesのコンポーネントとしてインストールされます。事前にkubectlの設定と現在設定されているコンテキストの確認をしておいてください。コンテキストがHelmインストール先と同じ場合、 helm initコマンドでHelmサーバ(Tiller)のインストールを行うことができます。

$ helm init

異なるクラスタ(コンテキスト)にHelmサーバ(Tiller)をインストールしたい場合は、 --kube-contextフラグでコンテキストを指定することもできます。

$ helm init --kube-context <your-context>

kubernetesクラスタのデプロイ確認

Helmサーバ(Tiller)は、Kubernetesのkube-systemネームスペースにインストールされます。以下のコマンドでTillerのデプロイを確認することができます。

$ kubectl --namespace=kube-system get deployments
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
tiller-deploy   1/1     1            1           16h

Kubernetes APIとTillerの接続確認

最後にKubernetes APIとTillerの接続確認を行います。接続確認には、 helm versionコマンドを利用します。Serverのバージョンが正常に取得できれば、接続確認は成功です。

$ helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

TillerやKubernetesが動作していなく、APIの接続確認ができない場合は、以下のようなエラーが出力されます。

$ helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Error: Get <http://xxxx/api/v1/namespaces/kube-system/pods?labelSelector=app%3Dhelm%2Cname%3Dtiller:> dial tcp XXXX: connect: connection refused

 

Helmサーバ(Tiller)のアップグレード

Helmサーバ(Tiller)をアップグレードするには、 helm initコマンドで--upgradeフラグを利用します。インストールの時と同じように、設定されているKubernetesのコンテキストの確認は忘れないようにしてください。

$ helm init --upgrade

 

Helmサーバ(Tiller)の削除

Tillerを削除するには、 kubectlコマンドからTillerのデプロイメントを削除します。

$ kubectl delete deployment tiller-deploy --namespace kube-system

 

さいごに

HelmクライアントとHelm サーバ(Tiller)のインストール方法を紹介しました。どちらも非常に簡単にインストールを行うことができます。HelmのインストールやHelmクライアントの動作はkube configファイルに依存します。接続先のKubernetesコンテキストの確認を忘れないようにしましょう。

スカイアーチ ファンタジー研究室

スカイアーチ ファンタジー研究室

投稿者プロフィール

石川 淳
スカイアーチネットワークスで、新しいサービスの企画を行っています。
元SIer、元スマフォ向けゲームインフラの経験を生かして、新しいサービスをリリースしていきます。現在企画中のサービスはこちら。
https://github.com/easydoggie
コメントを頂けると嬉しいです。

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.

ABOUTこの記事をかいた人

スカイアーチネットワークスで、新しいサービスの企画を行っています。 元SIer、元スマフォ向けゲームインフラの経験を生かして、新しいサービスをリリースしていきます。現在企画中のサービスはこちら。 https://github.com/easydoggie コメントを頂けると嬉しいです。