この前はcloudshellでつないだので、今回はローカルPCからEKSに接続してみたいと思います。
ローカルPCはwindowsでWSLを使います。
AWS-CLIのインストール
EKSはAWSのユーザーの認証情報がないと接続できないようですのAWS-CLIをインストールします。
sudo apt install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
これでAWS-CLIがインストールできました。
AWS-CLIに認証情報登録
次にAWS-CLIに認証情報を入れていきます。まずIAMでユーザーのアクセスキーを作成します。
アクセスキーを使用するユーザーはEKSでクラスターを作成したユーザーにします。クラスターを作成したユーザーでなくてもaws-auth ConfigMapなどでEKSに接続させることはできそうなのですが、今回は動作確認だけなのでrootのアクセスキーを使用しました。
(通常であればrootのアクセスキーを作成することは強く推奨されていないので動作確認が出来たらすぐに消しました)
rootのアクセスキーは右上のユーザー名をクリックするとセキュリティ認証情報というのがあるのでそこをクリックするとアクセスキーの欄がありますのでそこから作成してください
アクセスキーが取得できたら以下のようにaws configureコマンドでアクセスキーを入力します。
aws configure
例
root@MYLOCALPC:~/.kube# aws configure
AWS Access Key ID [****************AAAA]: AABBCCDDEEFFGG
AWS Secret Access Key [****************ZZZZ]: aabbccddeeffgg112233445566778899
Default region name [ap-southeast-2]: ap-southeast-3
Default output format [None]:
これで認証情報は完了です。
kubectlコマンドと動作確認
ローカルPCのWSLにkubectlをインストールします。
ネイティブなパッケージマネージャーを使用してインストールするという項を参照にインストールしました。
次に.kube/configにEKSクラスターの情報を引っ張ってくる必要があります。
aws eks update-kubeconfig --region <リージョン名> --name <クラスター名>
これで.kubeがホームディレクトリに作成されたら準備完了です。
root@MYLOCALPC:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
i-0713af9c9bd180d56 Ready <none> 121m v1.31.4-eks-0f56d01
i-09a97192e21ca8a79 Ready <none> 135m v1.31.4-eks-0f56d01
こんな感じでnodeが取れていたらOKです。ローカルPCからでもEKSの操作ができることがわかりました。
おまけ:トラブルシューティング
couldn't get current server API group list: the server has asked for the client to provide credentials
みたいなエラーになったら参考になれば幸いです
エンドポイントは公開されているかどうか確認
aws eks describe-cluster \
--region リージョン名 \
--name クラスタ名 \
--query "cluster.resourcesVpcConfig.endpointPublicAccess"
true
が返ってきた場合 → Public エンドポイントが有効
false
が返ってきた場合 → Public エンドポイントが無効(VPN などが必要)
デフォルトではtrueだと思います
クラスターのネットワーキング→エンドポイントアクセスを管理からでも見れます

IAM認証情報が正しいか
aws sts get-caller-identity
EKSクラスタを作成したユーザーのアクセスキーになっているかどうか確認
再度aws eks update-kubeconfig
aws eks update-kubeconfig --region <リージョン名> --name <クラスター名>
再度実行してみる
.kube/configでcommand:awsがexecの中にあるか確認
なければcommand:awsを手動で追加するかaws-iam-authenticatorをインストールするかどうからしい
aws-auth ConfigMap
今度はaws-auth configmapを使ってクラスタを作成したユーザーとは別のユーザーでアクセスをできるように試してみたいと思います。