介绍
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
最终效果