おやかたの話
tatsuo48
tatsuo48
YokoyamaTatsuo

HameeのSRE, 日々の諸々を書きます。

helmについて調べてみる


現職ではぼちぼち kubernetes に触れているが、なんとなく helm は避けてきた。

helm

以下のような kubernetes におけるパッケージマネージャと言われている点に不安があったからだ。
ある程度 kubernetes について理解してから使うならまだしも、あまり理解しないまま、helm を使って設定部分を隠蔽化してしまうことに不安があったのだと思う。

Kubernetes のパッケージマネージャー Helm とは?

最近は kubernetes にも慣れてきて前述した不安も薄れてきたので、食わず嫌いをやめて少し調べてみる。

helm とはパッケージマネージャである、とはどういうことなのか調べてみた。
Linux OS ではAPT,Yum,DNFなどパッケージマネージャを使って、ソフトウェアのインストールを行うことができる。
これらのツールは目的のソフトウェアが依存している他のソフトウェアのインストールも自動で行い、手動での依存関係の解決無しに目的のソフトウェアのインストールを簡単に行えるようにしてくれている。

この考え方を kubernetes に適用した結果できたのが helm とのこと。
helm を使うことで、kubernetes クラスターに必要とするソフトウェアが稼働する Pod および、Service などの kubernetes リソースを作成することが簡単にできるらしい。
Linux のパッケージマネージャと同様にレポジトリが存在し、そこから Chart と呼ばれるパッケージ(前述した、ソフトウェアが稼働する Pod および、Service などの kubernetes リソースをまとめたもの)をインストールする。

Helm Hub

Chart が依存する Chart を指定でき、Linux のパッケージマネージャと同様に依存性を解決してくれる。

managing-dependencies-with-the-dependencies-field

Chart 内の kubernetes 設定用の yaml は Go templates で記載できる。

templates-and-values

# k8s.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: deis-database
  namespace: deis
  labels:
    app.kubernetes.io/managed-by: deis
spec:
  replicas: 1
  selector:
    app.kubernetes.io/name: deis-database
  template:
    metadata:
      labels:
        app.kubernetes.io/name: deis-database
    spec:
      serviceAccount: deis-database
      containers:
        - name: deis-database
          image: {{ .Values.imageRegistry }}/postgres:{{ .Values.dockerTag }}
          imagePullPolicy: {{ .Values.pullPolicy }}
          ports:
            - containerPort: 5432
          env:
            - name: DATABASE_STORAGE
              value: {{ default "minio" .Values.storage }}

カスタマイズはhelm install実行時に変数を記載したファイルを渡すことで行える。

  • values.yaml
# values.yaml
imageRegistry: "quay.io/deis"
dockerTag: "latest"
pullPolicy: "Always"
storage: "s3"

helm install --values=values.yaml

まとめ

なんとなくわかった気がする。
確かに便利だけど、インフラに基軸を置くものとしては、やっぱり多くの設定部分が隠蔽されてしまうのがなんとも気持ち悪い感じがしてしまう。
全部管理下に置いておきたい的な意味で。
アプリケーションエンジニアがサクッと動かす用途には適していそうだと感じた。

このエントリーをはてなブックマークに追加