🎼

WSL2 において az aks get-credentials を反映させる

2021/12/22に公開

今回は小ネタです。

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