Windows側のシステムトレイ上のDocker Desktop for WSL2メニューにあるKubernetesコンテキストを、WSL2側の~/.kube/config
と同期するための手順です。同期することで以下のようなことができるようになります。
- WindowsのシステムトレイにあるDocker DesktopメニューからKubernetesコンテキストの参照および切り替えができる。切り替えた場合はWSL2側にKubernetesコンテキストが反映される。
- WSL2側から
~/.kube/config
を更新した場合に、Docker DesktopメニューのKubernetesコンテキストに反映される。
NOTE:
そもそも何故この同期設定が盛り込まれてないのかが個人的には疑問です。どこかのタイミングでDocker Desktop for WSL2がこの同期設定に対応するかもしれないので、その際にはコメントをいただければ幸いです。
設定手順
WSL2およびDocker Desktop for WSL2がインストール済みで利用できる状態を想定しています。
-
Windows側(Docker Desktop)に
%USERPROFILE%\.kube\config
を作成する。既に存在する場合はスキップする。 -
Windows側の
~/.kube/config
を参照するシンボリックリンクをWSL2側に作成する。WSL2のターミナルから以下のようなコマンドを実行することで作成できる。既にWSL2側に~/.kube/config
がある場合はバックアップを取るか削除すること。# システムドライブがCドライブ、Windowsユーザがtaroの場合 # NOTE: c, taroの部分は適切な値に置き換えること mkdir -p ~/.kube ln -s /mnt/c/Users/taro/.kube/config $HOME/.kube/config
これで設定完了となります。
なお、この設定手順ではWindows側の./kube/config
がマスタファイルになります。
以下のようにWSL2側のKubernetesコンテキストとWindows側のDocker DesktopメニューのKubernetesコンテキストが同期していることが分かります。
以下はkindのKubernetesクラスタをWSL2上から作成した直後の画像です。kindのKubernetesクラスタが作成されるとWSL2側の~/.kube/config
のKubernetesコンテキストが追加&更新されますが、これがWindows側のDocker DesktopメニューのKubernetesコンテキストと同期していることが分かります。
NOTE:
ちなみにWSL2のターミナルのシェルプロンプトの「絵文字 + カラフル文字」でのKubernetesコンテキスト表示はkube-ps1.shを利用して実現してます。Kubernetes上での開発や検証が多い人にはお勧めです。