このページでは、AWS インスタンス メタデータ サービス(IMDS)をエミュレートする IMDS エミュレータを有効にする方法について説明します。エミュレータをサイドカーとして実行すると、GKE on AWS のノードプールで以前のワークロードを実行できます。Workload Identity を直接サポートしていない以前のワークロードがある場合は、このエミュレータを使用して IMDS データにアクセスします。
制限事項
- クラスタで Kubernetes バージョン 1.24 以降を使用する必要があります。
- エミュレータは、GKE on AWS の前の世代ではサポートされていません。
- IMDS エミュレータ サーバーは、認証情報リクエスト(
API_VERSION/meta-data/iam/security-credentials/
)のみを提供します。他のすべてのメタデータ リクエストは 404 エラーを返します。 - サイドカーのデプロイでは、init コンテナに
NET_ADMIN
とNET_RAW
のセキュリティ コンテキスト容量が必要です。コンテナにこれらのコンテキストがあるかどうか不明な場合は、セキュリティ チームに確認してください。 - AWS STS トークンは 1 時間有効です。EC2 メタデータのロールトークンは 24 時間持続します。エミュレータの使用には影響しませんが、セキュリティ監査の際にこの情報を把握しておく必要があります。
- IMDS エミュレータは IMDSv1 レスポンスのみをエミュレートします。IMDSv2 はサポートされていません。
エミュレータを有効にする
IMDS エミュレータを有効にするには、Pod のメタデータにラベルとアノテーションを追加します。Deployment、DaemonSet、または Pod を作成するその他のリソースを使用してエミュレータを有効にすることもできます。
次のラベルと値を Pod に追加します。
gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
このラベルで許容される値は
True
のみです。他のすべての値(小文字のt
で始まるtrue
を含む)を使用すると、エミュレータが無効になります。次のアノテーションを Pod に追加します。
gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: ARN_ROLE
ARN_ROLE
は、リソースに必要なロールを指定する Amazon リソース名(ARN)に置き換えます。
例
次の例は、IMDS エミュレータが有効になっている Pod です。
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
annotations:
gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: "arn:aws:iam::123456789012:role/my-example-role"
spec:
serviceAccountName: my-sa
containers:
- name: nginx
image: nginx