LoginSignup
116
99

More than 3 years have passed since last update.

helmとは & helmの使い方

Last updated at Posted at 2018-03-20

helmとは

Kubernetes Helm(以降Helm)とはKubernetesのパッケージマネージャーです。HelmはKubernetesのSIG-Appsで開発がされています。パッケージはChart(s)と呼ばれ、公式でレポジトリkubernetes/chartsが用意されています。Kubernetesクラスタに側にはtillerと呼ばれるデプロイ用のコンポーネントを配置して使用します。

用語

用語 意味 役割
helm 船のかじ yum, aptに相当するパッケージマネージャー。Linux, OSXのバイナリが用意されている
chart 海図 deb, rpmに相当するパッケージ。Kubernetesのマニフェストのテンプレートをまとめたもの
tiller 舵柄 デプロイを担うサーバーコンポーネント
Package パッケージ Jenkins, Sparkなどのhelmを使ってk8s上にインストールアプリケーション
Release リリース k8s上にインストールされたパッケージ
Repository リポジトリ チャートが保存される場所

構成と通信方法

主な構成要素はhelm, Repository, tillerの3つです。
helmはChartの、tillerはReleaseの管理を行っていて、ざっくり機能を挙げるとこんな感じ。

Helm

  • ローカルのchart開発
  • レポジトリの管理
  • Tillerサーバとの通信
    • インストールするchartの送信
    • Release情報の取得
    • Releaseに対するアップグレードやアンインストールの要求

Tiller

  • Helmクライアントからのリクエスト受付
  • chartconfigurationを組み合わせたreleaseのビルド
  • chartをk8sへインストールし、releaseをトラックする
  • k8sへchartのアップグレードとアンインストールをする

コマンド

helm init

Kubernetesクラスタ上にtillerをデプロイする。
つまり以下のようになる。

$ kc get po,deploy,svc  -n kube-system -l name=tiller
NAME                               READY     STATUS    RESTARTS   AGE
po/tiller-deploy-7777bff5d-smpx5   1/1       Running   2          2d

NAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/tiller-deploy   1         1         1            1           2d

NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)     AGE
svc/tiller-deploy   ClusterIP   10.103.130.98   <none>        44134/TCP   2d

また$HOME/.helm ディレクトリ以下に設定ファイルが設置される

helm repo list

レポジトリの一覧表示

helm repo update

レポジトリのアップデート

helm serve

serveを実行すると$HELM_HOME/repository/local内のchartsが呼び出せるようになります。

$ helm serve
Regenerating index. This may take a moment.
Now serving you on 127.0.0.1:8879

別タブで
curl http://127.0.0.1:8879/charts

helm search

インストール可能なchart一覧が表示される

helm search xxx

$ helm search redis
NAME            VERSION DESCRIPTION
stable/redis    1.1.7   Open source, advanced key-value store. It is of...
stable/redis-ha 2.0.0   Highly available Redis cluster with multiple se...
stable/sensu    0.2.0   Sensu monitoring framework backed by the Redis ...

helm install xxx

helm install stable/redis
helm install helloworld
helm install helloworld-0.1.0.tgz

またhelm install .でローカルのchartをインストールできる

--name hogehogeとすると、release-name(helm lsの左側のNAME)が指定できる。

helm upgrade #release-name #chart-path

helm upgrade oily-terrier helloworld # helloworldはchartディレクトリ

helm delete #release-name

インストール済みリリースを削除
ただ、deleteしても削除済みデータとして残っている。
なのでhelm install hoge --name hogehogeと同じnameでインストールするとすでに存在しているエラーになる。
helm delete --purge hogehoge とするとデータが削除され同じ名前でインストールできる。
--purgeしなくてもhelm install helloworld --name hogehoge --replaceのように--replaceをつければインストールできる。

なんで削除済みリリースが残っているかというと、削除済みリリースをrollbackして再度有効にできるから。

helm create #chart-name

でscaffoldが作成できる

helloworld/
  Chart.yaml    # chartの情報を記載するyaml
  values.yaml   # chartのデフォルト設定
  charts/       # chartの依存を含めるディレクトリ
  templates/    # マニフェストファイルのテンプレートを配置するディレクトリ

helm package #chart-name

でchartをtgzにパッケージできる。

helm list

インストール済みリリース一覧を表示

helm list
NAME        REVISION    UPDATED                     STATUS      CHART               NAMESPACE
rude-pike   1           Sun Jan 21 17:15:49 2018    DEPLOYED    helloworld-0.1.0    default

helm list --allで削除済みリリースも表示
helm list --deletedで削除済みリリースのみ表示

heml lsでもok

helm status #release-name

ステータス表示。
削除済みリリースだったらStatus: DELETEDと表示される。

helm inspect values #chart-name

helm inspect values helloworld
helm inspect values stable/mariadb
で設定値が見れる

helm history #release-name

Releaseのリビジョン遷移はhistoryコマンドで確認することができます。

$ helm history angry-bird
REVISION   UPDATED                      STATUS           CHART
1           Mon Oct 3 10:15:13 2016     SUPERSEDED      alpine-0.1.0
2           Mon Oct 3 10:15:13 2016     SUPERSEDED      alpine-0.1.0
3           Mon Oct 3 10:15:13 2016     DEPLOYED        alpine-0.1.0

helm rollback #release-name #revision

指定するrevisionは helm history #chart-hame でみれる

例:
helm rollback happy-panda 1

helm init --upgrade

helm reset

ただkubernetesのConfigMapsに保存されているデータは消えないっぽい。
helm initで再インストールできる。

helm home

macでは
$HOME/.helm
が表示された。ここに設定やpluginが入っているっぽい。

116
99
1

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
116
99