kubectl コマンドを使うとき異なる Kubernetes 環境を切り替えるには
前回、複数のプライベート Docker レジストリを切り替えて使う方法を紹介した。
今回は Kubernetes における環境切り替えの方法。
Kubernetes の設定ファイルは、デフォルトでは ~/.kube/config
というパスに配置される。特に環境変数での設定などがなければ、このファイルの存在をチェックして kubectl
コマンドが動作する。
~/.kube/config
ファイルの中身は YAML 形式だ。環境変数 KUBECONFIG
に複数の config
ファイルのパスを渡してやることで、複数の環境にアクセスできるようになる。その際は、kubectl
コマンドに --context
オプションを必ず渡して、どの環境に対する操作なのかを明示する必要がある。
コレが一番正しいのかもしれないが、--context
オプションを書くのが面倒なので、違う方法を考えてみた。
まず、デフォルトで配置される ~/.kube/config
というファイルは、リネームして配置しておかないようにする。そうすると、シェルを起動した時にいきなり kubectl
を叩いても、どこにも繋がらない状態になる。
各環境の設定ファイルは、~/.kube/config-dev
とか ~/.kube/config-prd
といった別名を付けて配置しておく。
で、特定の環境に繋ぎたい場合に備えて、以下のようなエイリアスを用意しておく。
# 開発環境…みたいなテイ
alias kubectl-dev='export KUBECONFIG="$HOME/.kube/config-dev"'
# 本番環境…みたいなテイ
alias kubectl-prd='export KUBECONFIG="$HOME/.kube/config-prd"'
見れば分かるが、ただ環境変数 KUBECONFIG
を書き換えているだけ。操作したい環境に合わせて、事前に kubectl-dev
とか kubectl-prd
とかを叩いてから、kubectl get pod
とかを呼ぶようにする。
シェルに入った時にデフォルトで参照されるファイルを置いておかなければ、「開発環境だと思ってウッカリ本番環境を触ってしまった」とか「本番環境を操作しないといけないのにずっと開発環境をいじっていた」といったオペミスを防ぎやすいかな、という狙い。個人的にはこの「安全策」が性に合っている。