前言
If you are developing software without a repository manager you are likely missing a number of opportunities to reduce some pretty obvious inefficiencies. If everyone on your team has to hit public repositories like the Central Repository to download components, you are missing out on some simple gains in speed and efficiency. 如果您开发的软件没有存储库管理器,则可能会丢失许多机会来减少一些非常明显的低效率。 如果团队中的每个人都必须访问诸如中央存储库之类的公共存储库以下载组件,那么您会在速度和效率上有所损失。
Nexus Repository Manager (NXRM)可以用来做什么?是个人都知道,你从maven中央仓库下载jar包有多慢,即便更换阿里云仓库,依旧是慢慢慢,更慢的是docker,从docker hub下载镜像的乌龟速度简直难以忍受,换成阿里云还好一些,毕竟docker镜像也不是经常下载。NXRM是干什么的?就是在局域网搭建一个类库的私服,支持如maven,docker,npm等等。他的工作原理是作为中间代理,缓存远程外部服务器的类库,比如在团队内部,第一个人下载了一个jar包,则这个jar包就被缓存在内网的maven私服,其他人再下载就相当于从内网下载。当然另一层功能是上传并存储自己自定义的jar,docker 镜像等,给整个团队共享。以下基于k8s管理平台Rancher,讨论maven私服和docker私服的搭建。
用处
- maven私服:代理远程仓库(如阿里云仓库)缓存jar包,并提交自己的jar包,方便团队内部的拉取构建。
- docker私服:作为内网k8s集群的容器镜像服务。
部署
1.基于Helm也就是rancher 的应用商店,搜索并部署nexus
,由于nexus是缓存远程服务器的官方组件,所以占用磁盘空间很大,官方默认配置8G,但是推荐的1024G,8G肯定不够用,修改默认配置为100G。nexus部署是一个pod,两个容器。两个容器分别是nexus服务和nexus proxy服务作为访问nexus的代理,真正需要自定义配置的是nexus proxy服务。
2.nexus proxy服务对外暴露8080端口,而nexus由于是多个仓库,需要多个端口,所以使用nexus proxy来代理这多个端口,通过配置多个域名指向nexus proxy的8080端口,nexus proxy再根据域名分发请求。给nexus 配置ingress,我们这里需要配置maven和docker私服,所以配置两个域名。然后修改nexus proxy的环境变量。
3.访问nexus的域名配置docker和maven仓库,仓库的种类分为代理和本地,代理也就是代理远程服务器,而本地则用作自己上传贡献。这里我们创建一个docker本地仓库用于k8s拉取镜像,创建多个maven的代理仓库,如指向阿里云maven中心等,创建多个本地maven仓库来存储自己的jar包。
配置
maven setting.xml配置
<settings>
<servers>
<server>
<id>releases</id>
<username>demo</username>
<password>demo</password>
</server>
<server>
<id>snapshots</id>
<username>demo</username>
<password>demo</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://nexus.company.lan/repository/maven-center/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
docker仓库
传统的搭建docker私服要自己配环境,这里nexus已经配置好,只需要随便设置一个端口访问即可,由于这里配置的是http访问,所以需要配置本地docker 的不安全仓库列表,nexus docker仓库的权限,docker login同nexus账号。
备份迁移重建
官方文档的备份迁移策略,是把二进制数据和数据库数据备份到本地,并在放入新部署的restore文件夹中,此种方法适合可以直接访问服务器,明确知道数据存放位置,可是k8s的存储类就是为了屏蔽这一细节,此方式不适合由原来的docker或物理机部署,迁移至k8s环境下。
参考资料:官方文档
来源:oschina
链接:https://my.oschina.net/wecanweup/blog/4458537