在使用kubernetes部署wordpress应用程序时,无需停机即可部署新版本的图像

时间:2018-04-11 00:24:48

标签: wordpress kubernetes

我是Kubernetes的新手,我按照本教程使用k8s Deploying WordPress部署WordPress应用程序。

假设我有3个带有WordPress的pod:4.8-apache图像,我有一个共享卷,使用WordPress 4.8的代码安装到每个pod。 让我们说我想在不停机的情况下将我的WordPress更新到4.9。 所以它必须是一个时间点,当有一些pods具有WordPress 4.8的代码,有些具有WordPress 4.9的代码,但所有的pod使用相同的卷,所以它怎么可能? 新的pod是否会覆盖共享文件夹中的代码?

1 个答案:

答案 0 :(得分:1)

可能会发生这种情况。从这个意义上说,我认为这不是遵循不变性原则(https://engineering.bitnami.com/articles/why-your-next-web-service-should-be-immutable.html)部署WordPress的正确方法。为了避免这种问题,我的建议是:

  • 使用环境变量代替持久化wp-config.php配置
  • 将所有资产存储在S3等服务中。有插件(https://deliciousbrains.com/wp-offload-s3/)。
  • 如果您想使用插件,请构建一个捆绑所有插件的图像(这可能会有点困难,但它可以避免您在播放盒之间出现不一致的痛苦)。

如果较新的版本意味着数据库中的更改,则可能会出现问题。在这种情况下,我会在pod定义中添加某种准备检查,这样,如果旧版本失败,它将从服务中删除,只有较新的WordPress pod可用。在这种情况下,在升级之前进行数据库备份也是一个不错的选择。