vlambda博客
学习文章列表

云原生大前端之使用 Helm 部署 Verdaccio,在 Kubernetes 上运行私有 NPM Registry

介绍

Verdaccio 是一个简单的,零配置所需的本地私有 npm registry。无需整个数据库就可以开始!Verdaccio 开箱即用,有其自己的小型数据库, 并具有代理其他注册中心的功能(例如:npmjs.org),并在此过程中缓存下载的模块。对于那些希望扩展其存储功能的用户,Verdaccio 支持各种社区制造的插件以挂接到 Amazon’s s3, Google Cloud Storage 等服务或创建自己的插件

Verdaccio 是轻量级的私有 NPM 代理 registry。

提示:阅读本文需要你有一定的 kubernetes 使用基础。

Helm 部署

添加官方 Chart 仓库

helm repo add verdaccio https://charts.verdaccio.org

本地搜索查看一下刚添加的仓库

helm search repo verdaccio
# ...
# verdaccio/verdaccio 0.16.2 4.7.2 A lightweight private npm proxy registry (sinop...

直接将这个版本拉取到本地

helm pull verdaccio/verdaccio --version 0.16.2

设置 PVC,持久化数据

笔者这里是用公司内部 NFS 服务器做数据存储管理的

---
apiVersion: v1
kind: PersistentVolume
metadata:
name: verdaccio-data
labels:
app: verdaccio-data
spec:
storageClassName: ""
capacity:
storage: 500Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: /home/nfs/verdaccio/data
server: 10.1.1.28
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: verdaccio-data
spec:
storageClassName: ""
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Gi
selector:
matchLabels:
app: verdaccio-data

接下来是解verdaccio-0.16.2.tgz, 复制 Chart 中的 values.yaml 进行定制。

启用并定制 Ingress

笔者使用的是 Traefik v2.2,所以如下:

ingress:
enabled: true
# Set to true if you are on an old cluster where apiVersion extensions/v1beta1 is required
useExtensionsApi: true
paths:
- /
hosts:
- npm.your-company.com
annotations:
ingress.kubernetes.io/ssl-redirect: "true"
ingress.kubernetes.io/proxy-body-size: "0"
kubernetes.io/ingress.class: "traefik"
traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
tls:
- secretName: your-company-cert
hosts:
- npm.your-company.com

configMap 配置

#....other
# 使用淘宝的cnpmjs镜像,加速
uplinks:
npmjs:
url: https://registry.npm.taobao.org/
# @company/* 的包直接从私有库中获取,其它的走 upstream
packages:
'@company/*':
# scoped packages
access: $all
publish: $authenticated
proxy: npmjs
#....other


云原生大前端之使用 Helm 部署 Verdaccio,在 Kubernetes 上运行私有 NPM Registry

最终效果