基于k8s搭建部署Nexus服务
文章目录
- 一、编写创建PV和PVC的配置文件
- 二、编写Nexus部署配置文件
- 三、部署
- 3.1 创建命名空间
- 3.2 部署服务
- 四、查看Nexus页面
一、编写创建PV和PVC的配置文件
编写nexus-pvc-pv.yml文件,内容如下:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: sc-nexus3 # 自定义
namespace: nexus # 自定义,但需要与本文后面所有的命名空间保持一致
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nexus3 # 自定义
namespace: nexus # 自定义,与本文前后所有命名空间保持一致
labels:
pv: pv-nexus3 # 自定义
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: sc-nexus3 # 前面创建的StorageClass的名字
nfs:
path: /root/data/nexus # nfs存储的实际路径
server: 192.168.16.40 # nfs服务器的ip地址
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nexus3 # 自定义
namespace: nexus # 自定义,与本文前后所有命名空间保持一致
labels:
pvc: pvc-nexus3 # 自定义
spec:
storageClassName: sc-nexus3 # 前面创建的StorageClass的名字
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
selector:
matchLabels:
pv: pv-nexus3 # PV中的label
二、编写Nexus部署配置文件
编写nexus-deploy.yml文件,内容如下:
kind: Deployment
apiVersion: apps/v1
metadata:
name: nexus3 # 自定义
labels:
app: nexus3 # 自定义
namespace: nexus # 自定义,与本文前后所有命名空间保持一致
spec:
replicas: 1 # 副本的数量
selector:
matchLabels:
app: nexus3
template:
metadata:
labels:
app: nexus3
spec:
containers:
- name: nexus3
image: sonatype/nexus3
ports:
- name: nexus3-8081
containerPort: 8081 # 容器端口
protocol: TCP
resources:
limits:
memory: 6G
cpu: 1000m
imagePullPolicy: IfNotPresent
volumeMounts:
- name: data
mountPath: /nexus-data # 数据路径挂载出来
restartPolicy: Always
volumes:
- name: data
persistentVolumeClaim:
claimName: pvc-nexus3 # PVC的名字
readOnly: false
---
kind: Service
apiVersion: v1
metadata:
name: nexus3
namespace: nexus
labels:
app: nexus3
spec:
type: NodePort
ports:
- port: 8081
targetPort: 8081
nodePort: 30203 # 对外开发的端口,自定义
selector:
app: nexus3
三、部署
3.1 创建命名空间
执行如下命令,因为配置文件中设置的命名空间均为nexus,因此需要提前创建好,当然也可以直接在配置文件中配置
kubectl create namespace nexus
3.2 部署服务
将nexus-pvc-pv.yml文件和nexus-deploy.yml文件上传到k8s服务器的一个目录下比如nexus目录下,然后进入nexus目录,执行如下命令
kubectl apply -f ./
四、查看Nexus页面
在浏览器中使用k8s的集群的主节点的ip和配置文件中暴露的NodePort端口,比如这里:192.168.16.40:30203,即可打开页面,如下
然后使用admin账号登录,密码在 /nexus-data/admin.password 文件中,因为这里将/nexus-data 目录g挂载到nfs服务器了,因此可以通过nfs服务器中找到此文件,然后查看密码登录,如下:
然后点击【next】
然后重新设置密码
然后设置可以匿名访问,因为一般情况下Nexus可以允许匿名用户进行一些包的下载以及在代码中配置自动下载的
然后点击【finish】完成配置
然后退出admin登录,点击浏览,如下可以看到默认的一些仓库
然后使用修改后的密码登录,可以看到此处有上传操作
至此 Nexus部署完成。