在k8s集群中部署nexus3容器仓库
云计算 k8s nexus3
2019年12月13日

首先和大家一样,来说说现在比较主流的一些数据仓库

  • 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

最后修改于: 2023年8月9日 17:05