本页面介绍了如何启用可模拟 AWS 实例元数据服务 (IMDS) 的 IMDS 模拟器。您可以将该模拟器作为 Sidecar 运行,以使旧版工作负载在 GKE on AWS 节点池中运行。如果您的旧版工作负载不直接支持 Workload Identity,请使用此模拟器访问 IMDS 数据。
限制
- 您的集群必须使用 Kubernetes 1.24 版或更高版本。
- 上一代 GKE on AWS 不支持该模拟器。
- IMDS 模拟器服务器仅处理凭据请求 (
API_VERSION/meta-data/iam/security-credentials/
)。所有其他元数据请求都会返回 404 错误。 - Sidecar 部署要求 init 容器具有
NET_ADMIN
和NET_RAW
安全上下文容量。如果您不确定容器是否具有这些上下文,请咨询您的安全团队。 - AWS STS 令牌可以持续一小时。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