ヤマムギ

growing hard days.

*

「Amazon EKS Workshop」の環境準備とクラスター作成

   

今はアーカイブになっている1つ前のEKS Workshopの環境準備記録です。
こちらのワークショップパターンがいろいろあるので好きです。
そのうちページがなくなるかもですので、残せるものは残しておきたいと思います。

Cloud9環境

以下の設定で構築しました。
* EC2
* Amazon Linux2023
* t3.small
* 接続: SSM

ツールのインストール

kubectlのインストール

awscliのアップデート

jq、envsubset、bash-completionのインストール

yqのインストール

パスの確認

正常な出力は以下です

kubectl in path
jq in path
envsubst in path
aws in path

kubectlのbash-completionによる自動補完の有効化

AWS Load Balancer Controllerのバージョン固定

Cloud9の認証設定

EC2向けのIAMロール作成と設定

Cloud9を実行しているEC2向けのIAMロールを作成しました。
手順に従ってAWS管理ポリシーのAdministratorAccessを許可ポリシーとして設定しました。
Cloud9のEC2に作成したIAMロールを設定しました。

Cloud9デフォルトのManaged Temporary Credentialsを無効化

Managed Temporary Credentialsを無効化して.aws/credentialsを削除しています。
Managed Temporary Credentialsは設定メニューからも無効化できます。

環境変数にアカウントID、リージョン、アベイラビリティゾーンを設定

手順はIMDSv1ですので、IMDSv2向けのコマンドに変えて実行しています。

確認コマンドの結果
リージョンコード(us-east-1はリージョンによって異なります。
AWS_REGION is us-east-1

bash_profileに保存しました。

リポジトリのクローン

KMSカスタマー管理キーの作成

暗号化キーを作成して環境変数にARNを設定して、bash_profileに保存しています。

eksctlのインストール

バージョンを確認するとバージョン番号だけが返ってきます。

補完を有効にします。

最初のクラスターの作成

クラスターの作成

eksworkshop.yamlを作成しました。
versionは最新にしています。
ノードでスポットインスタンスを使用したかったのでspot: trueにしています。
手順は3つのAZでしたが、2つにしています。

クラスターの作成を開始しました。

15分弱でクラスターとノードグループの作成が完了しました。

CloudFormationではクラスターとノードグループのスタック作成が完了していました。

EKSでもクラスターがアクティブになっていました。

Cloud9でコマンドで確認するとノードが2つ表示されました。

NAME STATUS ROLES AGE VERSION
ip-192-168-22-34.ec2.internal Ready 34m v1.30.0-eks-036c24b
ip-192-168-33-113.ec2.internal Ready 34m v1.30.0-eks-036c24b

kubeconfigの更新

kubeconfigを確認してみます。

i-032b2a62b94ab667bはCloud9のEC2インスタンスです。

次のコマンドでeksworkshop-eksctlというユーザーを追加してデフォルトにしました。

もう一度kubectl config viewで確認すると追加されていました。

ROLE_NAME環境変数の設定

AWS IAMユーザーへのクラスターへのアクセス権限追加

この時点ではマネジメントコンソールにサインインしているIAMユーザーやIAMロールにKubernetesクラスター内のオブジェクトへのアクセス権限がありません。

クラスターのアクセス設定をマネジメントコンソールで確認すると、「EKS APIとConfigMap」となっていました。

IAMアクセスエントリとConfigMapのaws-authの両方がKubernetesクラスターへのアクセスで有効になっています。

ワークショップの手順ではConfigMapとなっています。

ConfigMapで設定する場合

次のコマンドでCloud9環境を構築したIAMユーザー、またはIAMロールのARNをrolearn変数にセットします。

次のコマンドでaws-auth ConfigMapにIAMロールとKubernetes system:mastersグループ、adminユーザーとのマッピングをaws-auth ConfigMapに追加します。

IAMアクセスエントリで設定する場合

[IAMアクセスエントリの作成]を押下して、IAMプリンシパルARNにIAMユーザー、IAMロールのARNを入力してスタンダードを選択しました。

ユーザーとグループは指定していません。
ユーザーは自動で新規作成されます。

アクセス権限と範囲はアクセスポリシーとスコープで設定します。
今回はクラスター全体としました。

指定したIAMロールでマネジメントコンソールからオブジェクトを確認できるようになりました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

  関連記事

EKS「現在の IAM プリンシパルは、このクラスター上の Kubernetes オブジェクトにアクセスできません」

マネジメントコンソールでクラスターのオブジェクトを見ようと、リソースの名前空間や …

ユーザーガイドの方法でGithubからCodeCommitへリポジトリを移行する

GitリポジトリをAWS CodeCommitに移行するを参照しました。 環境 …

RDS ProxyをAurora MySQLで

Lambda関数をたくさん同時実行してMySQLにアクセスしても大丈夫なようにR …

AWS Control TowerにOUを追加する

AWS Control TowerにOUを追加する 管理アカウントでAWS Co …

Amazon EC2 Auto ScalingのVPCは変更できる

EC2 Auto ScalingのVPCは変更できたっけ??と思いまして試しまし …

Route 53で不要なドメインを削除

勢いで作ったけど結局使うのをやめたドメインがあります。 要らないので削除しました …

Amazon CloudWatch RUMはじめました

新機能 – Amazon CloudWatch RUM をご紹介 2021年12 …

Windows EC2インスタンスでEBSとインスタンスストアを使用する

Amazon EBS基本のデモ(「AWS認定試験テキスト AWS認定 クラウドプ …

AWS Step Functions まずはパラレルでLambdaを並列実行してみました

複数のlambdaの実行制御をLambdaでやってましたが、その部分をStep …

EC2 Image BuilderでRocket.ChatのAMIを作って起動テンプレートを更新しました

EC2 Image Builderの練習をしようと思い、Rocket.Chatの …