Kubernetes 現在是部署具備可擴充性與高可用性應用程式的標準方式。Kubernetes 允許開發人員根據需要快速啟動和關閉執行個體,以確保內容的順暢傳遞。要了解更多關於 Kubernetes 的資訊,請參閱我們的詳細指南 認識 Kubernetes.
Helm 是一個非常受歡迎的套件管理器,用於在 Kubernetes 上安裝應用程式。Helm 旨在部署和管理 Kubernetes 叢集上的應用程式,並簡化整個過程。它還提供了對已封裝的 Kubernetes 即用型應用程式的存取。這些被稱為 Charts。熟悉 Kubernetes 和 Helm 是任何 DevOps 專家必備的重要技能。
WordPress 是最受歡迎的內容管理系統 (CMS) 之一。將其與 MySQL 資料庫結合,可以帶來高效能且高度可擴充的網路應用程式。將 MySQL 保持在外部,還能讓更多應用程式在各自的使用案例中利用同一個資料庫。
在這篇文章中,我們 將使用 Helm 套件管理器在 Kubernetes 上安裝 WordPress,並將它們連接到外部 MySQL 伺服器。讓我們開始吧!
先決條件
若要成功完成本教學,需要進行以下軟體設定:
- 一個正在運行且運作正常的 Kubernetes 叢集。請遵循此 在 Ubuntu 上安裝 Kubernetes 步驟的教學.
- Kubernetes 命令列工具
kubectl. - 您需要安裝 Helm 套件管理器。如果您還沒有準備好使用 Helm,可以從其在 GitHub – helm/helm: Kubernetes 套件管理器 的官方發佈頁面下載。要開始閱讀 Helm 的逐步指南,您也可以閱讀 Helm 簡介:Kubernetes 套件管理器.
- 您需要安裝 MySQL 以及 root 使用者和密碼。如果您是 MySQL 新手,請務必查看 如何在伺服器上設定 MySQL 以及 MySQL 基礎知識 和 MySQL 使用者 – 建立與授予權限.
您還需要有一個與 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 設定 wordpressUsername: my_user wordpressPassword: some_strong_password wordpressEmail: sample@example.com wordpressFirstName: User wordpressLastName: Last wordpressBlogName: 我的 部落格! ## 資料庫設定 externalDatabase: host: <mysql_server_ip> user: wordpress_user password: password database: wordpress ## 啟用 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 和連接埠(Port)。外部 IP 是提供 WordPress 服務的 IP。由於我們使用的是 Docker Desktop,因此在外部 IP 下顯示為 none。您將根據您的系統獲取 IP。打開您的網頁瀏覽器並輸入此 IP。您將看到 WordPress 登入頁面:
這些是我們在上述 YAML 檔案中提供的憑證。輸入這些憑證,您就可以在 WordPress 上設定您的網站,並將內容儲存在我們新建立的 MySQL 資料庫中。
升級 WordPress
WordPress 發布更新以修復安全性漏洞,並推出更多功能/錯誤修復等。您可以透過在 PowerShell 中執行以下命令來升級 WordPress 安裝:
|
1 |
helm upgrade |
在升級之前,如果您想查看版本(releases)列表,可以執行以下命令:
|
1 |
helm list |
您將得到如下輸出:
|
1 2 3 |
請稍等,我們正在 獲取最新的版本來自您的chart倉庫… …跳過本地chart倉庫 …成功獲取更新來自於the “stable” chart倉庫 |
如果您想查看是否有新版本的 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 生態系統概述
祝您運算愉快!

留言
目前尚無留言。成為第一個留言的人吧。