ヤマムギ

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

  関連記事

NATインスタンスを作成する

プライベートサブネットのEC2インスタンスからカスタムメトリクスとCloudWa …

RDSスナップショットのS3エクスポート結果確認

RDSのスナップショットをS3へエクスポートが日本語マネジメントコンソールでもで …

Amazon Connectから問い合わせ追跡レコード(CTR)をエクスポート

Amazon Connectから発信した電話に出たのか、出なかったのかを確認した …

API Gateway Lambdaプロキシ統合で渡されるリクエストを確認しました

API Gatewayの統合リクエストでLambdaを指定するときにプロキシ統合 …

Amazon EMR 「Hadoop を使用してビッグデータを分析」チュートリアルをやってみました

AWS認定データアナリティクス受験準備の一環で、Amazon EMRのチュートリ …

AWS Systems Manager セッションマネージャを使用するために必要な設定

AWS Systems Manager セッションマネージャを使用するために必要 …

CloudWatch LogsメトリクスフィルタでNginxのaccess_logから転送バイト数をモニタリングする

ユーザーガイドのApache ログからのフィールドの抽出を見てて、これ、Ngin …

GoogleForm,GASからAPI Gateway, Lambdaで入力情報をDynamoDBに格納する

vol.26 AWS認定試験テキスト認定クラウドプラクティショナーのデモ(Dyn …

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

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

SIEM on Amazon OpenSearch Serviceを構築

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