WSL2 において az aks get-credentials を反映させる
今回は小ネタです。
WSL2 の環境で az aks get-credentials
コマンドを実行したとき、その資格情報を使ってくれないことへの対処です。
環境
- Windows 10
- WSL2 (Ubuntu 20.04)
事象
WSL2 において、Azure CLI と kubectl をインストールしたのち、AKS への接続として az aks get-credentials
コマンドを実行します。
$ az aks get-credentials -g $RESOURCE_GROUP -n $CLUSTER_NAME
Merged "ndsou-aks" as current context in C:\Users\sou\.kube\config
でも、kubectl コマンドがうまくいかないことがあります。
$ kubectl get nodes
Unable to connect to the server: dial tcp: lookup ****** on ***.***.***.***:53: no such host
原因
az aks get-credentials
コマンドの実行結果をよく見ると、Windows の Users 側のフォルダに config ファイルを保存しています。
Merged "ndsou-aks" as current context in C:\Users\sou\.kube\config
WSL2 側のユーザーのホームディレクトリは /home/<username>
なので、config ファイルを見に行っていないのですね。
$ cd
$ pwd
/home/sou
対処
個人的に一番わかりやすい方法として、config ファイルが作成されたフォルダ、つまり Windows 側のユーザーフォルダに Linux 側からシンボリックリンクを貼ってあげます。
Windows 側のフォルダは、WSL2 からは /mnt
配下からアクセスすることができます。
$ ln -s /mnt/c/Users/sou/.kube .kube
下記のような感じでシンボリックリンクが作成されれば OK。
$ ls -al .kube
lrwxrwxrwx 1 sou sou 22 Dec 20 23:36 .kube -> /mnt/c/Users/sou/.kube
無事、kubectl コマンドも正常に実行できるようになりました。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-agentpool-21132763-vmss000000 Ready agent 9m14s v1.21.2
aks-agentpool-21132763-vmss000001 Ready agent 9m28s v1.21.2
aks-agentpool-21132763-vmss000002 Ready agent 9m21s v1.21.2
おわりに
Azure CLI などは Windows 環境でも利用できますが、Azure ドキュメント類において bash 表記のものは環境変数の設定が PowerShell ではコピペで実施できなくて面倒だったりするので、WSL2 の Ubuntu がオススメです。
WSL2 側で Visual Studio Code を起動すると、Windows 側で起動されるなど便利な連携も充実していますしね🤗
Discussion