我正在尝试在 EKS 中为服务账户使用 IAM 角色。 https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html
当创建要分配给服务帐户的 IAM 角色时,我必须使用引用特定集群的 OIDC 提供商的信任策略来创建它。
https://docs.aws.amazon.com/eks/latest/userguide/create-service-account-iam-policy-and-role.html
具体来说:
You must also create an IAM role for your Kubernetes service accounts to use before you associate it with a service account. The trust relationship is scoped to your cluster and service account so that each cluster and service account combination requires its own role
这部分:The trust relationship is scoped to your cluster and service account
确实非常有限。
我的问题是,我希望集群是短暂的和短暂的,但我不想每次重建集群时都修改分配给集群中服务帐户的所有应用程序 IAM 角色的信任策略。此外,我希望将相同的 kubernetes 清单(针对相同的服务帐户)应用于多个集群,可能在编写清单和创建应用程序 IAM 角色时不存在的集群上。
在 EKs 之前,使用 时kube2iam
,我只是创建共享实例配置文件的集群节点,并在分配给 Pod 的 IAM 角色的信任策略中使用实例配置文件的角色。这使我能够编写可在多个集群上运行的清单。
显然,我无法在两个 EKS 集群之间共享 OIDC 提供程序,就像我之前共享节点角色(实例配置文件)一样。
我是不是从错误的角度来处理这个问题?我不想在应用程序 IAM 角色的信任策略中硬编码特定于集群的内容(在本例中为 OIDC 提供程序),因为集群不应该是永恒的。我希望能够从头开始重建它,而无需重建我可能在其上运行的应用程序的角色(或服务帐户清单)。
我会坚持使用 kube2iam,但它不适用于 fargate 配置文件,因此服务账户的 IAM 角色是我唯一的解决方案。