前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Helm 部署 Wikijs

使用 Helm 部署 Wikijs

作者头像
东风微鸣
发布2022-04-21 19:44:15
1.9K0
发布2022-04-21 19:44:15
举报

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:

代码语言:javascript
复制
 $ helm install my-release .

使用 Helm2:

代码语言:javascript
复制
 $ helm install --name my-release .

该命令在Kubernetes群集上的default 租户中部署wiki.js。[[#配置]] 部分列出了安装过程中可以配置的参数。

提示:使用helm list列出所有版本

卸载 Chart

卸载/删除my-release部署:

代码语言:javascript
复制
 $ helm delete my-release

命令会删除与 该 Chart 关联的所有 Kubernetes 组件并删除该 release。

警告:数据库的 PVC 不会自动删除。它们需要手动删除

代码语言:javascript
复制
 $ 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。例如,

代码语言:javascript
复制
 $ helm install --name my-release \
   --set postgresql.persistence.enabled=false \
    .

或者,在安装 chart 时可以提供指定上述参数值的 YAML 文件。例如,

代码语言:javascript
复制
 $ helm install --name my-release -f values.yaml .

提示:您可以使用默认values.yaml

PostgreSQL

默认情况下,作为Chart 的一部分安装PostgreSQL。

使用外部 PostgreSQL 服务器

要使用外部PostgreSQL服务器,设置postgresql.enabledfalse然后设置postgresql.postgresqlHostpostgresql.postgresqlPassword。其他选项postgresql.postgresqlDatabasepostgresql.postgresqlUser(和)postgresql.postgresqlPort可能也需要从其默认值中更改。

您还需要在部署中添加以下 Helm 模板:

代码语言:javascript
复制
 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.jsonxx-zz.json 包含所选语言的所有翻译。您可以同时加载任意数量的语言环境。

?? 警告: 英语包en.json是必须的,因为这是安装期间的默认语言。之后您可以更改语言.

将文件放在先前创建的sideload 文件夹中主文件的旁边。现在,您的文件夹中应该具有locales.jsonen.json和任何其他语言。

Sideload

?? 警告: 必须先修改 wiki.js 配置文件: config.yml. 增加如下一行: offline: true

运行Wiki.js(如果已经在运行,则重新启动进程),自动加载位于data/sideload 文件夹中的文件。

步骤

? 备注: 由于笔者时间不足, 就不将额外的步骤整合到 helm chart 中去了. 以下步骤假设:

  1. 已安装 helm
  2. 已 clone wikijs的git 仓库
  3. 已 跳转到 helm/ 目录下
  4. 通过 helm 安装 wiki.js 和 postgresql: helm install wikijs . -n wiki --set image.tag=2,postgresql.persistence.storageClass=nfs-fast 配置说明如下, 创建好了 helm 会有相关成功的提示, 此时可以使用, 但是加载不到 locale 语言包. 下一步需要 通过 sideload 加载语言包.
    1. wiki 租户下进行安装;
    2. wiki.js 的镜像版本tag 为2, 保证不会因为选择latest 标签, 导致wiki.js 突然从2 升级到3, 导致服务异常;
    3. postgresql的持久化存储的storageClassnfs-fast, 通过它自动申请存储.
  5. 因为需要 sideload. 需要修改config.yml, 通过如下 ConfigMap 的方式修改. 步骤如下:
    1. 创建如下ConfigMap - wiki-config, 相比默认的只增加了一行:
    1. 在 wikijs 的 Deployment中, 做如下修改, 将上边的 ConfigMap 通过 SubPath 挂载到指定位置
  6. 因为需要 sideload, 需要创建 data/sideload 文件夹, 并将 locales 文件放到该目录. 通过 PVC 实现
    1. 申请个50M 左右的 PVC - sideload-data (步骤略)
    2. 将 PVC 挂载到 wikijs Deployment指定目录:
    1. 再将下载好的locales.json, en.jsonzh.json放到容器中的指定目录: /wiki/data/sideload. 如下:
  7. 待 wikijs Deployment重启好之后, 就可以进入页面进行安装. 分别填入:
    1. 管理员邮箱
    2. 管理员密码, 再次确认管理员密码
    3. wikijs 站点的 URL
    4. 就会自动安装配置完成.
  8. 进入之后就可以在这里配置中文:
  1. 至此, 离线环境下使用 Helm 部署 Wiki.js 完成. ???
总结

相比在线环境, 多出了如下步骤:

  1. ConfigMap 通过 SubPath 方式挂载wiki.js 的配置文件 config.yml, 配置文件多了一句: offline: true
  2. 申请一个新的PVC, 挂载到/wiki/data/sideload, 并将 locales 相关文件放进去.

离线环境下 在OpenShift 中使用 Helm 部署 Wiki.js

?? 信息: OpenShift 4.4+ 版本支持 Helm3

OpenShift 中, 对权限要求比较严格, 最简单的适配步骤, 就是将 wiki.js 所用的 ServiceAccount 权限放开.

相比上一节, 多出来的, 或者有调整的具体操作如下:

  1. 通过 helm3 安装: helm install wikijs . -n wiki --set image.tag=2.5,postgresql.serviceAccount.enabled=true,postgresql.serviceAccount.name=wikijs,postgresql.persistence.storageClass=nfs-fast ?? 说明如下:
    1. wikijs 安装的时候就是用的 wikijs 这个 ServiceAccount, 为了简化权限步骤, postgresql 也用这个 ServiceAccount
    2. 具体的参数就是: postgresql.serviceAccount.enabled=true,postgresql.serviceAccount.name=wikijs
  2. wikijs 这个用户赋权SCC: anyuid: oc adm policy add-scc-to-user anyuid -z wikijs -n wiki
  3. 其他步骤都和上一节一致.

总结

通过这篇文章的介绍, 可以看出 Wiki.js 功能还是很强大的, 值得一用.

在 Kubernetes 中用 helm 部署, 直接使用官方的最简命令即可;

在离线环境下的 Kubernetes 中用 helm 部署, 需要多2个步骤:

  1. ConfigMap 通过 SubPath 方式挂载wiki.js 的配置文件 config.yml, 配置文件多了一句: offline: true
  2. 申请一个新的PVC, 挂载到/wiki/data/sideload, 并将 locales 相关文件放进去.

在离线环境下的 OpenShift 中用 helm 部署, 由于权限限制严格, 需要调整 ServiceAccount 并授予更高权限.

???

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-01,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 东风微鸣技术博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Wikijs - 最强大 最可扩展的开源维基软件
    • 优点
      • ? 随时随地安装
      • ?? 管理强大
      • ? 性能
      • ? 定制
      • ? 隐私保护
      • ? 可伸缩
  • 功能齐全
    • 认证
      • 本地身份认证
      • Social 身份认证
      • 企业认证
      • 两阶段认证
    • 编辑
      • MarkDown
      • 所见即所得编辑器
      • HTML
    • 历史
      • 版本追踪
      • 比较版本
      • 导出 / 切换分支
    • Locales
      • 多语言支持
        • 原生 RTL 支持
        • 多语种内容
      • 多媒体资产
        • 资产管理
      • 渲染
        • 代码突出显示
        • Graph
        • 数学表达
      • 搜索
        • 数据库
        • 云搜索
        • ES
      • 存储
        • Git
        • 企业云存储
        • 本地/网络
      • 用户管理
        • 管理工具
        • 权限
        • 页面规则
      • 主题
        • 黑暗模式
        • 注入自定义 CSS/JS
    • 我为什么选择 Wiki.js
    • 使用 Helm 部署 Wiki.js
      • 官方教程
        • Kubernetes
      • 离线环境下使用 Helm 部署 Wiki.js
        • 概述
        • Locales
        • 步骤
        • 总结
      • 离线环境下 在OpenShift 中使用 Helm 部署 Wiki.js
      • 总结
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com