Kubernetes は、スケーラブルで高可用性を持つアプリケーションをデプロイするための標準的な方法となっています。Kubernetesを使用すると、開発者は必要に応じてインスタンスを迅速に起動および停止し、コンテンツをスムーズに配信できます。Kubernetesの詳細については、詳細なガイド「Getting to Know Kubernetes.
Helm は、Kubernetesにアプリケーションをインストールするために使用される非常に人気のあるパッケージマネージャーです。Helmは、Kubernetesクラスター上でアプリケーションをデプロイおよび管理し、そのプロセスを簡素化することを目的としています。また、パッケージ化されたKubernetes用のすぐに使えるアプリケーションへのアクセスも提供します。これらは チャート と呼ばれます。KubernetesとHelmに精通していることは、DevOpsスペシャリストのスキルセットにおいて重要な強みとなります。
WordPress は、最も人気のあるコンテンツ管理システム(CMS)の1つです。これと 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.
- もご参照ください。また、rootユーザーとパスワードが設定されたMySQLがインストールされている必要があります。MySQLを初めて使用する場合は、サーバーでのMySQLのセットアップ方法とMySQLの基本 および MySQLユーザー – 作成と権限の付与.
を確認してください。また、MySQLに接続された稼働中のKubernetesクラスターも必要です。複数のクラスターをお持ちの場合は、現在MySQLに接続されているクラスターを確認してください。お使いの kubectl 設定ファイルに設定されているすべての異なるクラスターを表示するには、以下のコマンドを実行します:
|
1 |
kubectl config get-contexts |
マシン上で、以下のような出力が表示されるはずです:
|
Current |
Name |
Cluster |
AuthInfo |
Namespace |
|
* |
docker-desktop |
docker-desktop |
docker-desktop |
Kubernetesを実行するためにDocker Desktopを使用しているため、docker-desktop と表示されます。実際の値は異なる場合があります。アスタリスク記号(*)は、現在どのクラスターがデフォルトのコンテキストであるかを示します。現在のコンテキストを変更する必要がある場合は、以下を実行します:
|
1 |
kubectl config use-context context-name |
これで、チュートリアルの手順に進む準備が整いました。
MySQLのセットアップ
まず、WordPressに接続するための専用ユーザーをMySQLに作成します。これは、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シェルで以下のコマンドを実行します:
|
1 |
GRANT ALL PRIVILEGES ON wordpress.* TO wordpress_user@'%'; |
アクセス権限を管理する内部MySQLテーブルを更新するには、次のステートメントを使用します:
|
1 |
FLUSH PRIVILEGES; |
最後に、MySQLシェルで以下のコマンドを実行してMySQLクライアントを閉じることができます:
|
1 |
Exit; |
-
ユーザーとデータベースの検証
次に、WordPress ユーザーが WordPressデータベースに接続できることを検証する必要があります。 これを行うには、MySQLシェルを開き、以下のコマンドを実行します:
|
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が表示されます。Webブラウザを開き、このIPを入力してください。WordPressのログインページが表示されます:
これらは、上記のYAMLファイルで指定した資格情報です。これらの資格情報を入力すると、WordPressでWebサイトを設定し、新しく作成した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チャートにアップグレードしたい場合は、常に以下を実行する必要があります:
|
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へのインストール方法を理解したところで、ここで立ち止まらないでください。お気軽にthe CloudSigma blogをご覧になり、Kubernetesについてさらに学習してください:
- Ubuntu 18.04でKubernetesクラスターにPHPアプリケーションをデプロイする
- Ubuntu 18.04でKubeadmを使用してKubernetesクラスターを作成する方法
- Dockerとは?Dockerエコシステムの概要
Happy Computing!

コメント
コメントはまだありません。最初のコメントを投稿しましょう。