AWS 的 ECR服务真的很讨厌. docoker login 的密码必须用 AWS的客户端去获取, 并且有效期只有12小时.

因为有效期的限制.
K8S官网的方案似乎不太可行.

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

在Azure中使用ECR 我参考了这篇文章(需要FQ):

https://briankeating.net/post/Pulling-ECR-images-into-AKS

如果你访问困难, 我发下机翻内容在下面

AKS中使用ECR的镜像

最近我发现自己在使用 Azure 管理的 Kubernetes (AKS),但是我想要提取的镜像在 AWS ECR 中。ECR 的密钥会在 12 小时后过期,所以我们需要不断刷新。

下面我介绍了一种可以使用的方法,它创建了一个服务帐户(注意我将权限应用于默认帐户,因为我的一些部署还没有引用这个服务帐户)用于拉取镜像,有一个将立即执行的 kubernetes 作业和此后每 8 小时执行一次的 cronjob

需要配置imagePullSecrets

spec:imagePullSecrets:- name: dg-ecr-pull

dg-ecr-pull的内容如下:

记得更新那些 “TODO” 部分!

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:name: ecr-cred-updater
rules:
- apiGroups: [""]resources: ["secrets"]verbs: ["get", "create", "delete"]
- apiGroups: [""]resources: ["serviceaccounts"]verbs: ["get", "patch"]
---
apiVersion: v1
kind: ServiceAccount
metadata:name: ecr-cred-updater
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: ecr-cred-updater
subjects:- kind: ServiceAccountname: ecr-cred-updater
roleRef:kind: Rolename: ecr-cred-updaterapiGroup: rbac.authorization.k8s.io
---
apiVersion: batch/v1
kind: Job
metadata:name: ecr-cred-updater
spec:backoffLimit: 4template:spec:serviceAccountName: ecr-cred-updaterterminationGracePeriodSeconds: 0restartPolicy: Nevercontainers:- name: kubectlimage: xynova/aws-kubectlcommand:- "/bin/sh"- "-c"- |                    AWS_ACCOUNT=<TODO>export AWS_ACCESS_KEY_ID=<TODO>export AWS_SECRET_ACCESS_KEY=<TODO>export AWS_REGION=<TODO>DOCKER_REGISTRY_SERVER=https://${AWS_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.comDOCKER_USER=AWSDOCKER_PASSWORD=`aws ecr get-login --region ${AWS_REGION} --registry-ids ${AWS_ACCOUNT} | cut -d' ' -f6`          kubectl delete secret dg-ecr-pull || truekubectl create secret docker-registry dg-ecr-pull \--docker-server=$DOCKER_REGISTRY_SERVER \--docker-username=$DOCKER_USER \--docker-password=$DOCKER_PASSWORD \--docker-email=no@email.localkubectl patch serviceaccount ecr-cred-updater -p '{"imagePullSecrets":[{"name":"dg-ecr-pull"}]}'kubectl patch serviceaccount default -p '{"imagePullSecrets":[{"name":"dg-ecr-pull"}]}'
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:name: ecr-cred-updater
spec:schedule: "* */8 * * *"successfulJobsHistoryLimit: 1failedJobsHistoryLimit: 1jobTemplate:spec:backoffLimit: 4template:spec:serviceAccountName: ecr-cred-updaterterminationGracePeriodSeconds: 0restartPolicy: Nevercontainers:- name: kubectlimage: xynova/aws-kubectlcommand:- "/bin/sh"- "-c"- |AWS_ACCOUNT=<TODO>export AWS_ACCESS_KEY_ID=<TODO>export AWS_SECRET_ACCESS_KEY=<TODO>export AWS_REGION=<TODO>DOCKER_REGISTRY_SERVER=https://${AWS_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.comDOCKER_USER=AWSDOCKER_PASSWORD=`aws ecr get-login --region ${AWS_REGION} --registry-ids ${AWS_ACCOUNT} | cut -d' ' -f6`          kubectl delete secret dg-ecr-pull || truekubectl create secret docker-registry dg-ecr-pull \--docker-server=$DOCKER_REGISTRY_SERVER \--docker-username=$DOCKER_USER \--docker-password=$DOCKER_PASSWORD \--docker-email=no@email.localkubectl patch serviceaccount ecr-cred-updater -p '{"imagePullSecrets":[{"name":"dg-ecr-pull"}]}'kubectl patch serviceaccount default -p '{"imagePullSecrets":[{"name":"dg-ecr-pull"}]}'

