kubernetes上部署 wiki.js

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes上部署 wiki.js相关的知识,希望对你有一定的参考价值。

参考技术A wiki.js 是优秀的开源 wiki 系统,相较于 xwiki ,功能目前性上比 xwiki 不够完善,但也在不断进步。 wiki 写作、分项、权限管理功能还是有的,胜在 UI 设计很漂亮,能满足小团队的基本知识管理需求。

以下工作是在 kubernetes 1.23.0 + helm 3 已经部署好的情况下进行的。部署 kubernetes 可以参考我另外的文章 “kubesphere 多节点集群安装”

我们使用 openebs 作为存储,openebs 默认安装的 local storageclass 在 pod 销毁后自动删除,不适合用于我的 mysql 存储,我们在 local storageclass 基础上稍作修改,创建新的 storageclass,允许 pod 销毁后,pv 内容继续保留,手动决定怎么处理。

我们团队其他项目中也需要使用 postgresql, 为了提高 postgresql 数据库的利用率和统一管理,我们独立部署 postgresql, 并在安装 wiki.js 时,配置外部数据库。

我们使用 secret 保存 postgres 用户密码等敏感信息。

使用 configmap 保存数据库初始化脚本,在 数据库创建时,将 configmap 中的数据库初始化脚本挂载到 /docker-entrypoint-initdb.d, 容器初始化时会自动执行该脚本。

我们使用 openesb 来提供存储服务。可以通过 创建 pvc 来提供持久化存储。

在前面的步骤准备好各种配置信息和存储后,就可以开始部署 postgresql 服务了。
我们的 kubernetes 没有配置 存储阵列,使用的是 openesb 作为存储,我们使用 deployment 来部署 postgresql 服务。

测试略

adminer 是 php 语言的 数据库管理工具,可以在浏览器上管理数据库,因为我们的数据库部署在 kubernetes ,配套使用基于浏览器的 数据库管理工具,可以更方便的管理,而且不需要把安装在 kubernetes 集群里的数据库暴露出来,提高了数据保密性。

我们使用 configmap 保存 adminer 需要的环境变量。比如通过 ADMINER_DESIGN 设置皮肤,通过 ADMINER_PLUGINS 设置需要加载的插件。



我们使用 secret 保存 wiki.js 用于连接数据库的用户名密码等敏感信息。

我们使用 configmap 保存 wiki.js 的数据库连接信息。

如果 postgresql 数据库里没有创建 wikijs 用户和数据 ,需要手工完成一下工作:
通过 adminer 连接 postgresql 数据库,执行一下 sql 语句,完成数据库和用户的创建、授权

在前面的步骤准备好各种配置信息和存储后,就可以开始部署 wiki.js 服务了。

以下是完整的通过 deployment 部署 mysql 数据库和 xwiki 的 yaml 文件,保存为 xwiki.yaml 。

直接执行可以创建好 wiki.js

Helm 等待依赖项部署在 kubernetes 上准备就绪

【中文标题】Helm 等待依赖项部署在 kubernetes 上准备就绪【英文标题】:Helm wait till dependency deployment are ready on kubernetes 【发布时间】:2019-07-22 13:19:59 【问题描述】:

我正在使用 helm chart 在 kubernetes 上部署我的应用程序。但是我在堆栈中使用的服务依赖于其他服务我如何确保在依赖项建立之前不会部署 helm?

【问题讨论】:

【参考方案1】:

通常你不会;您只需让 Helm(或 kubectl apply -f)一次性启动所有内容,然后让它重试启动所有内容。

最常见的模式是,如果外部服务不可用,容器进程会在启动时简单地崩溃;发生这种情况时,Kubernetes Pod 机制将重新启动容器。如果依赖永远不会出现,您将永远陷入 CrashLoopBackOff 状态,但如果它在 5-10 秒内出现,那么一切都会在一两分钟内正常出现。

还要记住,任何类型的 pod 在 Kubernetes 中都是一次性的。 IME 如果某项服务无法正常工作,首先要尝试的是kubectl delete pod 并让部署控制器重新创建它。 Kubernetes 也可以自行执行此操作,例如,如果它决定需要将 pod 重新定位到不同的节点。也就是说:即使在您的 pod 首次启动 sup 时存在某些依赖关系,也不能保证它会永远保持下去。

【讨论】:

嗨,我们需要与 helm 相同的功能,我的意思是 chart B 将在 chart A 安装并启动并运行后部署,类似于wait 命令。几年后,有更好的解决方案吗? 此设置未更改。最后一段仍然相关:如果应用程序 A 在启动时间后失败,应用程序 B 仍然需要某种方式来做出反应,这与 A 尚未准备好并没有真正的不同。

以上是关于kubernetes上部署 wiki.js的主要内容,如果未能解决你的问题,请参考以下文章

在Kubernetes上部署Redis集群

Helm 等待依赖项部署在 kubernetes 上准备就绪

在Azure Stack上部署Kubernetes

sh 在Ubuntu上部署Kubernetes

操作指南|在Kubernetes集群上快速部署JumpServer开源堡垒机

微服务部署在 kubernetes 上,但没有给出预期的结果