返回博客

使用 Helm 在 Kubernetes 上设置 WordPress 和 MySQL

使用 Helm 在 Kubernetes 上设置 WordPress 和 MySQL

Kubernetes 现在是部署具有可扩展性和高可用性应用程序的标准方式。Kubernetes 允许开发人员根据需要快速启动和关闭实例,以确保内容的顺利交付。要了解有关 Kubernetes 的更多信息,请遵循我们的详细指南 了解 Kubernetes.

Helm 是一个非常流行的包管理器,用于在 Kubernetes 上安装应用程序。Helm 旨在部署 and 管理 Kubernetes 集群上的应用程序,并简化我们的操作流程。它还提供了对已打包的、开箱即用的 Kubernetes 应用程序的访问。这些被称为 Charts。熟悉 Kubernetes 和 Helm 是任何 DevOps 专家工具箱中的重要补充。

WordPress 是最受欢迎的内容管理系统(CMS)之一。将其与 MySQL 数据库相结合,可以实现高性能和高度可扩展的 Web 应用程序。保持 MySQL 外部化还将允许更多应用程序在其用例中利用同一个数据库。

在这篇文章中,我们 将使用 Helm 包管理器在 Kubernetes 上安装 WordPress,并将它们连接到外部 MySQL 服务器。让我们开始吧!

前提条件

成功完成本教程需要以下软件设置:

  1. 一个正在运行的 Kubernetes 集群。遵循此 在 Ubuntu 上安装 Kubernetes 步骤的教程.
  2. Kubernetes 命令行工具 kubectl.
  3. 您需要安装 Helm 包管理器。如果您还没有准备好使用 Helm,可以从其官方发布页面下载:GitHub – helm/helm: The Kubernetes Package Manager。要开始阅读 Helm 的逐步指南,您还可以阅读 Introduction to Helm: Package Manager for Kubernetes.
  4. 您需要安装 MySQL 以及 root 用户和密码。如果您是 MySQL 新手,请务必查看 How to setup MySQL on a server and MySQL basicsMySQL User – Create and Grant Permissions.

您还需要有一个与 MySQL 连接的正在运行的 Kubernetes 集群。对于拥有多个集群的用户,请确保您知道当前连接到 MySQL 的集群。要查看在您的 kubectl 配置文件中配置的所有不同集群,请运行以下命令:

在您的机器上,您需要获得以下输出:

Current

Name

Cluster

AuthInfo

Namespace

*

docker-desktop

docker-desktop

docker-desktop

由于我们使用 Docker Desktop 来运行 Kubernetes,您会看到显示 docker-desktop。您的值可能会有所不同。星号(*)表示当前哪个集群是默认上下文。如果您需要更改当前上下文,请运行:

您现在已准备好按照教程的步骤进行操作。

设置 MySQL

首先,我们将在 MySQL 中创建一个专用用户来连接到 WordPress。这是必要的,因为我们的 WordPress 安装将位于 Kubernetes 集群内的一台独立服务器上。在 MySQL 服务器上,使用以下命令登录 MySQL:

系统将提示您输入 root 密码。输入密码后,您将成功连接。

  • 为 WordPress 创建专用数据库

在 MySQL 中可以有任意数量的数据库。其他数据库也可以在应用程序之间共享。WordPress 也自带数据库。在这里,我们必须为 WordPress 创建一个专用数据库。要创建此专用数据库,您可以在 MySQL bash 上执行以下语句:

  • 为 WordPress 创建专用用户

数据库创建完成后,我们将为此数据库创建一个专用用户。我们将使用该用户连接到我们新创建的数据库:

在上方输入一个强密码。虽然我们已经为 WordPress 创建了用户,但到目前为止我们还没有添加任何权限。我们需要为我们的用户提供访问和 DML(数据操作)操作的权限。为了简单起见,我们将为我们的用户提供所有权限。请注意,在生产环境中不推荐这样做。在 MySQL shell 中执行以下命令:

要更新管理访问权限的内部 MySQL 表,请使用以下语句:

最后,您可以通过在 MySQL shell 中运行以下命令来关闭 MySQL 客户端:

  • 验证我们的用户和数据库

接下来,我们需要验证我们的 WordPress 用户可以连接到 WordPress 数据库。 为此,请打开 MySQL shell 并运行以下命令:

