前言:
两年前帮客户排障时搭过一套 nexus 仓库,内部环境早铲掉了,这次有需要再搭一套,简单记录下当中的几个注意点。
架构图
部署
部署 yaml 戳这里👇
https://cnrock.github.io/t/nexus3.yml
前置条件,有一个配置好的managed-nfs-storage sc
# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-storage kubernetes.io/no-provisioner Delete Immediate false 20d
managed-nfs-storage (default) dsp.dc/ifs Delete Immediate false 20d
部署kubectl apply -f nexus3.yml
补充一个8082 的负载均衡,为了后面 docker-group 的对外暴露
- nginx 反代+域名解析
server {
listen 80 ;
server_name nexus.ats.io;
location / {
proxy_set_header Host $host;
proxy_pass http://10.29.121.28:30082/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80 ;
server_name nexus-ui.ats.io;
location / {
proxy_set_header Host $host;
proxy_pass http://10.29.121.28:30081/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
域名解析用了内网coredns
nexus.ats.io. 3600 IN A 10.23.2.249
nexus-ui.ats.io. 3600 IN A 10.23.2.249
dd
效果图
ui 效果
- 仓库 proxy
例1, 其他按需设置
- 仓库 group,例如 依次 docker-dail,ghcr.io, k8s.gcr.io, docker.elastic.co
- docker pull 拉包测试
实际上这个包来源于 k8s.gcr.io/coredns:1.6.7,他会按上图 group 排序 docker-dail,ghcr.io, k8s.gcr.io, docker.elastic.co ,依次查找 - maven 仓库 group
同样会按照排序拉取maven 仓库里面的包 - 配置 ldap 账户,这里有 2个地方要注意, 不然有2个401 等着你
首先是管理员 admin 登陆,提示 401 -
docker login nexus-ui.ats.io -u admin
Password:
Error response from daemon: login attempt to http:
//nexus-ui.ats.io
/v2/
failed with status: 401 Unauthorized
解决办法 nexus 管理后台->安全→Realms,添加"Docker Bearer Token Realm“至激活,如图:
ldap 账户 配置后, ldap 账户 docker login 依然提示 Error response from daemon: Get http://nexus.ats.io/v2/: unauthorized: authentication required
解决办法: user--ldap-选中需要给权限的账户
赋予 admin 或 匿名权限,这样ldap 账户就能登陆了
# docker login nexus.ats.io -u jie.wan
Password:
Login Succeeded
文章评论