EKS托管节点Pod拉取ECR Public镜像的认证状态及配置方法
问题
我了解到有一个Amazon ECR Public凭证助手脚本,但该仓库已归档,说明“如今Amazon ECR Public会将AWS计算负载发起的所有镜像拉取请求视为已认证请求”。我无法在AWS官方找到相关文档对此进行确认,想请教两个问题:
- 若我的Pod部署在使用AWS托管节点的EKS集群中,Pod启动时发起的ECR Public镜像拉取请求是否已认证?
- 若未认证,我该如何配置imagePullSecrets以配合相关凭证助手使用?
回答
关于ECR Public拉取请求的认证状态
运行在AWS托管节点(如EKS托管节点组)上的Pod,拉取ECR Public镜像时默认会自动完成认证。ECR Public会识别来自AWS计算资源(包括EKS节点)的请求,自动通过节点关联的IAM角色完成身份校验,无需额外配置凭证。这和你提到的归档仓库说明一致。
若需手动配置imagePullSecrets(特殊场景)
如果遇到拉取未认证的情况(比如自定义节点配置、跨区域特殊场景等),可以按以下步骤配置:
- 创建一个具备
AmazonEC2ContainerRegistryPublicReadOnly权限的IAM用户,生成该用户的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。 - 使用kubectl创建Docker registry类型的Secret:
或者通过AWS CLI自动获取临时密码(需提前配置好该IAM用户的CLI凭证):kubectl create secret docker-registry ecr-public-secret \ --docker-server=public.ecr.aws \ --docker-username=AWS \ --docker-password=<你的AWS_SECRET_ACCESS_KEY> \ --docker-email=your-email@example.comkubectl create secret docker-registry ecr-public-secret \ --docker-server=public.ecr.aws \ --docker-username=AWS \ --docker-password=$(aws ecr-public get-login-password --region us-east-1) \ --docker-email=your-email@example.com - 在Pod或Deployment的配置中引用该Secret:
apiVersion: apps/v1 kind: Deployment metadata: name: your-deployment spec: replicas: 1 selector: matchLabels: app: your-app template: metadata: labels: app: your-app spec: imagePullSecrets: - name: ecr-public-secret containers: - name: your-container image: public.ecr.aws/your-namespace/your-image:tag
内容的提问来源于stack exchange,提问作者deez
相关产品推荐
相关产品推荐

