前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生利器 -- Nexus3

云原生利器 -- Nexus3

作者头像
用户3013098
发布2022-06-01 08:53:24
1.1K0
发布2022-06-01 08:53:24
举报
文章被收录于专栏:devops运维先行者

1 Nexus3 简介

Nexus3 是一个统一的仓库系统,常见的有诸如apt、docker、maven2、npm、pypi、yum等repositories。如果开发工程师在开发软件时没有一个统一的repositories地址,那么将会受到不必要的影响,降低开发迭代效率。而Nexus3 就是这么一个平台,可以统一管理repositories仓库。这里文章介绍如何在k8s环境部署Nexus3,并快速使用,作为docker images 私有仓库。

2 K8s部署Nexus3

nexus-nm.yaml

代码语言:javascript
复制
#创建namespace - nexus
apiVersion: v1
kind: Namespace
metadata:
  name: nexus

nexus-pv.yaml

代码语言:javascript
复制
#创建 pv,这里使用aliyun的nas作为pv
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nexus-pv
  name: nexus
  labels:
    alicloud-nfs: nexus-pv
spec:
  capacity:
    storage: 500Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: "xxxxx.cn-hangzhou.nas.aliyuncs.com"
    path: /nexus/

nexus-pvc.yaml

代码语言:javascript
复制
#创建pvc,注意labels对齐
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nexus-pvc
  namespace: nexus
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 500Gi
  selector:
    matchLabels:
      alicloud-nfs: nexus-pv

nexus-deployment.yaml

代码语言:javascript
复制
#创建nexus deployment,这里containers端口开放了8081、8082、8083分别作为web管理页面、docker repo、maven repo,且通过traefik2将web、docker域名开放
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nexus-deployment
  namespace: nexus
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nexus
  template:
    metadata:
      labels:
        app: nexus
    spec:
      containers:
      - name: nexus
        image: sonatype/nexus3
        ports:
        -  containerPort: 8081
        -  containerPort: 8082
        -  containerPort: 8083
        resources:
          requests:
            memory: "128Mi"
          limits:
            memory: "2Gi"
            cpu: 4
        volumeMounts:
        - mountPath: /nexus-data
          name: nexus-data
      volumes:
        - name: nexus-data
          persistentVolumeClaim:
            claimName: nexus-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: nexus-svc
  namespace: nexus
spec:
  selector:
    app: nexus
  ports:
    - name: web
      protocol: TCP
      port: 8081
      targetPort: 8081
    - name: docker
      protocol: TCP
      port: 8082
      targetPort: 8082
    - name: maven
      protocol: TCP
      port: 8083
      targetPort: 8083
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: nexus
  namespace: nexus
spec:
  entryPoints:
    - http
  routes:
    - match: Host(`nexus3.domain.com`) && PathPrefix(`/`) 
      kind: Rule
      priority: 1
      middlewares:
        - name: compress 
          namespace: default
      services:
        - name: nexus-svc
          namespace: nexus
          port: 8081
    - match: Host(`repo-nexus.domain.com`) && PathPrefix(`/`) 
      kind: Rule
      priority: 1
      middlewares:
        - name: compress 
          namespace: default
      services:
        - name: nexus-svc
          namespace: nexus
          port: 8082

按顺序分别kubectl apply部署nexus3,部署完成后可查看相关nexus资源。

3 Nexus3使用

3.1 登陆

当我们首次登陆 nexus3.domain.com 的web界面的时候,需要输入admin的用户密码,这里需要通过查看nexus pods下面的/nexus-data/admin.password文件,

代码语言:javascript
复制
#kubectl exec -n nexus nexus-deployment-697b6f5945-jkzst cat /nexus-data/admin.password
msNPSKNbX05BwV9V

将输出的msNPSKNbX05BwV9V作为admin密码。

3.2 添加Docker repo

可以看到有个感叹号提醒,Nexus3建议至少使用4核CPU,这里使用2C,并无太大关系,如果有强迫症的同学可以增大CPU核数 >= 4C。

1.点击系统配置 - Repositories - Create repository

2.选择docker(hosted)

3.创建一个name为docker-repo,选择8082作为http入口(如果需要https,可以在k8s上在增加一个Nexus端口作为https端口,同nexus deployment中的 ports.docker)

4.点击save,创建完docker repo后,就可以通过Browse看到docker-repo已经online在线。

4 Decker repo 使用

4.1 调整docker配置

由于使用的http协议,需要修改/etc/docker/daemon.json配置文件,

代码语言:javascript
复制
{"insecure-registries": ["repo-nexus.k8s.stdomai.com"]}

4.2 上传push

1.docker login repo-nexus.domain.com输入admin用户密码,如果不想用admin用户登陆的,可以在Nexus3创建一个新的使用用户。

2.docker tag 172.16.10.13/library/java:latest repo-nexus.domain.com/java:simba_latest 3.docker push repo-nexus.domain.com/java:simba_latest

4.3 下载pull

docker pull repo-nexus.domain.com/java:simba_latest

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 devops运维先行者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Nexus3 简介
  • 2 K8s部署Nexus3
    • nexus-nm.yaml
      • nexus-pv.yaml
        • nexus-pvc.yaml
          • nexus-deployment.yaml
          • 3 Nexus3使用
            • 3.1 登陆
              • 3.2 添加Docker repo
              • 4 Decker repo 使用
                • 4.1 调整docker配置
                  • 4.2 上传push
                    • 4.3 下载pull
                    相关产品与服务
                    容器镜像服务
                    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档