ヤマムギ

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

  関連記事

Systems Manager デフォルトのホスト管理設定(Default Host Management Configuration)を確認しました

2023/2/17のアップデートAWS Systems Manager をアカウ …

Amazon SageMakerプロジェクトを使用してMLパイプラインを構築

SageMakerプロジェクトの作成 SageMaker Studioの左ナビゲ …

VyOSにSSMエージェントをインストールしました

VyOSにSSHでログインするのも面倒なので、SSMエージェントをインストールし …

リザーブドインスタンスはじめました

このブログも2014年9月にはじめたので、もうすぐ3年。 1件~17件とばらつき …

AWS App RunnerでGithubリポジトリからデプロイ

AWS App Runner開発者ガイドのチュートリアルをやってみました。 Gi …

Former2で既存リソースのCloudFormationテンプレート出力を試してみた

JAWS DAYS 2020の資料確認のお手伝いを少ししてまして、「ゼロからはじ …

Amazon Location Service入門ワークショップ-ルート計算

Amazon Location Service入門ワークショップのアプリで、ルー …

AWSアカウント内のLambda関数を削除するLambda(Python)

やりたいこと 特定のAWSアカウントの特定リージョンのAWS Lambda関数を …

ParquetフォーマットのデータにS3 Select SQLを実行する

RDSスナップショットのS3エクスポート結果確認で出力したデータが、S3にPar …

AWS RDS でMySQLインスタンスを構築する

Amazon Web ServiceにはAmazon Relational Da …