☰
Current Page
Main Menu
Home
Home
Editing
挂载minio到本地
Edit
Preview
h1
h2
h3
default
Set your preferred keybinding
default
vim
emacs
markdown
Set this page's format to
AsciiDoc
Creole
Markdown
MediaWiki
Org-mode
Plain Text
RDoc
Textile
Rendering unavailable for
BibTeX
Pod
reStructuredText
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
### 引擎目前使用方式 引擎目前使用minio的方式是通过minio client去访问minio server来进行文件读写,这是正确的做法,但是我们还需要将远程的文件下载放到本地,比如jar包,比如前端zip包,以供引擎加载和使用,那么就涉及到需要维护两种方式访问文件的方式,一种是远程访问minio,另一种是访问本地磁盘。如果我们能够统一访问minio的方式跟访问本地磁盘一样,那么整个操作流程会变得更为简单,而且也没有在业务中先下载前端zip然后解压到本地再使用的操作,只需要在本地直接就地解压minio上面的文件即可,保证了一致性。 ### 使用方式 #### k8s csi k8s除了在资源计算、网络方面做了抽象,当然也会在存储方面进行抽象和提供统一的接口,那就是csi,具体参考官方文档:[[https://kubernetes-csi.github.io/docs/ ]] ,简单来说任何实现了csi接口的其他文件系统都可以当作k8s的存储来使用。我们目前使用的 nfs 就是一种,而minio作为对象存储当然也是可以作为k8s存储的,但是需要我们做一些工作。 #### 存储供应 ```yaml kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: minio-s3fs-sc labels: app.kubernetes.io/managed-by: Helm annotations: meta.helm.sh/release-name: csi-s3 meta.helm.sh/release-namespace: default storageclass.kubesphere.io/allow-clone: 'true' storageclass.kubesphere.io/allow-snapshot: 'true' provisioner: minio.s3.csi.sie.com parameters: access-key: snest bucket: apps endpoint: '192.168.184.122:31179' mounter: s3fs secret-key: snest123 reclaimPolicy: Delete volumeBindingMode: Immediate ``` 如上,需要定义StorageClass,来配置我们后面需要用到的pv,包括provisioner是谁,minio的url地址,桶等相关信息。 #### pvc 有了 StorageClass,我们就可以创建对应的pvc来供业务使用了,我们这里创建了2个pvc: minio-apps-pvc 用于保存apps相关文件,minio-apps-frontend-pvc 用于保存前端相关文件,且可以供引擎和前端共享。 [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/1.jpg]] 创建pvc以后,就会相应地在minio创建两个目录: [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/2.jpg]] #### 使用 有了pvc以后,我们就可以在业务中使用。 在引擎中分别挂载这2个pvc到容器内的 /apps 目录和 /apps-frontend 目录 [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/3.jpg]] 前端容器也是一样的使用方式: [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/4.jpg]] 我们开始通过应用市场上传app相关文件,上传以后还是可以在minio查看到相关的文件,格式是 ```日期/随机数``` [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/5.jpg]] 我们继续查看前端在minio映射的文件内容,可以发现就是 /usr/share/nginx/html 的文件内容: [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/6.jpg]] 引擎端也是类似的: [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/7.jpg]] 我们继续从应用市场安装一个app,然后查看/apps/modules 目录下的内容,发现安装的app jar包已经在里面了: [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/8.jpg]] 继续查看 /apps-frontend/umdComps 目录下的前端文件,发现也已经保存了: [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/9.jpg]] 最后我们回到引擎和前端容器的内部,核查以下文件是否保存在对应的目录了,可以发现确实都已经存在了: [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/10.jpg]] [[http://iidp.chinasie.com:9999/iidpminio/csi-s3/11.jpg]] 最终我们实现了将minio挂载到本地,像操作本地磁盘一样来操作minio。 #### 原理 - k8s csi,参考:[[https://kubernetes-csi.github.io/docs/]] - linux fuse 框架,linux内核提供了用户态的文件系统,参考:[[https://www.kernel.org/doc/html/latest/filesystems/fuse.html]] - s3fs 一个可以把 S3 Bucket 挂在本地的文件系统,参考:[[https://github.com/s3fs-fuse/s3fs-fuse]]
Uploading file...
Sidebar
[[_TOC_]]
Edit message:
Cancel