(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Helm入門】Kubernetesのパッケージ管理マネージャーを利用する流れ

スポンサーリンク

はじめに

HelmとはKubernetes上にてリソース定義群をパッケージとして管理するツールですが、本記事ではWindows環境(Cygwin)にてパッケージを利用したデプロイを実施する流れについて初学者向けに分かりやすく記載しました。

環境情報
  • kubectl : v1.19.3.
  • GNU bash : version 4.4... x86_64-unknown-cygwin)
  • helm : v3.5.3

事前準備

下記リンクからWindows用のhelmクライアントツールをインストールします。

zipを展開するとhelm.exeが格納されているので

$ ls -ltr ..helm-v3.5.3-windows-amd64/windows-amd64/
total 40004
-rwx------+ 1 .. helm.exe
-rwx------+ 1 .. LICENSE
-rwx------+ 1 .. README.md

同ファイルをパスが通る場所に移動させます。

$ cp ..helm.exe /usr/local/bin/

$ which helm
/usr/local/bin/helm

以下からはチャート(ソース定義群)をhelmコマンドから取得しに行きます。

リポジトリの追加

Helmでは「リポジトリ」と呼ばれるチャートを集めている場所があるので今回は以下のリポジトリを例にして追加しました。

$ helm repo add ibm-community-charts https://raw.githubusercontent.com/IBM/charts/master/repo/community
"ibm-community-charts" has been added to your repositories

追加されると以下でリポジトリが表示でき

$ helm repo list
NAME                    URL
ibm-community-charts    https://raw.githubusercontent.com/IBM/charts/master/repo/community

同リポジトリに存在するチャートは以下で確認できます。

$ helm search repo ibm-community-charts
NAME                                                    CHART VERSION   APP VERSION     DESCRIPTION ...
ibm-community-charts/ibm-tomcat-dev                     0.1.0           1.0             Apache Tomcat is an open-source Java Servlet C
o...
ibm-community-charts/ibm-tomee-dev                      0.1.0           1.0             The Tomcat with added EE features - TomEE
...

チャートのインストール

以下でhogeというリリース名でtomcatのチャートをインストールしてみます。

$ helm install hoge ibm-community-charts/ibm-tomcat-dev

すると標準出力には以下が表示され

NAME: hoge
LAST DEPLOYED: xx
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:
  export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services hoge-ibm-tomcat-dev)
  export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT

確かに名前空間defaultにデプロイメントが作成されています。

$ kubectl get pod
NAME                                  READY   STATUS    RESTARTS   AGE
hoge-ibm-tomcat-dev-f48d7b46d-wrmdr   0/1     ...

また、これらがどのような設定でリソース定義されているかは以下で確認できます。

$ helm show values ibm-community-charts/ibm-tomcat-dev

同チャートのリソースが不要になればhelm uninstallで削除できます。

$ helm list
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
hoge    default         1               ...   deployed        ibm-tomcat-dev-0.1.0    1.0

$ helm uninstall hoge
release "hoge" uninstalled

$ helm list
NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION

終わりに

今回はチャートのリソース定義をそのまま適用しましたがvalues.yamlを利用することで Kustomizeのように任意の変更を加えてデプロイすることも可能ですので興味がある方はそちらも調べてみてください。

以上、Helmの入門記事でした。