LoginSignup
136
121

More than 3 years have passed since last update.

helmを使ってKubernetesを楽にする

Last updated at Posted at 2018-05-19

1.helmとは。基本的な使い方

helmとは:KubernetesでつらいYAML地獄を脱却するYAML生成ツール

  • Kubernetesのつらさ

Kubernetesでは、PodやServiceといった基本的なコンテナの設定をYAML形式で記述します。
何度も何度もYAMLを書いていると、下記のような決まり文句の書き出し数行を書くのもつらくなってきます。

okimari.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.7.9
    ports:
    - containerPort: 80

helmがやってくれるのは、「nginxがほしい」と願えば上記のYAMLを生成してくれることだと思っています。

helmの基本的なコンセプト:設計図Chartとそこから作られるRelease

YAMLの生成は、Chart(チャート)とRelease(リリース)で実現されます。

  • Chartは、Kubernetesでよく作られるPodやServiceなどのYAMLファイルのひな型を固めて圧縮したもの。
  • Releaseは、Chartに基づいてコピー生成されたPodやServiceなどのYAMLファイル。

nginxのチャートはたいてい有志が開発してくれていますので、我々は後述するhelm installコマンドを実行すれば、新しいリリースを作成してくれて、ついでにKubernetesにデプロイしてくれます。
生成したYAMLファイル自体に目を通すこともなく、Kubernetes上にnginxが構築されるわけです。
これがYAML地獄からの脱却です。

helmの仕掛け

基本的にはコマンドとサーバで処理を行っています。
コマンドはKubernetesで必要な処理をサーバに伝えて実行します。
利用する我々は、コマンドの使い方を覚えればいいだけです。

image.png

(注:このアーキテクチャはv2まで。v3からはtillerはなくなり、端末側でのレンダリングとなりました)

これだけで使える:helm installとReleaseの名前

チャートからリリースを作成するコマンドが、helm installです。

v2版.sh
helm install <nginxチャート名> -n <リリース名>
v3版.sh
helm install <リリース名> <nginxチャート名> # 結構私自身影響ありました・・・スクリプト書き直しが ;o

同じチャートから複数のリリースを作った場合にちゃんと区別するために、リリースには名前が付けられます。何も指定しなければ勝手に英単語2つをくっつけた名前が設定されます。(が、これはあとあとで厄介ですので、リリース名はつけるのがおすすめ)

その他のhelmのコマンド

  • インストール
コマンド 機能
helm init tillerサーバのインストール (v2まで)
  • リリース系
コマンド 機能
helm install チャートからリリースを作成する
helm upgrade チャート更新があったら、作成済みリリースに更新を適用する
helm delete(del) リリースを削除する
helm list(ls) リリースをリストアップする
helm get [values, manifest] リリースの情報を表示する
  • チャート系
コマンド 機能
helm repository(repo) [list, add, delete] チャートのレポジトリを追加、削除する
helm create 自作チャートのひな型を作成する
helm dependency(dep) チャート内の依存関係を解決する
helm search チャートを検索する

helmをインストールして実際に使ってみよう!

helmコマンドのバイナリをダウンロードし、helm initを実行することでコマンド・サーバの両方がインストールされます。
helmコマンドは下記サイトの各バージョンの「Installation and Upgrading」からダウンロードできます。自分のOSに合わせたバイナリをダウンロードします。
helm/release

Linuxであれば、このバイナリを下記パスに移動するだけで使えるようになります。

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

最後にサーバをインストールします。

helm init

すでにインストール済みのサーバをアップデートするには、下記を実行します。

helm init --upgrade

少し古いバージョンだとKubernetes: パッケージマネージャHelmがたいへん詳しいです。

自作Chartの作り方

  • 次回!
136
121
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
136
121