Docker/K8S実践コンテナ開発入門@23日目

Dockerの勉強続きです。

書籍には「stableリポジトリはデフォルトで利用できるようになっていて、」
という文言があるのですがこれはv2の話のようです。
私の環境ではデフォルトでは利用できませんでしたので、以下のコマンドを実行しました。

■追加コマンド

helm repo add stable https://kubernetes-charts.storage.googleapis.com

以下のコマンドで確認

■確認コマンド

helm search repo stable/redmine

インストールを試してみる
■コマンド

//インストール
helm install -f redmine.yaml redmine stable/redmine --version 4.0.0

//check
helm ls

■リソースが作成されているか確認

lawrence@Chocolate job % kubectl get service,deployment --selector release=redmine
NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/redmine-mariadb   ClusterIP   10.104.184.160   <none>        3306/TCP       32m
service/redmine-redmine   NodePort    10.100.105.61    <none>        80:32413/TCP   32m

NAME                                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/redmine-redmine   1/1     1            1           32m

※デプロイには10分程度時間がかかりました。

redmineのTYPEがNodePortとなっており、
ポート番号が32413なのでそちらを利用してredmineに接続をしてみる。

■接続URL
http://localhost:32413
f:id:lawrence-twin:20200522092354p:plain


■helmのupgradeコマンド

helm upgrade -f redmine.yaml redmine stable/redmine --version 4.0.0

Chartのアンインストールは以下のコマンド
■コマンド

helm delete redmine


ロールバック機能として以下のコマンドもあるようだが、、、
■コマンド

helm ls --all

しかし、何も出ない。
v2ではデフォルトでリビジョンを残してくれているようですが、v3では残してくれないようです。
オプションで「--keep-history」が必要?と思われます。

完全削除の場合、書籍では「--purge」とのことですが
v3には存在しないflagであるため、おそらくデフォルトが完全削除になっています。

RBACに対応したアプリケーションをインストール

の章はskip

tillerへのserviceAccount追加とのことですが、v3ではtillerがないため

独自のchartを作成する

書籍に従って、nginxとechoで構成されるアプリケーションのChartを作成する。

localリポジトリを有効にする

まずは利用できるリポジトリを以下のコマンドで確認
■コマンド

helm repo list


以下のコマンドでWebサーバを起動する。
■起動コマンド

helm serve &

しかし、以下のエラーが発生

lawrence@Chocolate job % helm serve &
[1] 68359
lawrence@Chocolate job % Error: unknown command "serve" for "helm"
Run 'helm --help' for usage.

[1] + exit 1 helm serve

helmの公式を確認すると、
Removal of helm serve
helm serve ran a local Chart Repository on your machine for development purposes. However, it didn't receive much uptake as a development tool and had numerous issues with its design. In the end, we decided to remove it and split it out as a plugin.

For a similar experience to helm serve, have a look at the local filesystem storage option in ChartMuseum and the servecm plugin.」

削除されていました。。。

servecm pluginを入れれば良さそう?なので以下のコマンドを実行

■コマンド

//plugin 導入
helm plugin install https://github.com/jdolitsky/helm-servecm

//servecm実行
helm servecm

//ChartMuseumがないとのことで
yes

//インストール後以下のコマンドで起動
helm servecm --port=8879 --context-path=/charts \
--storage="local" \
> --storage-local-rootdir="/"

接続してみると以下の通り、うまくいったかな?
f:id:lawrence-twin:20200522125955p:plain

Chartの雛形を作成する

■作成コマンド

helm create echo

Deployment、Service, Ingress, のyamlをそれぞれ作成し
Chartをパッケージングする。
ここの章ではyamlの定義を変数化しておき個別の値はvalues.yamlを作成しておくことで、
パッケージングの処理の際に置換されるように作成される。
本番運用でもこちらの利用方法は一般的な気がしますね。

■パッケージングコマンド

helm package echo

書籍ではローカルリポジトリに追加されるようですが、
v3なのか追加されず。以下のコマンドで追加されないか試してみるもの、エラーが発生し進まず。
lawrence@Chocolate job % helm install local/echo ./echo-0.1.0.tgz
Error: parse error at (echo/templates/ingress.yaml:34): undefined variable "$ingresPath"

ここから先はまた明日対応予定。