首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在EKS中使用来自其他帐户的ECR镜像

在Amazon EKS(弹性Kubernetes服务)中使用来自其他AWS帐户的ECR(弹性容器注册表)镜像需要一些额外的步骤来确保安全性和权限

步骤1:跨帐户权限配置

  1. 创建IAM角色:在拥有ECR镜像的帐户中,创建一个IAM角色,该角色允许EKS集群所在的帐户访问ECR中的镜像。
  2. 配置信任关系:在创建的IAM角色中,添加一个信任关系,允许EKS集群所在的帐户承担此角色。
  3. 获取临时凭证:使用AWS CLI或SDK从拥有ECR镜像的帐户中的IAM角色获取临时安全凭证。

步骤2:在EKS集群中使用镜像

  1. 更新Kubernetes部署文件:在部署文件中,使用从其他帐户获取的临时凭证来拉取ECR镜像。这通常涉及到在部署文件的imagePullSecrets部分添加一个docker-registry秘密。
  2. 创建或更新秘密:在EKS集群所在的帐户中,使用获取的临时凭证创建或更新一个docker-registry秘密。

示例

假设你有两个帐户:Account-A(拥有ECR镜像)和Account-B(运行EKS集群)。

在Account-A中创建IAM角色

  1. 登录到Account-A
  2. 创建一个IAM角色,例如EKS-ECR-Access,并附加一个策略,允许Account-B拉取ECR中的镜像。
  3. 配置信任关系,允许Account-B承担此角色。

在Account-B中获取临时凭证

使用AWS CLI从Account-A中的IAM角色获取临时凭证:

代码语言:javascript
复制
aws sts assume-role --role-arn arn:aws:iam::ACCOUNT-A-ID:role/EKS-ECR-Access --role-session-name "EKS-Session"

这将返回一组临时凭证(AccessKeyIdSecretAccessKeySessionToken)。

在EKS集群中使用镜像

  1. 使用临时凭证创建或更新docker-registry秘密:
代码语言:javascript
复制
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 -
  1. 更新Kubernetes部署文件,添加imagePullSecrets
代码语言:javascript
复制
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
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券