启用 IMDS 模拟器

本页面介绍了如何启用可模拟 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_ADMINNET_RAW 安全上下文容量。如果您不确定容器是否具有这些上下文,请咨询您的安全团队。
  • AWS STS 令牌可以持续一小时。EC2 元数据中的角色令牌可以持续 24 小时。这不会影响您使用模拟器,但您可能需要在安全审核期间了解此信息。
  • IMDS 模拟器仅模拟 IMDSv1 响应。不支持 IMDSv2。

启用模拟器

如需启用 IMDS 模拟器,请为 Pod 的元数据添加标签和注解。您还可以使用 Deployment、DaemonSet 或是创建 Pod 的任何其他资源来启用模拟器:

  1. 将以下标签和值添加到您的 Pod:

    gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
    

    此标签唯一可接受的值是 True。所有其他值(包括带有小写 ttrue)都会停用模拟器。

  2. 将以下注解添加到 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