AWS 允许跨账户 EKS 集群从 ECR 拉取镜像
AWS Allow Cross-account EKS Cluster to Pull Images from ECR
总结:
我希望启用 EKS 节点以从不同 AWS 项目的 ECR 注册表中提取图像。我在所需的 ECR 存储库中创建了一个“AllowPull”策略,并将该策略的主体设置为 EKS 集群角色的 ARN,但节点无法拉取镜像。
应该如何制定策略以允许 EKS 集群中的所有节点从跨账户 ECR 存储库中提取数据?
尝试详情:
ECR 注册表资源名称是:
arn:aws:ecr:us-east-2:226427918358:repository/external-pull-test
需要拉取镜像的EKS集群附加了以下角色:
arn:aws:iam::02182452XXXX:role/aws-dev-eks-cluster-crpiXXXX091410594876160000000c
外部 ECR 注册表具有以下策略 JSON:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPull",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::02182452XXXX:role/aws-dev-eks-cluster-crpiXXXX091410594876160000000c"
},
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:DescribeImages",
"ecr:DescribeRepositories",
"ecr:GetDownloadUrlForLayer"
]
}
]
}
pod ImagePullBackOff
错误指定尝试向注册表进行身份验证的用户是此假定角色:
arn:aws:sts::02182452XXXX:assumed-role/aws-dev-eks-cluster-crpiXXXX091410594876160000000c/i-0ea4f53b6dfdcxxxx
环境:
- Kubernetes:
v1.16.15-eks-e1a842
其他详细信息:
在策略中使用我的用户主体(跨账户)的 ARN 确实允许我在本地使用 docker 拉取图像。使用代入角色的 ARN 确实使节点能够拉取镜像,但我的理解是,使用特定代入角色配置策略并不能保证集群节点可以始终如一地从注册表中拉取。
另一种方法是在 ECR 控制台上单击“external-pull-test”存储库,在左侧面板的“存储库”下单击“权限”,然后单击右上角的“编辑”。您可以在“AWS 账户 ID”处添加需要从该存储库中提取的账户 ID。检查底部“操作”下拉框中允许的操作。 “保存”,你应该可以拉。
总结:
我希望启用 EKS 节点以从不同 AWS 项目的 ECR 注册表中提取图像。我在所需的 ECR 存储库中创建了一个“AllowPull”策略,并将该策略的主体设置为 EKS 集群角色的 ARN,但节点无法拉取镜像。
应该如何制定策略以允许 EKS 集群中的所有节点从跨账户 ECR 存储库中提取数据?
尝试详情:
ECR 注册表资源名称是:
arn:aws:ecr:us-east-2:226427918358:repository/external-pull-test
需要拉取镜像的EKS集群附加了以下角色:
arn:aws:iam::02182452XXXX:role/aws-dev-eks-cluster-crpiXXXX091410594876160000000c
外部 ECR 注册表具有以下策略 JSON:
{ "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPull", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::02182452XXXX:role/aws-dev-eks-cluster-crpiXXXX091410594876160000000c" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:DescribeImages", "ecr:DescribeRepositories", "ecr:GetDownloadUrlForLayer" ] } ] }
pod
ImagePullBackOff
错误指定尝试向注册表进行身份验证的用户是此假定角色:arn:aws:sts::02182452XXXX:assumed-role/aws-dev-eks-cluster-crpiXXXX091410594876160000000c/i-0ea4f53b6dfdcxxxx
环境:
- Kubernetes:
v1.16.15-eks-e1a842
其他详细信息:
在策略中使用我的用户主体(跨账户)的 ARN 确实允许我在本地使用 docker 拉取图像。使用代入角色的 ARN 确实使节点能够拉取镜像,但我的理解是,使用特定代入角色配置策略并不能保证集群节点可以始终如一地从注册表中拉取。
另一种方法是在 ECR 控制台上单击“external-pull-test”存储库,在左侧面板的“存储库”下单击“权限”,然后单击右上角的“编辑”。您可以在“AWS 账户 ID”处添加需要从该存储库中提取的账户 ID。检查底部“操作”下拉框中允许的操作。 “保存”,你应该可以拉。