用語説明
GKEとは?
Google Kubernetes Engine(GKE)は、Googleが管理するKubernetesのオープンソースコンテナオーケストレーションプラットフォームです。
GKEは、Google Cloudのインフラストラクチャ上で、コンテナ化されたアプリケーションのデプロイや運用管理を行うためのマネージドなKubernetesクラスタを利用できるサービスです。
GKEは、Kubernetesをより簡単かつ安全に使っていただくための機能を多く持っています。GKEのアーキテクチャは、大きくControl PlaneとNodeというコンポーネントに分かれています。
GKEは、Kubernetesのマネージドサービスであり、Kubernetesの知識を活かして細かい設定やカスタマイズが可能です
WordPressとは?
wordpress.com
WordPress(ワードプレス)は、ブログやWebサイトを作成できるコンテンツ管理システム(CMS)の一種です。PHPというプログラミング言語で作られており、世界中のサイトの約4分の1はWordPressで構築されていると言われています。
AIとの対話
対話AIはBardだったりChatGPTだったりします。
gke を利用してwordpressを構築したい
Google Kubernetes Engine(GKE)を利用してWordPressを構築するには、次の手順を実行します。
- WordPressアプリコンテナをホストするGKEクラスタを作成します。Cloud Shellでpersistent-disk-tutorialという名前のGKEクラスタを作成し、作成した新しいクラスタに接続します。
- GKEはVPCネイティブで作成する必要があります。VPCネイティブでGKEを作成する場合は、
--enable-ip-alias
オプションを付けて作成します。- WordPressとcloudSQLの通信は内部ネットワークを使用することを前提としているので、MySQLの代わりにGCPのCloud SQLを使用します。
- コンテナの外部ストレージとしてPersistentVolumes(PV)とPersistentVolumeClaims(PVC)を使用してデータを保存します。
GKEの公式チュートリアル(kubernetes.io)をはじめ、まとまっている情報を確認できます
紹介されたサイト
具体的なコマンド
完全な初心者だと公式のドキュメントと以下のサイトがわかりやすかったです。
Persistent Disk と Cloud SQL を使用して GKE に WordPress をデプロイする | Kubernetes Engine | Google Cloud
GKEチュートリアルやってみる その2 ~ GKEでWordPress ~ - 開発日報
なるべく料金やすく構築したいのでregionなどは以下も参考にします。
(ただし有料の部分を含みます。)
始める前に
環境設定
-
環境変数
PROJECT_ID
に Google Cloud プロジェクト ID(project-id)を設定します。PROJECT_IDは、シェルを動かしているなら、左の括弧内に書かれている文字です。 -
GitHub リポジトリからアプリ マニフェスト ファイルをダウンロードします。
-
wordpress-persistent-disks
ファイルのあるディレクトリに変更します。 -
WORKING_DIR
環境変数を設定します。
GKE クラスタの作成
WordPress アプリコンテナをホストする GKE クラスタを作成します。
Persistent Disk を基盤とする PV と PVC を作成する
永続的に保存するためにPVCを利用します。
このマニフェスト ファイルには、200 GB のストレージを必要とする PVC が記述されているので、一応1GBに変えてからapplyします。
-
Cloud Shell で、マニフェスト ファイルをデプロイします。
Cloud SQL for MySQL インスタンスを作成する
-
Cloud Shell で、
mysql-wordpress-instance
という名前のインスタンスを作成します。 -
WordPress のデータを保存するデータベースを作成します。
-
wordpress
というデータベース ユーザーとパスワードを作成しますSecretに保存するまでメモしておいてください。
これで、新しい WordPress ブログ用のデータベースの設定が完了しました。
WordPress をデプロイする
サービス アカウントを構成して Secret を作成する
-
WordPress アプリが Cloud SQL Proxy を介して MySQL インスタンスにアクセスできるようにするには、サービス アカウントを作成します。
-
サービス アカウントのメールアドレスを環境変数として追加します。
-
サービス アカウントに
cloudsql.client
ロールを追加します。 -
サービス アカウントのキーを作成します。
次のコマンドを実行して、
DB接続が失敗したら、このファイルのPROJECT IDなどがおかしくないか見てください。key.json
ファイルのコピーをダウンロードします。 -
MySQL 認証情報に Kubernetes Secret を作成します。
-
サービス アカウントの認証情報に Kubernetes シークレットを作成します。
WordPress をデプロイする
-
INSTANCE_CONNECTION_NAME
環境変数を置き換えてファイルを準備します。 -
wordpress_cloudsql.yaml
マニフェスト ファイルをデプロイします。Persistent Disk がコンピューティング ノードに接続される場合、このマニフェスト ファイルのデプロイに数分かかります。
-
デプロイのステータスが
running
に変わるのを待ちます。出力に
Running
のステータスが示されたら、次のステップに進むことができます。
WordPress サービスを公開する。
-
type:LoadBalancer
の Service を作成します。ロードバランサの作成には数分かかります。
-
デプロイを監視し、サービスに外部 IP アドレスが割り当てられるまで待ちます。
-
出力に外部 IP アドレスが表示されたら、次の手順に進みます。外部 IP は次の例とは異なるため、注意が必要です。
-
後で使用できるように、
EXTERNAL_IP
アドレス フィールドをメモしておきます。
WordPress ブログを設定する
このセクションでは、WordPress ブログを設定します。
-
ブラウザで次の URL にアクセスします。external-ip-address は、WordPress インスタンスを公開するサービスの
EXTERNAL_IP
アドレスに置き換えます。 -
WordPress のインストール ページで言語を選択して、[Continue] をクリックします。
-
[Information needed] ページで必要な情報を入力し、[Install WordPress] をクリックします。
-
[Log In] をクリックします。
-
以前に作成したユーザー名とパスワードを入力します。
-
ブログサイトが作成されます。ブログにアクセスするには、ブラウザで次の URL にアクセスします。
必要ない時はロードバランサは、削除します。
感想
チュートリアルを利用したらあっさり構築できて、内容もk8sのような一般的知識に近いもので、簡単だったが、変数間違い等で少し時間を使った。
変数間違い等トラブルがあった時もk8sの一般的なログインなどをしてログが見れるのは良かった。
構成等もシンプルで必要なものが入っている感じでチュートリアルを通すことでyamlファイル作成時の勉強になると思うので、3ヶ月の無料期間中はもっとGCPを使いこなしてみたい。
wordpressはプラグインがたくさんあるのは素晴らしいが、アメリカサーバにしたせいもあり、少し動作が重い気がした。
常にお金がかかる状態ではあるので、他にも、k8sやteraformベースのクラウドも試してみたいと思った。
3ヶ月の無料キャンペーン中で料金はかかっていないが、
自分でアクセスするだけでもこの程度料金がかかる模様。