当前位置:网站首页>使用 Helm 部署 Wikijs
使用 Helm 部署 Wikijs
2022-04-21 20:37:00 【东风微鸣】
Wikijs - 最强大 最可扩展的开源维基软件
使用 wiki.js 美丽直观的界面,让文档成为写作的乐趣!
优点
随时随地安装
几乎适用于任何平台,并与PostgreSQL、MySQL、MariaDB、MS SQL Server 或 SQLite 兼容!
️ 管理强大
使用广泛而直观的管理区域管理维基的所有方面。
性能
Wiki.js运行在快速的Node.js引擎上,它是基于性能考虑而构建的。
定制
完全自定义您的维基的外观,包括一个浅色和深色的模式。
隐私保护
让你的维基公开,完全私人或两者的混合。
可伸缩
无论是在一个小树莓派或在云中的高性能虚拟机上,Wiki.js 智能地利用可用资源。
功能齐全
并非所有团队都需要相同的功能集。这就是为什么 wiki.js提供了广泛的模块,可以打开/关闭对应功能。
认证
本地身份认证
具有自注册和密码恢复功能的内置身份验证。
Social 身份认证
使用谷歌、Facebook、微软、GitHub、Discord、Slack等第三方身份验证服务。
企业认证
使用LDAP、SAML、CAS、Auth0、Okta、Azure AD等与贵公司现有认证集成。还包括通用 OAuth2 和 OpenID Connect 模块。
两阶段认证
使用支持身份验证模块的双重身份验证添加额外的安全层。
编辑
MarkDown
开发人员中最受欢迎的文档格式。包括实时预览和工具栏/键盘快捷方式快速访问。
所见即所得编辑器
为非技术人员设计的简单易用的WYSIWYG编辑器。无需编码或特殊语法知识。
HTML
直接在HTML中编写内容。非常适合从其他来源导入预制的HTML页面。
历史
版本追踪
所有内容修改都会被跟踪。您可以恢复到以前的状态或随时恢复已删除的页面。轻松跟踪谁改变了什么。
比较版本
可视化地比较同一页面的两个版本,以查看更改的确切内容。
导出 / 切换分支
快速导出页面的特定版本或从旧版本创建新页面。
Locales
多语言支持
wiki.js被翻译成40多种语言!如果您的语言尚不可用,请帮助我们使用易于使用的工具进行翻译。无需编码!
原生 RTL 支持
完全支持从右到左的语言。
多语种内容
以多种语言提供您的维基。在同一页的语言之间快速切换。
多媒体资产
资产管理
从资产管理器 上传和管理您的媒体资产。轻松地在文件夹中分类您的资产,并查看它们被使用的地方。
渲染
代码突出显示
插入带有全彩色语法突出显示和行号的代码片段。
Graph
轻松生成图,如 UML、流程图、序列等。
数学表达
使用 TeX 或 MathML 语法渲染复杂的数学表达。
搜索
数据库
wiki.js附带了一个内置的搜索引擎。它需要零设置,是大多数用户的最佳选择。
云搜索
使用 Algolia、Azure 搜索等云搜索服务为您的维基搜索功能提供动力。
ES
使用您现有的ES 装置为您的维基搜索功能供电。
存储
Git
同步或备份您的内容到流行的 Git 服务,如 GitHub、GitLab、BitBucket、Azure DevOps 等。
企业云存储
将内容备份到云存储服务,如 AWS S3、Azure Blob 存储、Google 云存储、DigitalOcean空间等。
本地/网络
在磁盘/网络共享或网络上的远程服务器上使用 SSH 的安全副本本地备份您的内容。
用户管理
管理工具
从管理区域管理用户。快速创建新用户或编辑现有用户的所有方面。
组
将用户分成组,以控制其可以做什么或访问的内容。无需浪费时间按每个用户分配权限!
权限
设置组权限,以有效控制用户可以做什么或访问的内容。页面编辑、资产管理和访问管理区域各个部分的颗粒权限。
页面规则
使用精确的路径、开始/结束和 regex 筛选器向组设置高级和精确的页面规则。
主题
黑暗模式
为用户界面选择浅色和暗模式。
注入自定义 CSS/JS
您可以从管理区域直接覆盖CSS或注入额外的 JS 脚本。
我为什么选择 Wiki.js
[[我为什么选择 Wiki.js 记笔记?]]
使用 Helm 部署 Wiki.js
️ 参考文档: Wiki.js 官方文档 - 安装 - Kubernetes Wiki.js 使用 Helm 安装 Wiki.js 官方文档 - 安装 - 侧加载
官方教程
Kubernetes
开始使用 Helm Chart 在 Kubernetes 上安装
先决条件
- Kubernetes 集群
- Helm
- PostgreSQL 数据库
️ 重要
- 您必须先部署单个实例才能设置应用程序。设置完成后,您可以将副本数量增加到任意数量。
- 尽管wiki.js支持其他数据库引擎,但多副本要求必须使用PostgreSQL。
安装 Helm Chart
有关详细的安装说明,请参阅wiki.js helm repo。
介绍
此图表使用Helm包管理器在Kubernetes群集上启动wiki.js部署。
它还可选地将PostgreSQL打包为数据库,但您可以自由携带自己的数据库。
先决条件
- 如果您想要数据持久性,则需要由基础设施中的PV 供应商支持(启用持久存储)
安装 Chart
要安装带有my-release 发布名称的 chart,请在此 (helm) 目录运行以下情况:
️ 参考文档: Wiki.js helm chart git 仓库地址 需要先将该 Git 仓库 clone 下来, 并跳转到 (
helm) 目录, 然后执行下面的命令.
使用 Helm3:
$ helm install my-release .
使用 Helm2:
$ helm install --name my-release .
该命令在Kubernetes群集上的default 租户中部署wiki.js。[[#配置]] 部分列出了安装过程中可以配置的参数。
提示:使用
helm list列出所有版本
卸载 Chart
卸载/删除my-release部署:
$ helm delete my-release
命令会删除与 该 Chart 关联的所有 Kubernetes 组件并删除该 release。
警告:数据库的 PVC 不会自动删除。它们需要手动删除
$ kubectl delete pvc/data-wiki-postgresql-0
配置
下表列出了维基图表的可配置参数.js及其默认值。
|
参数 |
描述 |
默认 |
|---|---|---|
|
image.repository |
wiki.js image |
requarks/wiki |
|
image.tag |
wiki.js image tag |
latest |
|
imagePullPolicy |
镜像拉取策略 |
IfNotPresent |
|
replicacount |
要运行的wiki.js服务pod数量 |
1 |
|
resources.limits |
wiki.js服务资源限制 |
nil |
|
resources.requests |
wiki.js服务资源请求 |
nil |
|
nodeSelector |
wiki.js 的 nodeSelector |
{} |
|
affinity |
wiki.js pod分配的亲和力设置 |
{} |
|
schedulerName |
wiki.js pod 备用调度器的名称 |
nil |
|
tolerations |
wiki.js 吊舱分配的容忍标签 |
[] |
|
ingress.enabled |
启用入口控制器资源 |
false |
|
ingress.annotations |
入口注释 |
{} |
|
ingress.hosts |
入口规则列表 |
[{"host": "wiki.local", "paths": ["/"]}] |
|
ingress.tls |
入口 TLS 配置 |
[] |
|
postgresql.enabled |
是否部署 postgresql(见下文) |
true |
|
postgresql.postgresqlDatabase |
postgresql数据库名称 |
wiki |
|
postgresql.postgresqlUser |
postgresql 用户名 |
postgres |
|
postgresql.postgresqlHost |
postgresql 主机 |
nil |
|
postgresql.postgresqlPassword |
postgresql 密码 |
nil |
|
postgresql.postgresqlPort |
postgresql 端口 |
5432 |
|
postgresql.persistence.enabled |
使用 PVC 启用 postgresql 持久性 |
true |
|
postgresql.persistence.existingClaim |
为 postgresql 提供已有PersistentVolumeClaim |
nil |
|
postgresql.persistence.storageClass |
postgresql PVC存储类(例如:nfs) |
nil |
|
postgresql.persistence.size |
postgresql PVC 存储大小需求 |
8Gi |
使用--set key=value[,key=value]参数指定每个参数来 helm install。例如,
$ helm install --name my-release \
--set postgresql.persistence.enabled=false \
.
或者,在安装 chart 时可以提供指定上述参数值的 YAML 文件。例如,
$ helm install --name my-release -f values.yaml .
提示:您可以使用默认values.yaml
PostgreSQL
默认情况下,作为Chart 的一部分安装PostgreSQL。
使用外部 PostgreSQL 服务器
要使用外部PostgreSQL服务器,设置postgresql.enabled为false然后设置postgresql.postgresqlHost和postgresql.postgresqlPassword。其他选项postgresql.postgresqlDatabase、postgresql.postgresqlUser(和)postgresql.postgresqlPort可能也需要从其默认值中更改。
您还需要在部署中添加以下 Helm 模板:
kind: Secret
apiVersion: v1
metadata:
name: {{ template "wiki.postgresql.secret" . }}
data:
{{ template "wiki.postgresql.secretKey" . }}: "{{ .Values.postgresql.postgresqlPassword | b64enc }}"
持久化
PVC 用于在整个部署中保留数据。请参阅 [[#配置]] 部分以配置 PVC 或禁用持久化。
Ingress
此Chart 为Ingress 资源提供支持。如果你有一个可用的 ingress 控制器,如Nginx 或 Traefik,你可能想设置ingress.enabled为真,并为URL选择一个ingress.hostname。然后,您应该能够使用该地址访问安装。
离线环境下使用 Helm 部署 Wiki.js
️ 参考文档: Wiki.js 官方文档 - 安装 - Kubernetes Wiki.js 使用 Helm 安装 Wiki.js 官方文档 - 安装 - 侧加载
概述
根据官方文档和 GitHub issues 的分析. 离线环境下, 那么需要将从internet下载的数据侧载(sideload)。
这是通过手动下载一组文件并将它们放置在wiki安装中的特定目录来实现的。这些文件将在初始化期间导入。
在Wiki.js安装文件夹的path data/sideload中创建一个新文件夹。
例如,如果您的wiki安装在路径/wiki (wikijs的docker image 里wiki的安装路径为 /wiki),那么您需要在路径/wiki/data/sideload 创建一个文件夹.
Locales
为了安装locale包,您需要主locale文件+至少一个locale包文件。
️ 信息: 这些文件可以从https://github.com/Requarks/wiki-localization下载。这些档案每天晚上都是最新的。
主文件
主文件locales.json 包含有关所有可用语言的信息,并且必须安装。
将此文件放在先前创建的sideload 文件夹中。
Locale 包
语言环境软件包文件xx.json 或xx-zz.json 包含所选语言的所有翻译。您可以同时加载任意数量的语言环境。
️ 警告: 英语包
en.json是必须的,因为这是安装期间的默认语言。之后您可以更改语言.
将文件放在先前创建的sideload 文件夹中主文件的旁边。现在,您的文件夹中应该具有locales.json,en.json和任何其他语言。
Sideload
️ 警告: 必须先修改 wiki.js 配置文件:
config.yml. 增加如下一行:offline: true
运行Wiki.js(如果已经在运行,则重新启动进程),自动加载位于data/sideload 文件夹中的文件。
步骤
备注: 由于笔者时间不足, 就不将额外的步骤整合到 helm chart 中去了. 以下步骤假设:
- 已安装
helm - 已 clone wikijs的git 仓库
- 已 跳转到
helm/目录下 - 通过
helm安装 wiki.js 和 postgresql: helm install wikijs . -n wiki --set image.tag=2,postgresql.persistence.storageClass=nfs-fast 配置说明如下, 创建好了 helm 会有相关成功的提示, 此时可以使用, 但是加载不到 locale 语言包. 下一步需要 通过 sideload 加载语言包.- 在
wiki租户下进行安装; - wiki.js 的镜像版本tag 为
2, 保证不会因为选择latest标签, 导致wiki.js 突然从2 升级到3, 导致服务异常; - postgresql的持久化存储的
storageClass为nfs-fast, 通过它自动申请存储.
- 在
- 因为需要 sideload. 需要修改
config.yml, 通过如下 ConfigMap 的方式修改. 步骤如下:- 创建如下ConfigMap -
wiki-config, 相比默认的只增加了一行:
- 在 wikijs 的 Deployment中, 做如下修改, 将上边的 ConfigMap 通过 SubPath 挂载到指定位置
- 创建如下ConfigMap -
- 因为需要 sideload, 需要创建
data/sideload文件夹, 并将 locales 文件放到该目录. 通过 PVC 实现- 申请个50M 左右的 PVC -
sideload-data(步骤略) - 将 PVC 挂载到 wikijs Deployment指定目录:
- 再将下载好的
locales.json,en.json和zh.json放到容器中的指定目录:/wiki/data/sideload. 如下:
- 申请个50M 左右的 PVC -
- 待 wikijs Deployment重启好之后, 就可以进入页面进行安装. 分别填入:
- 管理员邮箱
- 管理员密码, 再次确认管理员密码
- wikijs 站点的 URL
- 就会自动安装配置完成.
- 进入之后就可以在这里配置中文:
- 至此, 离线环境下使用 Helm 部署 Wiki.js 完成.
总结
相比在线环境, 多出了如下步骤:
- ConfigMap 通过 SubPath 方式挂载wiki.js 的配置文件
config.yml, 配置文件多了一句:offline: true - 申请一个新的PVC, 挂载到
/wiki/data/sideload, 并将 locales 相关文件放进去.
离线环境下 在OpenShift 中使用 Helm 部署 Wiki.js
️ 信息: OpenShift 4.4+ 版本支持 Helm3
OpenShift 中, 对权限要求比较严格, 最简单的适配步骤, 就是将 wiki.js 所用的 ServiceAccount 权限放开.
相比上一节, 多出来的, 或者有调整的具体操作如下:
- 通过
helm3安装: helm install wikijs . -n wiki --set image.tag=2.5,postgresql.serviceAccount.enabled=true,postgresql.serviceAccount.name=wikijs,postgresql.persistence.storageClass=nfs-fast ️ 说明如下:- wikijs 安装的时候就是用的
wikijs这个 ServiceAccount, 为了简化权限步骤, postgresql 也用这个 ServiceAccount - 具体的参数就是:
postgresql.serviceAccount.enabled=true,postgresql.serviceAccount.name=wikijs
- wikijs 安装的时候就是用的
- 给
wikijs这个用户赋权SCC:anyuid:oc adm policy add-scc-to-user anyuid -z wikijs -n wiki - 其他步骤都和上一节一致.
总结
通过这篇文章的介绍, 可以看出 Wiki.js 功能还是很强大的, 值得一用.
在 Kubernetes 中用 helm 部署, 直接使用官方的最简命令即可;
在离线环境下的 Kubernetes 中用 helm 部署, 需要多2个步骤:
- ConfigMap 通过 SubPath 方式挂载wiki.js 的配置文件
config.yml, 配置文件多了一句:offline: true - 申请一个新的PVC, 挂载到
/wiki/data/sideload, 并将 locales 相关文件放进去.
在离线环境下的 OpenShift 中用 helm 部署, 由于权限限制严格, 需要调整 ServiceAccount 并授予更高权限.
版权声明
本文为[东风微鸣]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1985583
边栏推荐
- Liu Zhigang, former COO of Jinshan cloud, joined Baihai technology as president
- How to use xUnit framework to maintain test cases?
- String.length()和String.getBytes().length的区别
- 2022R2移动式压力容器充装考试练习题及在线模拟考试
- Pfsense configuring IPSec site to site tunneling using certificate authentication Guide
- The whole process of callback registration and callback of openharmony sensor module
- Andorid - - Pourquoi utiliser une transaction, qu'est - ce qu'une transaction commit et ROLLBACK?
- <2021SC@SDUSC>山东大学软件工程应用与实践JPress代码分析(一)
- Complete collection of basic MySQL commands
- Go语言自学系列 | golang defer语句
猜你喜欢

< 2021SC@SDUSC > Introduction to the jpress group on software engineering application and practice of Shandong University

Pytorch框架 || torch.nn.modules.Module(nn.Module)

实战 | JMeter 典型电商场景(下单/支付)的性能压测

1、MySQL Workbench 8.0安装

2022-4-11至2022-4-17周报

C语言题目一:1,2,3,4能组成的三位数

Specific methods of configuring Profibus and PROFINET communication in two TIA botu projects

LeetCode_746 使用最小花费爬楼梯

Actual combat | performance pressure test of JMeter typical e-commerce scenario (order / payment)

Tracup|使用项目管理软件帮助战胜拖延症
随机推荐
Actual combat | UI automation test framework design and pageobject transformation
C语言题目一:1,2,3,4能组成的三位数
终于有人讲明白了,原来这才是全球低时延一张网技术
Construction of distributed second kill system
2022-4-11至2022-4-17周报
[Hetai ht32 communicates with STM32 through serial port and lights up]
实战 | UI 自动化测试框架设计与 PageObject 改造
“国潮”积木,潮玩的下一个答案?
RTMP(4):User Control Message
TCP example of grpc implemented by golang
2、Failed to connect to MySQL Server 8.0.28 after 10 attempts
他98年的,我玩不过他...
《动手学机器人学》7.3.1齐次坐标变换&&齐次变换矩阵
3D 沙盒游戏之人物的点击行走移动
Employment of college students in the "most difficult employment season": more than half of the graduates have landed, and higher vocational colleges produce sweet pastries
IaaS,PaaS,SaaS 的区别
824.山羊拉丁文
在两个TIA博途项目中组态PROFIBUS和PROFINET通信的具体方法
异常处理器
Data preprocessing for data analysis