ヤマムギ

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認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

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

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

 - AWS , ,

ad

ad

  関連記事

SIEM on Amazon OpenSearch Serviceを構築

このブログまわりのモニタリングをSIEM on Amazon OpenSearc …

Amazon Linux2のジャンボフレーム

ユーザーガイドのEC2 インスタンスのネットワークの最大送信単位 (MTU)を試 …

Amazon Data Lifecycle Manager(DLM)が東京リージョンで使えるようになったのでLambdaでAMI自動取得から乗り換えた

EBSのスナップショットを自動で作成してくれるAmazon Data Lifec …

「最小限のコードで機械学習のためのトレーニングデータを準備する」チュートリアル記録

Amazon SageMaker Data Wranglerのチュートリアルをや …

RDSスナップショットをS3にエクスポートする新機能を試そうかと思った

やったこと RDSスナップショットをS3にエクスポートできる、という新機能が追加 …

EC2 Auto Scalingグループでインスタンスの更新を実行

このブログのAMI、起動テンプレートを更新して、EC2 Auto Scaling …

AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの

勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+ …

ヤマムギvol.27 Amazon Route 53プライベートホストゾーンとリゾルバーのデモをしました

今日は『AWS認定資格試験テキスト&問題集AWS認定ソリューションアーキ …

ブログのアーキテクチャをコストベースで見直しました

当ブログはAWSで構築しています。 アーキテクチャをコストを最重視して見直しまし …

Redmineの添付ファイルをS3に同期する

RedmineをAWS上で構築するデザインを考えていて、せっかくなので冗長化しよ …