首先和大家一样,来说说现在比较主流的一些数据仓库
- Docker官方的Registry原生仓库
- SuSE团队推出的出的Portus:https://github.com/SUSE/Portus
- VMWare中国团队推出的企业级仓库—Harbor
- 大家熟知的Maven私服:Sonatype Nexus3
在网上转悠了一圈,基本上就是上面的几个入了大家的法眼,现在公司是采用的docker原生Registry仓库,仅用来存储私有镜像还是够用了,pull的时候直接使用阿里的镜像库进行加速即可,但随着使用容器化的微服务的增加,对镜像的拉取速度等的要求也越来越高。对比了上面几个容器仓库后,决定使用nexus3作为私服,完成对原生仓库的替换。
在选择nexus3之前,对harbor也进行了调研,但因为nexus3同时可支持pypi、maven、npm等私服,便成了我的首选。
部署
默认已拥有一个可用的k8s集群,使用statefulset创建单点的nexus3服务。
- 内部域名:nexus3.home-stack.in
- docker访问域名: docker-registry.home-stack.in
nexus3服务介绍
- hosted: 本地仓库,可进行pull、push操作
- proxy: 代理仓库,仅pull
- group: 聚合仓库,仅pull
为了让nexus3提供的docker仓库pull和push统一域名,这里我们使用nginx作为docker-proxy,group和hosted接口进行合并。nginx捕捉到get请求时,将请求代理到group仓库,捕捉到post请求和search操作时,将请求代理到hosted仓库。
nexus3.yaml
执行如下命令部署
kubectl create -f nexus3.yaml -n nexus3
在部署前,请修改pvc的
storageClassName
以确保服务正常启动
```yaml