注意:可在我 百度网盘 直接下载 helm、minio 以及修改好的 gitlab、nginx-ingress、nexus 资源包


本系列文章:

第一章:helm 一分钟轻松完爆

第二章:helm 轻松完爆公共仓库

第三章:helm 轻松完爆私有仓库

第四章:helm 轻松完爆 chart

第五章:helm 轻松完爆 release

第六章:九析带你轻松完爆 helm gitlab

第七章:九析带你轻松完爆 helm nginx-ingress

第八章:九析带你轻松完爆 helm gitlab nfs

第九章:九析带你轻松完爆 helm nexus

目录

1 前言

2 搜索 nexus

3 下载 nexus

4 解压缩 nexus

5 配置修改

6 创建命名空间

7 安装 nexus

8 状态检查

9 创建 pv

10 访问 nexus


1 前言

        本文使用 helm v3.0.0 版本。


2 搜索 nexus

helm search repo sonatype-nexus


3 下载 nexus

        下载 stable/sonatype-nexus:

mkdir -p /root/helm/charts && cd /root/helm/charts

helm pull stable/sonatype-nexus


4 解压缩 nexus

tar -zxvf sonatype-nexus-0.1.6.tgz


5 配置修改

        编辑 nexus 的 values.yaml 配置文件,修改 service type 为 NodePort:

service:

type: LoadBalancer 改成 NodePort


6 创建命名空间

        在 k8s 中为 nexus 建立命名空间。

kubectl create ns sonatype-nexus


7 安装 nexus

cd /root/helm/charts

## 第一个 sonatype-nexus 是 release 名,第二个是命名空间,第三个是目录名

helm install sonatype-nexus -n sonatype-nexus sonatype-nexus

第九章 九析带你轻松完爆 helm nexus_第1张图片

        如果有如下报错信息,说明您当前的 k8s 版本比较时尚:

        Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"

        执行如下语句进行 apiVersion 替换。

grep -irl "extensions/v1beta1" sonatype-nexus/ | grep deployment | xargs sed -i 's#extensions/v1beta1#apps/v1#g'

        语句执行效果就是将 templates 目录下的 deployment.yaml 文件的 apiVersion 从 extensions/v1beta1 这样的备胎身份变成 apps/v1 接盘侠身份。


8 状态检查

kubectl get all -n sonatype-nexus

spacer.gif第九章 九析带你轻松完爆 helm nexus_第2张图片

        发现 pod 处于 pending 状态,检查原因:

kubectl describe pod -n sonatype-nexus sonatype-nexus-sonatype-nexus-76567c5749-5qnqrspacer.gifclipboard82.png

        发现 pvc 处于未绑定状态,进一步确认如下:

kubectl get pvc -n sonatype-nexus

spacer.gifclipboard83.png


9 创建 pv

        查看 pvc 的配置信息:

kubectl get pvc -n sonatype-nexus -o yaml

spacer.gif第九章 九析带你轻松完爆 helm nexus_第3张图片

        根据 pvc 声明信息创建 pv 资源文件 pv-nexus.yaml:

apiVersion: v1

kind: PersistentVolume

metadata:

name: sonatype-nexus

spec:

capacity:

storage: 8Gi

volumeMode: Filesystem

accessModes:

-  ReadWriteOnce

persistentVolumeReclaimPolicy: Retain

 nfs:

   server: 10.110.101.106

   path: /data/nfs/nexus

        本人的 pv 存储用的是 nfs。有关 nfs 的安装和配置请看哥的<<第八章>>内容。nfs 很简单,轻松完爆就是,不要不耐烦。记住哥的一句话:“我听到的我会忘记,我看到的我会记住,我真正操作过我才理解”。哥一般不喜欢大的说教,比如动不动扯什么原理,直接去做就是了,你操作过之后就会明白,理论是屎,操作远比理论简单,学那么多理论、听那么多道理只会让你举步维艰。不好意思,我又放飞自我了。如果你听进去了我说的话,我只能对你说不用谢。

        执行 pv 创建语句:

kubectl apply -f pv-nexus.yaml

clipboard92.pngspacer.gif        发现 pvc 和 pv 没羞没臊地自然牵手了(Bound)。是不是觉得合二为一的感觉很爽,别装正经,你懂我说的意思。


10 访问 nexus

        查看 nexus 服务对外提供的端口,注意不是 8081。

kubectl get svc -n sonatype-nexus

spacer.gifclipboard101.png

        打开浏览器访问 http://10.110.101.100:30126,发现 helm 已经轻松完爆了 nexus。第九章 九析带你轻松完爆 helm nexus_第4张图片