はじめに
最近よく聞くようになったKubernetesを会社でも取り入れ始めてきたので、その際にノウハウを少しまとめようと思います。といっても今回は表題にある2つ「クラスター切り替え」「ネームスペース切り替え」について書いていきます。
環境
Mac OS Sierra 10.12.6
Kubernetes 1.10.7
クラスター切り替え
いろいろなプロジェクトに携わらせていただくと、複数のKubernetesクラスターを切り替えながら作業を行う必要があります。その際は通常のコマンドを使用すると下記のような感じで切り替えを行うことができます。
# ①コンテキストに設定されているクラスター一覧を取得
kubectl config get-clusters
# ②現在のクラスター確認
kubectl config current-context
# ③接続クラスター変更
kubectl config use-context [cluster name]
※ これらのコマンドは~/.kube/config
ファイルを書き換えています。
これはこれでいいのですが、頻繁に切り替えが発生するとこれらのコマンドが面倒だったりします。そこでkubectxを使用するともっと簡単に切り替えをすることができます。
インストール
MacであればHomebrewで簡単にインストールできます。
brew install kubectx
使用方法
USAGE:
kubectx : list the contexts
kubectx <NAME> : switch to context <NAME>
kubectx - : switch to the previous context
kubectx <NEW_NAME>=<NAME> : rename context <NAME> to <NEW_NAME>
kubectx <NEW_NAME>=. : rename current-context to <NEW_NAME>
kubectx -d <NAME> : delete context <NAME> ('.' for current-context)
(this command won't delete the user/cluster entry
that is used by the context)
僕の場合さらにfzfを組み合わせてインタラクティブに操作可能にしています。こちらを使用することで面倒なクラスター切り替えも気にならなくなりました。
ネームスペース切り替え
クラスター切り替えよりももっと煩わしいのはネームスペースの指定や切り替えです。通常は下記のようにオプション指定するか~/.kube/config
ファイルを書き換えますが、kubensを使用するともっと簡単行えます。
# オプション指定
kubectl get pod --namespace=[namespace name]
kubectl get pod -n=[namespace name]
# configファイル書き換え
kubectl config set-context $(kubectl config current-context) --namespace=[namespace name]
オプションを毎回指定するのは煩わしいし、だからといってconfig書き換えも都度やるには長すぎる。僕にはとても覚えられない。
インストール
kubectxを入れるとkubensも含まれています。
使用方法
USAGE:
kubens : list the namespaces
kubens <NAME> : change the active namespace
kubens - : switch to the previous namespace
こちらを使用するとしないとではほんとに作業効率が変わってくるんじゃないかと思います。
まとめ
今回はkubernetesを使用しているなかで煩わしい環境切り替えについてまとめました。クラスターを複数使用している方はまだ少ないかなと思いますが、それでもテストでローカル(minikube)を使っていたりはすると思うので効果はあると思います。またkubernetesはnamespaceでプロジェクトやenvを分けたりすることが多いので、kubensは多用できればかなり効率的に作業できると思います。そのへんが面倒だなと思っていた方はぜひ使ってみて下さい。
参考
青山 真也 (著)の Kubernetes完全ガイド を参考にさせていただきました。ありがとうございました。