
「kubectl config use-context コンテキスト名」でKubernetesのクラスタ切り替え
Kubernetesを触っていると、「あれ、今どのクラスタに接続してるんだっけ?」なんて不安になった経験はありませんか?特に、開発用と本番用のクラスタが混在していると、「うっかり本番環境を壊しちゃった!」なんて怖い想像をしてしまうことも…。
そんな「操作ミス」を防ぐために便利なのが、Kubernetesの「コンテキスト」という仕組みです。今日は、この「コンテキスト」を簡単に切り替えられるコマンドについて、一緒に見ていきましょう!
Kubernetesの「コンテキスト」ってなに?
そもそもコンテキストとは、Kubernetesクラスタへの接続情報をまとめて整理しておくための仕組みです。日常で例えるなら、「スマホに登録した電話帳」のようなもの。電話帳には「友達の名前(コンテキスト名)」と、それに紐づいた「電話番号(クラスタのAPIアドレス)や連絡先情報(ユーザーや証明書)」がセットになっていますよね。
Kubernetesのコンテキストにも、次の情報がセットになっています。
クラスタ情報(APIサーバーの場所や接続方法)
ユーザー情報(ログインするための認証情報)
ネームスペース(作業時のデフォルトnamespace)
この情報をあらかじめ設定しておくことで、状況に合わせて簡単に切り替えながら操作ができるようになるんです。
コンテキストを切り替える方法
コンテキストを切り替えるコマンドはシンプルです。
kubectl config use-context <コンテキスト名>
例えば、開発用のクラスタに接続を切り替えたい時は、次のようになります。
kubectl config use-context dev-cluster
これを実行すると、dev-clusterという名前で設定されているコンテキストが有効になり、以降の操作はすべてこの設定を使って行われます。
日常の場面で例えると、「スマホの電話帳で、家族に電話をかける時には『家族の名前』を選んで発信する」のと似ていますね。間違って他の人にかけてしまわないように、正しく相手(コンテキスト)を選ぶイメージです。
今のコンテキストはどれ?一覧から確認しよう
今、自分がどのコンテキストを使っているかは、簡単に確認できます。
kubectl config get-contexts
実行すると、こんな風に一覧が表示されます。
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
dev-cluster dev-cluster developer
* prod-cluster prod-cluster admin default
ここで、* がついているのが現在有効なコンテキスト。上の例では「prod-cluster」が有効になっているので、もし開発環境に戻したい場合は先ほどのコマンドで変更しましょう。
コンテキストを切り替えると何が起きる?
このコマンドを実行すると、実際にはこんなことが起きています。
(1) Kubernetesの設定ファイル(通常は$HOME/.kube/config)に記録されている「current-context」が指定したコンテキスト名に変更されます。
(2) kubectlは、この変更を読み取り、次からのコマンドが新しいコンテキストの情報をもとにクラスタにアクセスします。
つまり、「電話帳の『お気に入り』を切り替えることで、次に電話をかける相手を間違えないようにしている」ようなイメージですね。
コンテキストを切り替えるときの注意点
簡単に切り替えられる反面、気をつけることもあります。
(1) 切り替える先のコンテキストがあらかじめ登録されていること
存在しないコンテキストを指定するとエラーになります。
(2) 操作する環境を間違えないこと
特に本番環境に接続しているときは要注意!間違った操作が致命的なトラブルにつながります。
まさにスマホの電話帳で、「同じ名字の人にうっかり違う内容のメッセージを送ってしまった…」なんて失敗と似ていますね。
よく使う関連コマンドも覚えておこう
コンテキストを使いこなすために、よく使うコマンドを覚えておくと便利です。
コンテキスト一覧表示(今どれを使っているかを確認)
kubectl config get-contexts
現在のコンテキストを簡単に表示
kubectl config current-context
新しいコンテキストを追加・編集・削除
kubectl config set-context <名前> --cluster=<クラスタ名> --user=<ユーザー名> [--namespace=<ネームスペース名>]
kubectl config delete-context <コンテキスト名>
まとめ:「うっかりミス」を減らすために
Kubernetesのコンテキスト切り替えは、シンプルですが意外と重要な作業です。普段から意識的に切り替えていれば、「間違って本番環境を壊してしまった…」なんて怖いミスを未然に防ぐことができます。
「kubectl config use-context <コンテキスト名>」をマスターして、安心・安全なクラスタ運用を心掛けていきましょう!