【小ネタ】k8sのLens使ってみたらちょっと詰まったので解決してきたメモ
2021-01-13
azblob://2022/11/11/eyecatch/2021-01-13-k8s-auth-error-shoot-000.jpg

この記事はなむゆの個人ブログとのマルチポストです。

【小ネタ】k8sのLens使ってみたらちょっと詰まったので解決してきたメモ - nam_yu_sqlのブログ (hatenablog.com)

こんにちは、コンテナが立つと初めてわが子が立ったように喜ぶなむゆです。
去年、「k8sのIDE、Lensが便利な件について」という記事を見て、あぁ~kubernetes周りのツールについても知りたいな~Lens使ってみよっかなと思い立ちました。
それで実際に使ってみたのですが、Lensで接続するクラスターを指定するのに必要なkubeconfig周りで若干詰まって、それを解決してきたので今回はそのネタで一席打ちます。

kubeconfigとは

kubeconfigとはkubernetesのクラスターに接続するのに使う接続文字列のようなもので、「接続先のクラスターのurlはここよ~」とか「接続するときはこの認証情報を使うんよ~」といった情報が記されています。
kubernetesに接続する際にはこのファイルを使って接続を行うため、Lensのようなツールでも接続文字列として使用しているわけです。
デフォルトでは[ホームディレクトリ]/.kube/configのパスに存在するほか、「KUBECONFIG」の環境変数で指定されたパスや「--kubeconfig」のパラメータで指定したパスに存在するファイルをkubeconfigファイルとして使用できます。
詳しくはこちら

起きたこと

Azure上に「namuyutest01」という名前でAKSのリソースを作成し、ローカルでaz login を行ってクレデンシャルを取得しました。
Lensを起動すると接続先のkubeconfigファイルを求められたので現在使用しているkubeconfigを表示するコマンドのkubectl config viewコマンドを使用してkubeconfigを表示しました。だいたいこんな感じです。

「REDACTED」って何なの・・・と思いつつこれをコピーしてLensに張り付け、接続してみたらエラーが発生しました。

というかLens、goのコードで動いてるのですね・・・
等と妙に感心しました。

解決方法

結論から言いますと、kubectl config view --raw コマンドを使ってちゃんと生のkubeconfigを取得しましょうねということでした。
kubectl config view のコマンドだとあまりにも文字数の多いトークンなどの情報が「REDACTED」として省略されていたのですね。

生のkubeconfigを取得してLensに張り付けて接続すると・・・

やった~~~~~~~~~!

教訓

正直自分はkubernetesをAKSでしか使用していなかったので、kubeconfigファイルについて「あーget-credentialで取得できるやつ」程度の認識でいました。
実際にはその中身にはちゃんと意味があるので、中身に何が書かれているかはちゃんと把握しておくべきです!

ということでLensを使う時に遭遇したエラーを解決したお話でした。
よっしゃこれでLens使えるぞー!
業務で役立つことは間違いないので、ぜひ使ってみましょう。

参考