Last year I shared the production-ready, cloud native solution to deploy Sonatype Nexus Repository OSS on AWS. The solution has an update with below notable changes, support specifying EKS version, v1.20, v1.19, and v1.18 are supported versions support provisioning to existing VPC support provisioning to existing …
Read More本方案的起因是,一个源代码托管在Github上的项目fix一个重要的bug后,在AWS上的持续部署流水线一直失败。分析日志后,发现流水线中的数个步骤需要克隆源代码,但是访问Github的网络非常不稳定,这数个流水线任务持续因连接超时,连接拒绝等网络错误而失败。而流水线任务大量使用了CodeBuild, Lambda等AWS托管服务,无法为执行环境配置可靠的网络连接。 本方案思路如下, 在 VPC public subnets 中创建 NAT instance 即 EC2 虚拟机, 配置 NAT instance,使用 tunnel 网络访问 github, 修改 private subnets 的路由表,添加 github …
Read MoreInfrastructure as Code is the trend to manage the resources of application. AWS CloudFormation is the managed service offering the IaC capability on AWS since 2011. CloudFormation uses the declarative language to manage your AWS resources with the style what you get is what you declare. However there are cons of …
Read More亚马逊的部署最佳实践
近期Amazon Builders Library发布了数篇文章介绍亚马逊如何实践持续部署,同时分享了亚马逊在部署方面的最佳实践。 这里将这三篇文章核心内容做个概述,方便大家按需细读。 Going faster with continuous delivery 这篇文章先是分享了亚马逊持续改进和软件自动化的文化(Amazonian随时都惦记着的领导力准则),然后介绍了亚马逊内部的持续部署工具Pipelines。从一个试点工具进化为亚马逊标准、一致且简洁的发布工具。并且将构建和发布软件的最佳实践检查也融入到Pipelines中。 接下来是分享如何减小故障影响到客户的风险。有过软件开发经验的都知道,软件变更引入故障是不可避免的,如何将故 …
Read MoreAWS CDK是编排部署AWS云上资源最佳的工具之一。基于AWS CDK的应用应该如何实践DevOps持续集成和部署呢? 通常我们有下面几种方法, 使用AWS CodePipeline来完成DevOps pipeline搭建。CodePipeline是AWS Code系列服务中的持续集成编排工具,它可以集成CodeBuild项目,在CodeBuild项目build中安装cdk,并执行cdk deploy命令来实现应用部署。 这种方法简单直接的实现了DevOps部署流水线。但缺少staging,将最新提交直接部署到生产是一种非常高风险的做法。 CDK近期发布了体验性的新特性CDK Pipelines来封装CDK应用持续部署流水线的配 …
Read MoreSonatype Nexus repository OSS is an artifact repository that supports most software repositories such as Maven, Pypi, Npmjs, Rubygems, Yum, Apt, Docker registry and etc. In the enterprise Nexus repository is widely used for storing proprietary artifacts and caching the artifacts for speeding up the devops. Building a …
Read More无服务器架构的Docker镜像数据分析应用
近期对Docker镜像做了些数据分析,这里分享一下利用云原生技术快速且低成本的实现任意数量的数据分析。 之前通过文章介绍了不用拉取Docker镜像就可获取镜像的大小的一种方法,通过其中的示例脚本,我们可以获取到待分析的原始数据。 比如nginx镜像的部分原始数据(csv格式)如下, 1 2 3 4 5 6 7 8 9 10 11 12 …
Read MoreRecently I had a requirement to stats the size of some Docker images. It would be waste if pulling them all firstly then calculating the size of each image. Also you know the docker image consists of some Docker layers that probably are shared by other images. It's hard to get the disk usage if only sum the size of …
Read MoreZ shell搭配oh-my-zsh自定义配置已成为众多Linux/Macosx用户的标准terminal配置。 最近遇到在zsh中执行任意命令都变得特别慢(哪怕简单执行ls也要花费肉眼可见的1,2秒钟),这里记录下如何排查Z shell下启用oh-my-zsh的性能问题。 性能问题症状 突然某天起在终端中执行任意命令,都至少要花费1,2秒(肉眼计数),该命令才会完成执行并退出到终端开始接受新的输入。 我当前主要使用的终端是iTerm2,执行命令后,在终端Tab的title bar上能显式的看到git命令也被执行了。 尝试了其他的shell,比如bash,是没有这个问题。基本断定问题同zsh相关。更多问题描述乃至动画截屏,可以参见这 …
Read MoreGithub/Gitlab已经成为众多开发者非常熟悉的代码协作平台,通过他们参与开源项目或实施企业内部项目协作。 AWS也提供了托管的、基于Git、安全且高可用的代码服务CodeCommit。CodeCommit主要针对企业用户场景,所以他并没有社交功能以及代码仓库fork功能,是否CodeCommit就无法实现Github基于Pull Request的协同工作模式呢? 答案是,CodeCommit完全可以实现基于Pull Request的代码协作。由于Git的分布式代码管理特性,首先fork上游项目仓库,将修改后的代码提交到fork仓库,通过Pull Request申请修改请求合并。Github将这套协作流程推广开来并被开源项目广 …
Read More