AKS 中使用 ECR
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相关推荐
- k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS
1. 引言 断断续续,感觉这个系列又要半途而废了.趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云. 2. 先了解下 Helm 读过我 ...
- eShopOnContainers 知多少[10]:部署到 K8S | AKS
1. 引言 断断续续,感觉这个系列又要半途而废了.趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云. 2. 先了解下 Helm 读过我 ...
- 如何实现AKS群集部署及挂载共享存储
如何实现AKS(Azure Kubernetes Service) 群集部署及挂载共享存储 目录 Azure Kubernetes Service 服务 1 群集的部署运行与监控 1 背景需求 3 解 ...
- Azure Kubernetes(AKS)云部署平台
Azure Kubernetes(AKS) 简介: 部署官网:https://portal.azure.com/ 链接:https://docs.microsoft.com/zh-cn/azure/a ...
- AKS集群蓝绿部署实现版本升级(下篇)
在本系列文章的上篇,我们已经介绍了AKS蓝绿部署的基本思路,并介绍了如何部署相关资源并将应用网关与AKS进行集成.错过上篇的小伙伴,可以点击这里回看. 本篇我们将基于上篇的内容,进一步介绍如何部署应用 ...
- Azure kubernetes(AKS)安装kubectl
aks的使用上,用户只需要关心node节点上需要多大内存,多少核(硬盘不作主要考虑,因为可以动态申请,实际操作中不存在硬盘容量不足的问题)的机器能满足需求即可,master节点是微软云托管的,因此用户 ...
- AKS集群蓝绿部署实现版本升级(上篇)
Azure Kubernetes 服务 (AKS)是微软云Azure上托管的Kubernetes 群集,可以用于快速部署Kubernetes 群集,结合Azure其它服务和功能,简化日常运维,轻松实现 ...
- Azure-创建AKS集群
Azure Kubernetes 服务 (AKS) Azure Kubernetes 服务 (AKS) 管理托管的 Kubernetes 环境,使用户可以在 Azure 中轻松地部署和管理容器化的应用 ...
- GNU Make 使用手册(于凤昌中译版)
GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...
最新文章
- 我们破解了几乎所有智能手机的人脸识别,唯独没有iPhone
- Windows 8 Hello World
- python mean dropna_小丸子踏入python之路:python_day05(用Pandas处理泰坦尼克船员获救数据titanic_train.csv)...
- 什么样的数据才有价值?应该怎样收集和处理?终于有人讲明白了
- C++自学-默认参数的函数
- 北乐博客装饰分享CSS+HTML+js
- 快速测试UTF8编码的文件是不是加了BOM,不限PHP
- 致敬SpaceX,奥思数据对象存储航天品质服务航天项目
- 17track逆向分析
- pg数据库多表查询(inner)和级联查询
- 豆瓣fm android,豆瓣FM for Android
- Java 求接近黄金分割数的鲁卡斯队列分子分母
- 基于SpingBoot2.0与activiti7.x构建的一套工作流程管理系统
- springboot+Rabit实战二:(Rabbit MQ web 界面管理)
- mysql的genelog_小白实战课堂!转录因子的候选靶基因查询~~
- 游戏党福音,Google play游戏明年登录Windows
- HTML图片和多行文字并列显示
- Python pathlib Path
- Nginx学习 ---- js胖笔记
- Manifest和Repo使用详解