使用Helm部署Wikijs
使用 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) 目录运行以下情况:
️ 参考文档:
需要先将该 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
️ 参考文档:
概述
根据官方文档和 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 挂载到指定位置

因为需要 sideload, 需要创建
data/sideload文件夹, 并将 locales 文件放到该目录. 通过 PVC 实现申请个50M 左右的 PVC -
sideload-data(步骤略)将 PVC 挂载到 wikijs Deployment指定目录:

再将下载好的
locales.json,en.json和zh.json放到容器中的指定目录:/wiki/data/sideload. 如下:
待 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 并授予更高权限.
使用Helm部署Wikijs的更多相关文章
- helm部署Filebeat + ELK
helm部署Filebeat + ELK 系统架构图: 1) 多个Filebeat在各个Node进行日志采集,然后上传至Logstash 2) 多个Logstash节点并行(负载均衡,不作为集群),对 ...
- ASP.NET Core 借助 Helm 部署应用至K8S
前言 玩K8S也有一段时间了,借助云服务提供商的K8S控制台,已经可以很方便的快速部署应用至K8S.通过简单的点击,可以一次性帮忙创建K8S 对象:Deployment.Service.Ingress ...
- 053.集群管理-Helm部署及使用
一 Helm概述 1.1 Helm介绍 Helm 是 Kubernetes 的软件包管理工具.包管理器类似 Ubuntu 中使用的apt.Centos中使用的yum 或者Python中的 pip 一样 ...
- 用Helm部署Kubernetes应用,支持多环境部署与版本回滚
1 前言 Helm是优秀的基于Kubernetes的包管理器.利用Helm,可以快速安装常用的Kubernetes应用,可以针对同一个应用快速部署多套环境,还可以实现运维人员与开发人员的职责分离.现在 ...
- helm部署的服务如何修改配置
关于helm部署服务 在Kubernetes上进行容器化部署时,使用helm可以简化操作,以部署Jenkins为例,只需要以下命令即可完成部署: helm install --namespace he ...
- helm部署mysql
如果您的kubernetes已有了helm,那么部署mysql的步骤可以进一步简化,那些原先需要自己动手配置的deployment和service都已集成在chart中,今天就来实战通过helm部署m ...
- Kubernetes K8S之Helm部署、使用与示例
Kubernetes K8S之Helm部署.使用.常见操作与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...
- Kubernetes K8S之通过helm部署metrics-server与HPA详解
Kubernetes K8S之通过helm部署metrics-server与 Horizontal Pod Autoscaling (HPA)详解 主机配置规划 服务器名称(hostname) 系统版 ...
- helm 部署 使用 记录
0.概念:Helm作为一个包管理工具, 它把Kubernetes资源(比如deployments.services或 ingress等) 打包到一个chart中,方便我们将其chart保存到chart ...
- helm 部署
Helm 基本概念 Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现.共享和使用为Kubernetes构建的应用,它包含几个基本概念 Chart:一个 Helm 包,其中包含了 ...
随机推荐
- 【Azure Fabric Service】Service Fabric 托管群集通过 Connect-ServiceFabricCluster 连接时候报错 CertificatedNotMatched
问题描述 Service Fabric 托管群集, 使用Key Vault中证书,把证书导入到本地安装后,使用该证书的 Thumbprint 作为指令 Connect-ServiceFabricClu ...
- 【Azure 应用程序见解】通过Azure Funciton的门户启用Application Insights后,Application Insights无法收到监控数据
问题描述 比较早期创建的Azure Funciton服务,近期发现在门户中已经启用了Application Insights功能,但是正确配置Applicaiton Insights后,却无法获取关联 ...
- 【Azure 应用服务】App Service / Function App 修改系统时区为中国时区的办法(Azure中所有服务的默认时间都为UTC时间,转换为北京时间需要+8小时)
问题描述 在Azure的 App Service / Function App 服务中,如果是在Windows系统中,可以通过添加Application Setting来转换为中国时间(WEBSITE ...
- C++ //类模板与友元 //全局函数类内实现 -直接在类内声名由于即可 //全局函数类外实现 -需要提前让编译器知道全局函数的存在
1 //类模板与友元 2 //全局函数类内实现 -直接在类内声名由于即可 3 //全局函数类外实现 -需要提前让编译器知道全局函数的存在 4 5 #include <iostream> 6 ...
- nginx设置访问账号密码
第一:为kibana加上了用户登陆访问 第二:不暴露服务器上5601端口,只开放80端口即可.这对服务器的安全也是一个很大的保护. 接下来我们就开始配置nginx与kibana. 一.配置nginx ...
- 3、mysql定位低效率执行SQL
可以通过以下两种方式定位执行效率较低的 SQL 语句. 慢查询日志 : 通过慢查询日志定位那些执行效率较低的 SQL 语句,用--log-slow-queries[=file_name]选项启动时,m ...
- .NET Conf China 2023济南站社区活动
2024年3月3日,在这个春暖花开的日子里,由微软MVP项目.山东财经大学管理科学与工程学院.胶东开发者社区.济南.NET俱乐部联合举办了[.NET Conf China 2023 JiNan Wa ...
- MySQl出现ERROR 1045 (28000): Access denied for user 'root'@'localhost'解决方法
描述 使用到是阿里云服务器,系统为cent Os,给某个账户授权之后,root的账户就登录不进去了,原本root账户设置好了远程连接的权限了,网上搜索了一大堆,终于自己摸索得到了几个方法 产生原因 r ...
- gradle安装单元测试坎坷历程
参考,欢迎点击原文:https://blog.csdn.net/qq_42815122/article/details/85395111(灵感) 自己写的用户系统要加上单元测试,加就加吧,跟着网上的好 ...
- c++的IO类
CPP的IO类 继承图: IO对象不能拷贝或赋值 istream in = cin; //错! istream &in = cin; //正确! IO对象的状态 strm::good:读正常 ...