Helm コマンドメモ

個人メモです。

以下を試すに当たり色々設定した時の備忘録です

[Integrating GPU Telemetry into Kubernetes](https://docs.nvidia.com/datacenter/cloud-native/kubernetes/dcgme2e.html#)

メモなので正確でない情報もあるかもしれません

基本的な操作は以下を見るのが良さそうです

[Using Helm](https://helm.sh/docs/intro/using_helm/#helm-upgrade-and-helm-rollback-upgrading-a-release-and-recovering-on-failure)

# helm 自体について

+ k8s 上にアプリケーションを構築する場合、対応する YAML(svc,deployment etc)の作成が必要
+ k8s 上にアプリケーションを容易に構築できる(例:wordpress,prometheus etc)
+ 利用するアプリケーションについてパラメーターを指定して設定を変更できる(起動する port を変える etc)
+ k8s 版のパッケージマネージャーと認識すると理解しやすい(yum,npm etc)

# helm で出てくる用語

+ Chart:Helm で利用するパッケージのテンプレート
+ Release:デプロイした単位
+ リポジトリ:Chart を管理しているリポジトリサーバー

リポジトリは後述する `helm repo add`で追加できる。
Helm 公式？のリポジトリとしては [Artifact Hub](https://artifacthub.io/) というのが確認できる(beta と書いてあるが...)


# helm の install(Mac)

`Homebrew` で入れた

[From Homebrew (macOS)](https://helm.sh/docs/intro/install/#from-homebrew-macos)

```
brew install helm

helm version
version.BuildInfo{Version:"v3.5.4", GitCommit:"1b5edb69df3d3a08df77c9902dc17af864ff05d1", GitTreeState:"dirty", GoVersion:"go1.16.3"}
```

# helm repo add/repo update

['helm repo': リポジトリの操作](https://helm.sh/ja/docs/intro/using_helm/#helm-repo-%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AE%E6%93%8D%E4%BD%9C)

`helm repo add` でリポジトリ追加し、 `helm repo update`　で更新

# helm install

`helm install` で chart をインストールする。
`-generate-name` を使うと名前が自動的に？決まる
`--values` で `helm inspect values` で作成した設定ファイルを指定し、使うこともできる（後述)

# helm inspect values

指定した chart で設定可能な内容を確認する
以下のコマンドで `/tmp/kube-prometheus-stack.values` に `prometheus-community/kube-prometheus-stack` で設定可能なファイルを出力する

```bash
helm inspect values prometheus-community/kube-prometheus-stack > /tmp/kube-prometheus-stack.values
```

#  helm list

`helm list` でデプロイされているリリースが確認できる

```
helm list

NAME                            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
prometheus-adapter-1620680295   default         1               2021-05-11 05:58:18.137571 +0900 JST    deployed        prometheus-adapter-2.12.3       v0.8.4
```

`helm install`　で `--namespace prometheus` という感じで指定した場合、 namespace の指定も必要

```
helm list -n prometheus

NAME                                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                          APP VERSION
dcgm-exporter-1620689843                prometheus      1               2021-05-11 08:37:25.024315 +0900 JST    deployed        dcgm-exporter-2.3.1            2.3.1
kube-prometheus-stack-1620609826        prometheus      1               2021-05-10 10:23:50.101859 +0900 JST    deployed        kube-prometheus-stack-15.4.4   0.47.0
```

# helm uninstall

['helm uninstall': リリースのアンインストール](https://helm.sh/ja/docs/intro/using_helm/#helm-uninstall-%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%A2%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

`helm uninstall` でアンインストールできる

# helm value

設定した値を確認する

```
helm get values prometheus-adapter-1620680295 |grep url

  url: http://kube-prometheus-stack-1620-prometheus.prometheus.svc.cluster.local
```

# [TODO]helm upgrade

['helm upgrade' and 'helm rollback': Upgrading a Release, and Recovering on Failure](https://helm.sh/docs/intro/using_helm/#helm-upgrade-and-helm-rollback-upgrading-a-release-and-recovering-on-failure)

`helm install --values` を指定した場合に値をあとで変えたい事もある
この時に `helm uninstall` をやって `helm  install` をしていたがこっちのほうが良さそうだが、確認時間が取れず、機会があればやってみる