应用 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 部署 Wikijs# 配置]] 局部列出了装置过程中能够配置的参数。
提醒 :应用
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 用于在整个部署中保留数据。请参阅 [[应用 Helm 部署 Wikijs# 配置]] 局部以配置 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/w… 下载。这些档案每天晚上都是最新的。
主文件
主文件 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 挂载到指定地位
-
-
因为须要 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 并授予更高权限.
🎉🎉🎉
三人行, 必有我师; 常识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.