AWS EKSを使ってみよう Part2~ローカルPCからEKSに繋いでみよう

aws

この前はcloudshellでつないだので、今回はローカルPCからEKSに接続してみたいと思います。

ローカルPCはwindowsでWSLを使います。

AWS-CLIのインストール

EKSはAWSのユーザーの認証情報がないと接続できないようですのAWS-CLIをインストールします。

AWS CLI の最新バージョンのインストールまたは更新 - AWS Command Line Interface
システムに 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をインストールします。

Linux上でのkubectlのインストールおよびセットアップ
始める前に kubectlのバージョンは、クラスターのマイナーバージョンとの差分が1つ以内でなければなりません。 たとえば、クライアントがv1.32であれば、v1.31、v1.32、v1.33のコントロールプレーンと通信できます。 最新の互換性のあるバージョンの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を使ってクラスタを作成したユーザーとは別のユーザーでアクセスをできるように試してみたいと思います。

タイトルとURLをコピーしました