{"id":13626267,"url":"https://github.com/IBM/Scalable-WordPress-deployment-on-Kubernetes","last_synced_at":"2025-04-16T14:32:55.273Z","repository":{"id":46646194,"uuid":"84883233","full_name":"IBM/Scalable-WordPress-deployment-on-Kubernetes","owner":"IBM","description":"This code showcases the full power of Kubernetes clusters and shows how can we deploy the world's most popular website framework on top of world's most popular container orchestration platform.","archived":true,"fork":false,"pushed_at":"2022-09-13T04:36:12.000Z","size":9366,"stargazers_count":217,"open_issues_count":10,"forks_count":171,"subscribers_count":29,"default_branch":"master","last_synced_at":"2024-12-20T23:34:42.851Z","etag":null,"topics":["bluemix","containers","ibm-developer-technology-cloud","ibmcode","kubernetes","mysql","wordpress"],"latest_commit_sha":null,"homepage":"https://developer.ibm.com/code/patterns/scalable-wordpress-on-kubernetes","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IBM.png","metadata":{"files":{"readme":"README-jp.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-03-13T23:10:22.000Z","updated_at":"2024-11-13T13:44:05.000Z","dependencies_parsed_at":"2023-01-18T05:45:30.012Z","dependency_job_id":null,"html_url":"https://github.com/IBM/Scalable-WordPress-deployment-on-Kubernetes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FScalable-WordPress-deployment-on-Kubernetes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FScalable-WordPress-deployment-on-Kubernetes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FScalable-WordPress-deployment-on-Kubernetes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2FScalable-WordPress-deployment-on-Kubernetes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBM","download_url":"https://codeload.github.com/IBM/Scalable-WordPress-deployment-on-Kubernetes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249250820,"owners_count":21237961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluemix","containers","ibm-developer-technology-cloud","ibmcode","kubernetes","mysql","wordpress"],"created_at":"2024-08-01T21:02:14.294Z","updated_at":"2025-04-16T14:32:54.648Z","avatar_url":"https://github.com/IBM.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/IBM/Scalable-WordPress-deployment-on-Kubernetes.svg?branch=master)](https://travis-ci.org/IBM/Scalable-WordPress-deployment-on-Kubernetes)\n\n*他の言語で表示: [English](README.md) / [한국어](README-ko.md) / [português](README-po.md).*\n\n# スケーラブルな WordPress 実装を Kubernetes クラスター上にデプロイする\n\nこのチュートリアルでは、Kubernetesクラスタの全機能を紹介し、世界で最も人気のあるWebサイトフレームワークを世界で最も人気のあるコンテナ・オーケストレーションプラットフォーム上に展開する方法を紹介します。KubernetesクラスタでWordPressをホストするための完全なロードマップを提供します。各コンポーネントは別々のコンテナまたはコンテナのグループで実行されます。\n\nWordpressは典型的な多層アプリケーションを表し、各コンポーネントはそれぞれのコンテナを持ちます。WordPressコンテナはフロントエンド層となり、MySQLコンテナはWordPressのデータベース/バックエンド層になります。\n\nKubernetesへのデプロイに加えて、フロントのWordPress層をどのように拡張できるか、そしてMySQLをIBM Cloudからのサービスとして仕様してWordPressフロントエンドで使用する方法も説明します。\n\n![kube-wordpress](images/kube-wordpress-code.png)\n\n## Included Components\n- [WordPress (最新版)](https://hub.docker.com/_/wordpress/)\n- [MySQL (5.6)](https://hub.docker.com/_/mysql/)\n- [Kubernetes Clusters](https://cloud.ibm.com/docs/containers/cs_ov.html#cs_ov)\n- [IBM Cloud Compose for MySQL](https://cloud.ibm.com/catalog/services/compose-for-mysql)\n- [IBM Cloud DevOps Toolchain Service](https://cloud.ibm.com/catalog/services/continuous-delivery)\n- [IBM Cloud Kubernetes Service](https://cloud.ibm.com/catalog?taxonomyNavigation=apps\u0026category=containers)\n\n## 前提条件\n\nローカルテスト用の[Minikube](https://kubernetes.io/docs/setup/minikube/)や、[IBM Cloud Kubernetes Service](https://github.com/IBM/container-journey-template)または[IBM Cloud Private](https://github.com/IBM/deploy-ibm-cloud-private/blob/master/README.md) のいずれかでKubernetes Clusterを作成します。このレポジトリのコードは[Kubernetes Cluster from IBM Cloud Container Service](https://cloud.ibm.com/docs/containers/cs_ov.html#cs_ov)上でTravis CIを使用して定期的にテストされています。\n\n## 目的\n\nこのシナリオでは、以下の作業について説明します:\n\n- 永続ディスクを定義するためローカル永続ボリュームを作成\n- 機密データを保護するためのシークレットを作成\n- WordPressフロントエンドのポットを1つ以上作成してデプロイ\n- MySQLデータベースを作成してデプロイします。(コンテナ内、またはバックエンドとしてIBM CloudのMySQLを使用)\n\n## Deploy to IBM Cloud\nWordPressを直接IBM Cloudへデプロイしたい場合は、下の`Deploy to IBM Cloud`ボタンをクリックしてWordPressサンプルをデプロイするためのIBM Cloud DepOps サービスツールチェインとパイプラインを作成します。それ以外の場合は、[手順](##手順)へジャンプします\n\n[![Create Toolchain](https://cloud.ibm.com/devops/setup/deploy/button.png)](https://cloud.ibm.com/devops/getting-started)\n\nツールチェインとパイプラインを完成させるには、 [Toolchain instructions](https://github.com/IBM/container-journey-template/blob/master/Toolchain_Instructions_new.md) の指示に従ってください。\n\n## 手順\n1. [MySQL シークレットの設定](#1-mysql-シークレットの設定)\n2. [ローカル永続ボリュームの作成](#2-ローカル永続ボリュームの作成)\n3. [WordPressとMySQLのサービス/デプロイメントの作成と配布](#3-WordPressとMySQLのサービス/デプロイメントの作成と配布)\n  - 3.1 [コンテナ内でMySQLを使用する](#31-コンテナ内でMySQLを使用する)\n  - 3.2 [バックエンドとしてIBM Cloud MySQLを使用する](#32-バックエンドとしてIBM-Cloud-MySQLを使用する)\n4. [外部のWordPressリンクにアクセスする](#4-外部のWordPressリンクにアクセスする)\n5. [WordPressを使用する](#5-WordPressを使用する)\n\n# 1. MySQL シークレットの設定\n\n\u003e *Quickstart option:* このレポジトリ内で `bash scripts/quickstart.sh`を実行します。\n\n同じディレクトリに`password.txt`という名前の新しいファイルを作成し、希望のMySQLパスワードを`password.txt`の中に入れます。 (ASCII文字を含む任意の文字列).\n\n\n`password.txt`の末尾に改行が無いことを確認する必要があります。改行を削除するには、次のコマンドを使用します。\n```bash\ntr -d '\\n' \u003cpassword.txt \u003e.strippedpassword.txt \u0026\u0026 mv .strippedpassword.txt password.txt\n```\n\n# 2. ローカル永続ボリュームの作成\nKubernetesポッドのライフサイクルを超えてデータを保存するには、MySQLおよびWordPressアプリケーションが接続するための永続的なボリュームを作成する必要があります。\n\n#### IBM Cloud Kubernetes Service \"ライト\"クラスタ\n次のコマンドを実行して、ローカル永続ボリュームを手動で作成します\n```bash\nkubectl create -f local-volumes.yaml\n```\n#### IBM Cloud Kubernetes Service \"有料\"クラスタ または Minikube\nMySQLおよびWordPressアプリケーションがデプロイされると、永続ボリュームが動的に作成されます。この手順は不要です\n\n# 3. WordPressとMySQLのサービス/デプロイメントの作成と配布\n\n### 3.1 コンテナ内でMySQLを使用する\n\n\u003e *Note:* IBM Cloud Compose-MySQLをバックエンドとして使用したい場合は、[バックエンドとしてIBM Cloud MySQLを使用する](#32-バックエンドとしてIBM-Cloud-MySQLを使用する)を参照してください\n\n永続ボリュームをクラスタのローカルストレージにインストールします。その後、MySQLとWordPressのためのシークレットとサービスを作成します\n```bash\nkubectl create secret generic mysql-pass --from-file=password.txt\nkubectl create -f mysql-deployment.yaml\nkubectl create -f wordpress-deployment.yaml\n```\n\n\nすべてのポッドが実行されたら、次のコマンドを実行してポッド名を確認します。\n```bash\nkubectl get pods\n```\n\nこれにより、Kubernetesクラスタからのポッドのリストが返されます\n```bash\nNAME                               READY     STATUS    RESTARTS   AGE\nwordpress-3772071710-58mmd         1/1       Running   0          17s\nwordpress-mysql-2569670970-bd07b   1/1       Running   0          1m\n```\n\nそれでは、[外部のWordPressリンクにアクセスする](#-4-外部のWordPressリンクにアクセスする)へ進んでください\n\n### 3.2 バックエンドとしてIBM Cloud MySQLを使用する\n\nIBM CloudでCompose for MySQLをプロビジョニングします https://cloud.ibm.com/catalog/services/compose-for-mysql\n\nサービス認証情報に移動して、認証情報を確認してください。\nMySQLのホスト名、ポート番号、ユーザー、パスワードがあなたの認証情報URIの下にあり、以下のように見えるはずです\n\n![mysql](images/mysql.png)\n\n`wordpress-deployment.yaml`ファイルを編集し、WORDPRESS_DB_HOSTの値をMySQLのホスト名とポート番号に変更し(例： `value: \u003chostname\u003e:\u003cport\u003e`)、 WORDPRESS_DB_USERの値をMySQLパスワードに変更します\n\n環境変数は次のようになります\n\n```yaml\n    spec:\n      containers:\n      - image: wordpress:4.7.3-apache\n        name: wordpress\n        env:\n        - name: WORDPRESS_DB_HOST\n          value: sl-us-dal-9-portal.7.dblayer.com:22412\n        - name: WORDPRESS_DB_USER\n          value: admin\n        - name: WORDPRESS_DB_PASSWORD\n          value: XMRXTOXTDWOOPXEE\n```\n\n`wordpress-deployment.yaml`を変更したら、次のコマンドを実行してWordPressをデプロイします\n```bash\nkubectl create -f wordpress-deployment.yaml\n```\n\nすべてのポッドが実行されたら、次のコマンドを実行してポッド名を確認します\n```bash\nkubectl get pods\n```\n\nこれにより、Kubernetesクラスタからポッドのリストが返されます\n\n```bash\nNAME                               READY     STATUS    RESTARTS   AGE\nwordpress-3772071710-58mmd         1/1       Running   0          17s\n```\n\n# 4. 外部のWordPressリンクにアクセスする\n\n\u003e 有料クラスタがある場合は、NodePortの代わりにLoadBalancerを使用することができます。\n\u003e\n\u003e`kubectl edit services wordpress`\n\u003e\n\u003e `spec`の下で、 `type: NodePort` を `type: LoadBalancer` に変更してください\n\u003e\n\u003e **Note:** YAMLファイルを編集したあとに、`service \"wordpress\" edited`が表示されていることを確認してください。これはYAMLファイルが入力ミスや接続エラーなしで正常に編集されたことを意味します。\n\nクラスタのIPアドレスを取得するには\n\n```bash\n$ bx cs workers \u003cyour_cluster_name\u003e\nOK\nID                                                 Public IP        Private IP     Machine Type   State    Status\nkube-hou02-pa817264f1244245d38c4de72fffd527ca-w1   169.47.220.142   10.10.10.57    free           normal   Ready\n```\n\nNodePort番号を取得するには、次のコマンドを実行する必要があります。\n\n```bash\n$ kubectl get svc wordpress\nNAME        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE\nwordpress   10.10.10.57   \u003cnodes\u003e       80:30180/TCP   2m\n```\n\nおめでとうございます。今あなたはあなたのWordPressサイトへアクセスするためのリンク**http://[IP]:[port number]** を使用することができるようになりました。\n\n\n\u003e **Note:** 上記の例では、リンクは次のようになります http://169.47.220.142:30180\n\nKubernetes UIでdeploymentのステータスを確認することができます。`kubectl proxy`を実行し、URL 'http://127.0.0.1:8001/ui' に移動して、WordPressコンテナの準備が整ったことを確認します。\n\n![Kubernetes Status Page](images/kube_ui.png)\n\n\u003e **Note:** ポッドが完全に機能するまで最大5分かかります。\n\n\n\n**(Optional)** クラスタ内にさらにリソースがあり、WordPress Webサイトをスケールアップしたい場合は、次のコマンドを実行して現在のdeploymentsを確認できます。\n\n```bash\n$ kubectl get deployments\nNAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE\nwordpress         1         1         1            1           23h\nwordpress-mysql   1         1         1            1           23h\n```\n\nこれで、次のコマンドを実行してWordPressフロントエンドをスケールアップできます。\n```bash\n$ kubectl scale deployments/wordpress --replicas=2\ndeployment \"wordpress\" scaled\n$ kubectl get deployments\nNAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE\nwordpress         2         2         2            2           23h\nwordpress-mysql   1         1         1            1           23h\n```\nご覧のとおり、WordPressフロントエンドを実行している2つのポッドがあります。\n\n\u003e **Note:** 無料クラスタユーザーの場合、無料利用枠のユーザーには限られたリソースしかないため、スケールアップは最大10個のポッドまでとすることをおすすめします。\n\n# 5. WordPressを使用する\n\nWordPressが起動しました。新しいユーザーとして登録して、WordPressをインストールすることができます。\n![wordpress home Page](images/wordpress.png)\n\nWordPresをインストール後、新しいコメントを投稿することができます。\n\n![wordpress comment Page](images/wordpress_comment.png)\n\n\n# トラブルシューティング\n\n誤って改行付きのパスワードを作成した場合、MySQLサービスを認証することはできません。現在のシークレットを削除するには\n\n```bash\nkubectl delete secret mysql-pass\n```\n\nサービス、deployments、永続ボリューム要求を削除したい場合は、次のコマンドで実行できます\n```bash\nkubectl delete deployment,service,pvc -l app=wordpress\n```\n\n永続ボリュームを削除したい場合は、次のコマンドで実行できます\n```bash\nkubectl delete -f local-volumes.yaml\n```\n\nWordPressの動作に時間がかかる場合、ログを調べることでWordPressのデバックすることができます。\n```bash\nkubectl get pods # WordPressのポッド名を取得する\nkubectl logs [wordpress pod name]\n```\n\n\n# References\n- このWordPressの例は、\nhttps://github.com/kubernetes/kubernetes/tree/master/examples/mysql-wordpress-pd にあるKubernetesのオープンソースの例[mysql-wordpress-pd](https://github.com/kubernetes/kubernetes/tree/master/examples/mysql-wordpress-pd)に基づいています。\n\n\n# ライセンス\nこのコードパターンは、Apache Software License, Version 2の元でライセンスされています。このコードパターン内で呼び出される個別のサードパーティコードオブジェクトは、独自の個別ライセンスに従って、それぞれのプロバイダによってライセンスされます。コントリビュートの対象は[Developer Certificate of Origin, Version 1.1 (DCO)](https://developercertificate.org/) と [Apache Software License, Version 2](https://www.apache.org/licenses/LICENSE-2.0.txt)です。\n\n[Apache Software License (ASL) FAQ](https://www.apache.org/foundation/license-faq.html#WhatDoesItMEAN)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIBM%2FScalable-WordPress-deployment-on-Kubernetes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIBM%2FScalable-WordPress-deployment-on-Kubernetes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIBM%2FScalable-WordPress-deployment-on-Kubernetes/lists"}