系统将提示您输入密码。使用您在上方为 WordPress 用户输入的密码。如果您可以登录,恭喜您成功创建了 MySQL 用户。接下来,验证该用户是否具有 WordPress 数据库访问权限。在 MySQL shell 中运行以下命令:
如果您在下方看到您的 WordPress 数据库,则说明您的 WordPress 用户具有对 WordPress 数据库的访问权限。

  • 允许远程连接到我们的 MySQL 服务器

到目前为止,我们已经有一个可以正常工作的 WordPress 用户和 WordPress 数据库。然而,我们的 MySQL 服务器和 WordPress 数据库位于不同的服务器上。因此,我们需要确保 WordPress 能够连接到 MySQL 数据库。为此,我们需要编辑 MySQL 配置以允许来自远程主机的连接。您需要编辑 mysqld.cnf 文件。在基于 Linux 的系统上,该文件位于:

之后,使用任何文本编辑器打开该文件并找到 bind-address。bind-address 指定了 MySQL 可以监听的 IP。默认情况下,MySQL 仅监听 127.0.0.1.。要允许来自外部主机的连接,请将 bind-address 更改为 0.0.0.0.。要使这些更改生效,请通过运行以下命令重启 MySQL 服务器:

接下来,如果您想测试是否能够远程连接,请从本地机器或开发服务器运行以下命令:
mysql_server_ip 添加到上述命令中并执行。如果您可以无错连接,则可以继续下一步。

安装和升级 WordPress

WordPress 默认使用 MariaDB 作为其数据库。我们不想使用这个数据库,因为我们想要使用我们的 MySQL 数据库。除了这一更改之外,我们还需要配置管理员用户名和密码。我们将通过实现命令行参数来做到这一点。

首先,创建一个名为 my blog-settings 的新文件夹。在文件夹内创建一个名为 values.yaml 的新文件。在 values.yaml 文件中输入以下内容:

该文件是不言自明的。请注意,我们在下方禁用了 MariaDB。现在我们的配置已准备就绪,是时候执行 helm 用于 WordPress 安装。在 PowerShell 中运行以下命令:

流程完成后,您将看到一个名为 myblog-wordpress 的服务。WordPress 需要一些时间才能准备就绪。要查找正在运行的服务,请执行以下命令:
您将得到如下结果:

NAME

TYPE

CLUSTER-IP

EXTERNAL-IP

PORT

myblog-wordpress

ClusterIP

10.96.0.1

<none>

80:31403/TCP,443:30879/TCP

这里有关于正在运行的服务的非常实用的信息。我们需要注意外部 IP 和端口。外部 IP 是提供 WordPress 服务的 IP。由于我们使用的是 Docker Desktop,因此在外部 IP 下显示为 none。您将根据您的系统获取 IP。打开网页浏览器并输入此 IP。您将看到 WordPress 登录页面:

WordPress with MySQL 1

这些是我们在上述 YAML 文件中提供的凭据。输入 these 凭据,您就可以在 WordPress 上配置您的网站,并将内容存储在我们新创建的 MySQL 数据库中。

升级 WordPress

WordPress 发布更新以修复安全漏洞并推出更多功能/错误修复等。您可以通过在 PowerShell 中运行以下命令来升级 WordPress 安装:

在升级之前,如果您想查看发布版本列表,可以运行以下命令:

您将得到如下输出:

如果您想查看是否有新版本的 WordPress 仓库可用,可以运行以下命令:

每当您想将 WordPress 版本升级到最新的 WordPress chart 时,应运行:

我们必须使用与之前相同的配置文件,以便配置值不会改变。

回滚版本

每次使用 Helm 进行升级时,Helm 都会创建版本的检查点。如果情况不如预期,您可以返回。版本可以进行比较和回滚。如果升级过程由于任何问题而出错,您可以回滚到上一个版本。要进行回滚,请执行以下命令:

在我们的案例中,运行以下命令以回滚到上一个版本:

要验证回滚过程是否已成功完成,您可以执行 helm list 命令。

结论

在这篇全面的教程中,我们向您展示了如何设置 MySQL 并使用此外部 MySQL 安装 WordPress。我们使用 Helm 包管理器在 Kubernetes 上安装了 WordPress,并在 WordPress 中进行了升级。

既然您已经了解了如何使用 Helm 在 Kubernetes 上进行安装,请不要止步于此。欢迎浏览 CloudSigma 博客 以了解更多关于 Kubernetes 的信息:

祝您使用愉快!

author

Hark Labs

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。