云原生利器 -- Nexus3

Posted devops运维先行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生利器 -- Nexus3相关的知识,希望对你有一定的参考价值。






1 Nexus3 简介

2 K8s部署Nexus3

nexus-nm.yaml

#创建namespace - nexusapiVersion: v1kind: Namespacemetadata: name: nexus

nexus-pv.yaml

#创建 pv,这里使用aliyun的nas作为pvapiVersion: v1kind: PersistentVolumemetadata: name: nexus-pv name: nexus labels: alicloud-nfs: nexus-pvspec: capacity: storage: 500Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: server: "xxxxx.cn-hangzhou.nas.aliyuncs.com" path: /nexus/

nexus-pvc.yaml

#创建pvc,注意labels对齐kind: PersistentVolumeClaimapiVersion: v1metadata: name: nexus-pvc namespace: nexusspec: accessModes: - ReadWriteMany resources: requests: storage: 500Gi selector: matchLabels: alicloud-nfs: nexus-pv

nexus-deployment.yaml

#创建nexus deployment,这里containers端口开放了8081、8082、8083分别作为web管理页面、docker repo、maven repo,且通过traefik2将web、docker域名开放apiVersion: apps/v1kind: Deploymentmetadata: name: nexus-deployment namespace: nexusspec: 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: v1kind: Servicemetadata: name: nexus-svc namespace: nexusspec: 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/v1alpha1kind: IngressRoutemetadata: name: nexus namespace: nexusspec: 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资源。

云原生利器 -- Nexus3

3 Nexus3使用

3.1 登陆

云原生利器 -- Nexus3

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

#kubectl exec -n nexus nexus-deployment-697b6f5945-jkzst cat /nexus-data/admin.passwordmsNPSKNbX05BwV9V

将输出的msNPSKNbX05BwV9V作为admin密码。

3.2 添加Docker repo

云原生利器 -- Nexus3

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

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

云原生利器 -- Nexus3

2.选择docker(hosted)

云原生利器 -- Nexus3

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

云原生利器 -- Nexus3

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

云原生利器 -- Nexus3

4 Decker repo 使用

4.1 调整docker配置

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

{"insecure-registries": ["repo-nexus.k8s.stdomai.com"]}

4.2 上传push

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

云原生利器 -- 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

云原生利器 -- Nexus3

4.3 下载pull

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

云原生利器 -- Nexus3

往期推荐



以上是关于云原生利器 -- Nexus3的主要内容,如果未能解决你的问题,请参考以下文章

阿里云ACM:云原生配置管理利器

云原生网络排障利器

buildah 云原生时代的镜像打包利器

云原生,智慧营销破圈新利器

云原生时代 RocketMQ 运维管控的利器 - RocketMQ Operator

阿里云ACM:云原生配置管理利器,让云上的Spring Cloud应用配置管理舞动起来