Kubernetes 现在是部署具有可扩展性和高可用性应用程序的标准方式。Kubernetes 允许开发人员根据需要快速启动和关闭实例,以确保内容的顺利交付。要了解有关 Kubernetes 的更多信息,请遵循我们的详细指南 了解 Kubernetes.
Helm 是一个非常流行的包管理器,用于在 Kubernetes 上安装应用程序。Helm 旨在部署 and 管理 Kubernetes 集群上的应用程序,并简化我们的操作流程。它还提供了对已打包的、开箱即用的 Kubernetes 应用程序的访问。这些被称为 Charts。熟悉 Kubernetes 和 Helm 是任何 DevOps 专家工具箱中的重要补充。
WordPress 是最受欢迎的内容管理系统(CMS)之一。将其与 MySQL 数据库相结合,可以实现高性能和高度可扩展的 Web 应用程序。保持 MySQL 外部化还将允许更多应用程序在其用例中利用同一个数据库。
在这篇文章中,我们 将使用 Helm 包管理器在 Kubernetes 上安装 WordPress,并将它们连接到外部 MySQL 服务器。让我们开始吧!
前提条件
成功完成本教程需要以下软件设置:
- 一个正在运行的 Kubernetes 集群。遵循此 在 Ubuntu 上安装 Kubernetes 步骤的教程.
- Kubernetes 命令行工具
kubectl. - 您需要安装 Helm 包管理器。如果您还没有准备好使用 Helm,可以从其官方发布页面下载:GitHub – helm/helm: The Kubernetes Package Manager。要开始阅读 Helm 的逐步指南,您还可以阅读 Introduction to Helm: Package Manager for Kubernetes.
- 您需要安装 MySQL 以及 root 用户和密码。如果您是 MySQL 新手,请务必查看 How to setup MySQL on a server and MySQL basics 和 MySQL User – Create and Grant Permissions.
您还需要有一个与 MySQL 连接的正在运行的 Kubernetes 集群。对于拥有多个集群的用户,请确保您知道当前连接到 MySQL 的集群。要查看在您的 kubectl 配置文件中配置的所有不同集群,请运行以下命令:
|
1 |
kubectl config get-contexts |
在您的机器上,您需要获得以下输出:
|
Current |
Name |
Cluster |
AuthInfo |
Namespace |
|
* |
docker-desktop |
docker-desktop |
docker-desktop |
由于我们使用 Docker Desktop 来运行 Kubernetes,您会看到显示 docker-desktop。您的值可能会有所不同。星号(*)表示当前哪个集群是默认上下文。如果您需要更改当前上下文,请运行:
|
1 |
kubectl config use-context context-name |
您现在已准备好按照教程的步骤进行操作。
设置 MySQL
首先,我们将在 MySQL 中创建一个专用用户来连接到 WordPress。这是必要的,因为我们的 WordPress 安装将位于 Kubernetes 集群内的一台独立服务器上。在 MySQL 服务器上,使用以下命令登录 MySQL:
|
1 |
mysql -u root -p |
系统将提示您输入 root 密码。输入密码后,您将成功连接。
-
为 WordPress 创建专用数据库
在 MySQL 中可以有任意数量的数据库。其他数据库也可以在应用程序之间共享。WordPress 也自带数据库。在这里,我们必须为 WordPress 创建一个专用数据库。要创建此专用数据库,您可以在 MySQL bash 上执行以下语句:
|
1 |
CREATE DATABASE wordpress |
-
为 WordPress 创建专用用户
数据库创建完成后,我们将为此数据库创建一个专用用户。我们将使用该用户连接到我们新创建的数据库:
|
1 |
CREATE USER wordpress_user IDENTIFIED BY '<password>'; |
在上方输入一个强密码。虽然我们已经为 WordPress 创建了用户,但到目前为止我们还没有添加任何权限。我们需要为我们的用户提供访问和 DML(数据操作)操作的权限。为了简单起见,我们将为我们的用户提供所有权限。请注意,在生产环境中不推荐这样做。在 MySQL shell 中执行以下命令:
|
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress_user@'%'; |
要更新管理访问权限的内部 MySQL 表,请使用以下语句:
|
1 |
FLUSH PRIVILEGES; |
最后,您可以通过在 MySQL shell 中运行以下命令来关闭 MySQL 客户端:
|
1 |
Exit; |
-
验证我们的用户和数据库
接下来,我们需要验证我们的 WordPress 用户可以连接到 WordPress 数据库。 为此,请打开 MySQL shell 并运行以下命令:
|
1 |
mysql -u <wordpress_user> -p |
|
1 |
show databases |
-
允许远程连接到我们的 MySQL 服务器
到目前为止,我们已经有一个可以正常工作的 WordPress 用户和 WordPress 数据库。然而,我们的 MySQL 服务器和 WordPress 数据库位于不同的服务器上。因此,我们需要确保 WordPress 能够连接到 MySQL 数据库。为此,我们需要编辑 MySQL 配置以允许来自远程主机的连接。您需要编辑 mysqld.cnf 文件。在基于 Linux 的系统上,该文件位于:
|
1 |
/etc/mysql/mysql.conf.d/mysqld.cnf |
之后,使用任何文本编辑器打开该文件并找到 bind-address。bind-address 指定了 MySQL 可以监听的 IP。默认情况下,MySQL 仅监听 127.0.0.1.。要允许来自外部主机的连接,请将 bind-address 更改为 0.0.0.0.。要使这些更改生效,请通过运行以下命令重启 MySQL 服务器:
|
1 |
systemctl restart mysql |
|
1 |
mysql -h <mysql_server_ip> -u wordpress_user -p |
mysql_server_ip 添加到上述命令中并执行。如果您可以无错连接,则可以继续下一步。
安装和升级 WordPress
WordPress 默认使用 MariaDB 作为其数据库。我们不想使用这个数据库,因为我们想要使用我们的 MySQL 数据库。除了这一更改之外,我们还需要配置管理员用户名和密码。我们将通过实现命令行参数来做到这一点。
首先,创建一个名为 my blog-settings 的新文件夹。在文件夹内创建一个名为 values.yaml 的新文件。在 values.yaml 文件中输入以下内容:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
## WordPress Settings wordpressUsername: my_user wordpressPassword: some_strong_password wordpressEmail: sample@example.com wordpressFirstName: User wordpressLastName: Last wordpressBlogName: My 博客! ## Database Settings externalDatabase: host: <mysql_server_ip> user: wordpress_user password: password database: wordpress ## Enable Maria DB mariadb: enabled: false |
该文件是不言自明的。请注意,我们在下方禁用了 MariaDB。现在我们的配置已准备就绪,是时候执行 helm 用于 WordPress 安装。在 PowerShell 中运行以下命令:
|
1 |
helm install myblog -f values.yaml stable/wordpress |
myblog-wordpress 的服务。WordPress 需要一些时间才能准备就绪。要查找正在运行的服务,请执行以下命令:|
1 |
kubectl get services |
|
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 登录页面:
这些是我们在上述 YAML 文件中提供的凭据。输入 these 凭据,您就可以在 WordPress 上配置您的网站,并将内容存储在我们新创建的 MySQL 数据库中。
升级 WordPress
WordPress 发布更新以修复安全漏洞并推出更多功能/错误修复等。您可以通过在 PowerShell 中运行以下命令来升级 WordPress 安装:
|
1 |
helm upgrade |
在升级之前,如果您想查看发布版本列表,可以运行以下命令:
|
1 |
helm list |
您将得到如下输出:
|
1 2 3 |
Hang tight while we grab the latest from your chart repositories… …Skip local chart repository …Successfully got an update from the “stable” chart repository |
如果您想查看是否有新版本的 WordPress 仓库可用,可以运行以下命令:
|
1 |
helm inspect chart stable/wordpress |
每当您想将 WordPress 版本升级到最新的 WordPress chart 时,应运行:
|
1 |
helm upgrade -f values.yaml <your_name> stable/wordpress |
我们必须使用与之前相同的配置文件,以便配置值不会改变。
回滚版本
每次使用 Helm 进行升级时,Helm 都会创建版本的检查点。如果情况不如预期,您可以返回。版本可以进行比较和回滚。如果升级过程由于任何问题而出错,您可以回滚到上一个版本。要进行回滚,请执行以下命令:
|
1 |
helm rollback release-name revision-number |
在我们的案例中,运行以下命令以回滚到上一个版本:
|
1 |
helm rollback myblog 1 |
要验证回滚过程是否已成功完成,您可以执行 helm list 命令。
结论
在这篇全面的教程中,我们向您展示了如何设置 MySQL 并使用此外部 MySQL 安装 WordPress。我们使用 Helm 包管理器在 Kubernetes 上安装了 WordPress,并在 WordPress 中进行了升级。
既然您已经了解了如何使用 Helm 在 Kubernetes 上进行安装,请不要止步于此。欢迎浏览 CloudSigma 博客 以了解更多关于 Kubernetes 的信息:
- 在 Ubuntu 18.04 的 Kubernetes 集群上部署 PHP 应用程序
- 如何在 Ubuntu 18.04 上使用 Kubeadm 创建 Kubernetes 集群
- 什么是 Docker?Docker 生态系统概述
祝您使用愉快!

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