关于运维:使用Helm部署Wikijs

45次阅读

共计 5350 个字符,预计需要花费 14 分钟才能阅读完成。

应用 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.enabledfalse而后设置 postgresql.postgresqlHostpostgresql.postgresqlPassword。其余选项 postgresql.postgresqlDatabasepostgresql.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.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/ 目录下
  1. 通过 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, 通过它主动申请存储.
  2. 因为须要 sideload. 须要批改config.yml, 通过如下 ConfigMap 的形式批改. 步骤如下:

    1. 创立如下 ConfigMap – wiki-config, 相比默认的只减少了一行:

    2. 在 wikijs 的 Deployment 中, 做如下批改, 将上边的 ConfigMap 通过 SubPath 挂载到指定地位

  3. 因为须要 sideload, 须要创立 data/sideload 文件夹, 并将 locales 文件放到该目录. 通过 PVC 实现

    1. 申请个 50M 左右的 PVC – sideload-data (步骤略)
    2. 将 PVC 挂载到 wikijs Deployment 指定目录:

    3. 再将下载好的 locales.json, en.jsonzh.json放到容器中的指定目录: /wiki/data/sideload. 如下:

  4. 待 wikijs Deployment 重启好之后, 就能够进入页面进行装置. 别离填入:

    1. 管理员邮箱
    2. 管理员明码, 再次确认管理员明码
    3. wikijs 站点的 URL
    4. 就会主动装置配置实现.
  5. 进入之后就能够在这里配置中文:

  6. 至此, 离线环境下应用 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 并授予更高权限.

🎉🎉🎉

三人行, 必有我师; 常识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

正文完
 0