AKS 中使用 ECR相关推荐

  1. k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS

    1. 引言 断断续续,感觉这个系列又要半途而废了.趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云. 2. 先了解下 Helm 读过我 ...

  2. eShopOnContainers 知多少[10]:部署到 K8S | AKS

    1. 引言 断断续续,感觉这个系列又要半途而废了.趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云. 2. 先了解下 Helm 读过我 ...

  3. 如何实现AKS群集部署及挂载共享存储

    如何实现AKS(Azure Kubernetes Service) 群集部署及挂载共享存储 目录 Azure Kubernetes Service 服务 1 群集的部署运行与监控 1 背景需求 3 解 ...

  4. Azure Kubernetes(AKS)云部署平台

    Azure Kubernetes(AKS) 简介: 部署官网:https://portal.azure.com/ 链接:https://docs.microsoft.com/zh-cn/azure/a ...

  5. AKS集群蓝绿部署实现版本升级(下篇)

    在本系列文章的上篇,我们已经介绍了AKS蓝绿部署的基本思路,并介绍了如何部署相关资源并将应用网关与AKS进行集成.错过上篇的小伙伴,可以点击这里回看. 本篇我们将基于上篇的内容,进一步介绍如何部署应用 ...

  6. Azure kubernetes(AKS)安装kubectl

    aks的使用上,用户只需要关心node节点上需要多大内存,多少核(硬盘不作主要考虑,因为可以动态申请,实际操作中不存在硬盘容量不足的问题)的机器能满足需求即可,master节点是微软云托管的,因此用户 ...

  7. AKS集群蓝绿部署实现版本升级(上篇)

    Azure Kubernetes 服务 (AKS)是微软云Azure上托管的Kubernetes 群集,可以用于快速部署Kubernetes 群集,结合Azure其它服务和功能,简化日常运维,轻松实现 ...

  8. Azure-创建AKS集群

    Azure Kubernetes 服务 (AKS) Azure Kubernetes 服务 (AKS) 管理托管的 Kubernetes 环境,使用户可以在 Azure 中轻松地部署和管理容器化的应用 ...

  9. GNU Make 使用手册(于凤昌中译版)

    GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...

最新文章

  1. 我们破解了几乎所有智能手机的人脸识别,唯独没有iPhone
  2. Windows 8 Hello World
  3. python mean dropna_小丸子踏入python之路:python_day05(用Pandas处理泰坦尼克船员获救数据titanic_train.csv)...
  4. 什么样的数据才有价值?应该怎样收集和处理?终于有人讲明白了
  5. C++自学-默认参数的函数
  6. 北乐博客装饰分享CSS+HTML+js
  7. 快速测试UTF8编码的文件是不是加了BOM,不限PHP
  8. 致敬SpaceX,奥思数据对象存储航天品质服务航天项目
  9. 17track逆向分析
  10. pg数据库多表查询(inner)和级联查询
  11. 豆瓣fm android,豆瓣FM for Android
  12. Java 求接近黄金分割数的鲁卡斯队列分子分母
  13. 基于SpingBoot2.0与activiti7.x构建的一套工作流程管理系统
  14. springboot+Rabit实战二:(Rabbit MQ web 界面管理)
  15. mysql的genelog_小白实战课堂!转录因子的候选靶基因查询~~
  16. 游戏党福音,Google play游戏明年登录Windows
  17. HTML图片和多行文字并列显示
  18. Python pathlib Path
  19. Nginx学习 ---- js胖笔记
  20. Manifest和Repo使用详解

热门文章

  1. 服务器多ip怎么设置网站,一个服务器如何设置多个ip地址
  2. Fortify的安装使用
  3. 湖北省农村生活污水处理方案出炉,助推乡村生态振兴
  4. Linux下压缩、解压命令、压缩比介绍说明
  5. vue中 element-ui引入阿里巴巴图标库两种办法
  6. 魔兽争霸 / 星际争霸 无法使用 CTRL + 1 进行编队
  7. WEB开发环境搭建之TomcatWeb服务器
  8. 高深理论影响科学传播
  9. 一条短信骗走你所有财产!骗子是怎么做到的?
  10. [附源码]计算机毕业设计JAVA基于jsp篮球云网站