在Amazon EKS(弹性Kubernetes服务)中使用来自其他AWS帐户的ECR(弹性容器注册表)镜像需要一些额外的步骤来确保安全性和权限
imagePullSecrets
部分添加一个docker-registry
秘密。docker-registry
秘密。假设你有两个帐户:Account-A
(拥有ECR镜像)和Account-B
(运行EKS集群)。
Account-A
。EKS-ECR-Access
,并附加一个策略,允许Account-B
拉取ECR中的镜像。Account-B
承担此角色。使用AWS CLI从Account-A
中的IAM角色获取临时凭证:
aws sts assume-role --role-arn arn:aws:iam::ACCOUNT-A-ID:role/EKS-ECR-Access --role-session-name "EKS-Session"
这将返回一组临时凭证(AccessKeyId
,SecretAccessKey
和SessionToken
)。
docker-registry
秘密:kubectl create secret docker-registry ecr-secret \
--docker-server=https://ACCOUNT-A-ID.dkr.ecr.region.amazonaws.com \
--docker-username=AWS \
--docker-password=<AccessKeyId>:<SecretAccessKey> \
--docker-email=unused \
--dry-run=client -o yaml | kubectl apply -f -
imagePullSecrets
:apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: ACCOUNT-A-ID.dkr.ecr.region.amazonaws.com/my-repo/my-image:latest
imagePullSecrets:
- name: ecr-secret
领取专属 10元无门槛券
手把手带您无忧上云