2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

helm を複数クラスタで使い分ける

Last updated at Posted at 2017-11-18

helm を使っているときに、複数クラスタで使いたきときどうするか?についてちょっと試して見た。結論としては、kubectl 側でコンテキストを切り替えれば、自動で切り替わる。

この経緯で得た Tips をメモがわりとして、ブログにしておく。

Tiller のインストール

既存のクラスターがあり、そこに新規で tiller をインストールする場合どうするかというと、単にコンテキストを切り替えてインストールすれば良い。私は今、saclustersasbrk という二つのクラスタを持っている。現在使っているのが saclustersasbrk を追加したい場合は次の通り。ただし、コンテキストのが実施できるような設定がされているのが前提。詳細は、こちら

$ kubectl config use-context sasbrk // コンテキストの切り替え
$ helm init // これで、client / server(tiller) がインストール。ある場合は、再インストール

ところが、実際にやると問題が起きた。サーバー(Tiller) のバージョンが古いらしい。

$ helm install stable/mongodb
Error: incompatible versions client[v2.7.0] server[v2.6.2]
$ helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.6.2", GitCommit:"be3ae4ea91b2960be98c07e8f73754e67e87963c", GitTreeState:"clean"}

Tillter のアップグレード

Tiller をアップグレードすることにした。docker コンテナのバージョンをあげているだけ。

$ export TILLER_TAG=v2.7.0
invincible:service-catalog ushio$ kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=gcr.io/kubernetes-helm/tiller:$TILLER_TAG
$ helm install stable/mongo

動作確認

ちゃんと動いている。

$ helm list
NAME               	REVISION	UPDATED                 	STATUS  	CHART         	NAMESPACE
steely-waterbuffalo	1       	Sat Nov 18 23:59:37 2017	DEPLOYED	mongodb-0.4.18	default 

じゃあ、次にコンテキスト切り替えたらOKか?

$ kubectl config use-context sacluster
$ helm search mysql
NAME                  	VERSION	DESCRIPTION                                       
stable/mysql          	0.3.0  	Fast, reliable, scalable, and easy to use open-...
stable/percona        	0.3.0  	free, fully compatible, enhanced, open source d...
stable/gcloud-sqlproxy	0.2.1  	Google Cloud SQL Proxy                            
stable/mariadb        	2.0.1  	Fast, reliable, scalable, and easy to use open-...
$ helm install stable/mysql
$ helm list
NAME            	REVISION	UPDATED                 	STATUS  	CHART      	NAMESPACE
looming-aardvark	1       	Sun Nov 19 00:02:00 2017	DEPLOYED	mysql-0.3.0	default  

よし入った。再度切り替え。完璧。

$ kubectl config use-context sasbrk
$ helm list
NAME               	REVISION	UPDATED                 	STATUS  	CHART         	NAMESPACE
steely-waterbuffalo	1       	Sat Nov 18 23:59:37 2017	DEPLOYED	mongodb-0.4.18	default 

~/.helm ディレクトリ

一つ謎だったのが、~/.helm ディレクトリ。クライアント部分のディレクトリ。サーバーは、tiller が別のクラスタにそれぞれデプロイされる。

$ kubectl get pods --namespace kube-system
NAME                                            READY     STATUS    RESTARTS   AGE
heapster-342135353-2kzf7                        2/2       Running   0          1h
kube-addon-manager-k8s-master-27305297-0        1/1       Running   0          1h
kube-apiserver-k8s-master-27305297-0            1/1       Running   2          1h
kube-controller-manager-k8s-master-27305297-0   1/1       Running   0          1h
kube-dns-v20-3003781527-1p9kw                   3/3       Running   0          1h
kube-dns-v20-3003781527-51ld5                   3/3       Running   0          1h
kube-proxy-26h6f                                1/1       Running   0          1h
kube-proxy-fbmrb                                1/1       Running   0          1h
kube-proxy-k2rgn                                1/1       Running   0          1h
kube-proxy-r57gj                                1/1       Running   0          1h
kube-scheduler-k8s-master-27305297-0            1/1       Running   0          1h
kubernetes-dashboard-3617030121-bk9wv           1/1       Running   1          1h
tiller-deploy-2745651589-89q25                  1/1       Running   0          1h

コンテキストを変えると違うものが動いているのがわかる。

$ kubectl get pods --namespace kube-system
NAME                                    READY     STATUS    RESTARTS   AGE
heapster-342135353-02zrq                2/2       Running   0          4d
kube-dns-v20-1654923623-7v34r           3/3       Running   0          4d
kube-dns-v20-1654923623-x4qwq           3/3       Running   0          4d
kube-proxy-cd6dh                        1/1       Running   0          4d
kube-proxy-sqgds                        1/1       Running   0          4d
kube-proxy-szq0v                        1/1       Running   0          4d
kube-svc-redirect-v97v6                 1/1       Running   2          4d
kube-svc-redirect-vv3nt                 1/1       Running   0          4d
kube-svc-redirect-xq5vw                 1/1       Running   0          4d
kubernetes-dashboard-1672970692-plmdv   1/1       Running   0          4d
tiller-deploy-1114875906-n0x93          1/1       Running   0          3d
tunnelfront-653476575-bx1sl             1/1       Running   0          4d

しかし、ローカルの~/.helm/ ディレクトリは共通のはず。

実際に、~/.helm の下をのぞいて見たが、各クラスタのはなかった。それらは、各tiller で管理していると思われる。だから、kubectl の context を切り替えるだけで切り替わる感じ。ローカルにあるのは、キャッシュだけの模様。

Screen Shot 2017-11-19 at 12.22.15 AM.png

両方のクラスタでデプロイしたものが両方格納されている。キャッシュだけ共通という感じですね。

Resource

2
2
0

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?