0
0

Kubernetes上でLaravelを立ち上げてみる。

Posted at

はじめに

naritomoと申します。

本職はインフラエンジニアを行っています。

最近色々活用し始めているK8Sについて、Laravelを立ち上げてみました。

いろいろアドバイスいただけると嬉しいです。

立ち上げ概要

Laravel9以上のサイトをK8Sで立ち上げる手順になります。

必要なソースは以下にまとめてあります。

参考URL

M1 MacBook上へのローカルk8s環境(minikube、kind)セットアップ手順
gcloudコマンドでGKEを立ち上げてみた。

事前準備

参考URLを参照し、M1 Macにて、ローカル環境またはGKE環境ができていること。

*kindについては後に示す手順で立ち上げること。

環境構築手順

本リポジトリをクローンする。

$ git clone https://github.com/naritomo08/laravel_K8S.git laravelk8s
laravel9の場合
$ git clone https://github.com/naritomo08/laravelapp3.git backend
laravel10の場合
$ git clone https://github.com/naritomo08/laravelapp4.git backend
つぶやきサイトの場合
$ git clone https://github.com/naritomo08/laravel9tubu.git backend

後にファイル編集などをして、git通知が煩わしいときは
作成したフォルダで以下のコマンドを入れる。

 rm -rf .git

(ローカルでkindを使用する場合)kindの立ち上げ

cd laravelk8s
kind create cluster --config kind.yaml --name kindcluster

停止する場合

cd laravelk8s
kind delete cluster --name kindcluster

phpレジストリ作成のシェルスクリプトを実行する。

$ chmod u+x build_env.sh && ./build_env.sh

docker hubへイメージプッシュする。

docker hubアカウントを作成する。

以下のコマンドを入力する。

docker login
docker tag laravel:0.1 <docker hubユーザー名>/laravel:0.1
docker push <docker hubユーザー名>/laravel:0.1

*パブリックレジストリに入るため扱いに注意すること。

K8S稼働シェルスクリプトを実行する。

$ vi laravel-php.yml
以下の部分を書き換える
image: <docker hubユーザー名>/laravel:0.1
$ vi k8s_run.sh
→動かすK8S環境に応じ稼働させるサービスファイルを指定すること。
$ chmod u+x k8s_run.sh && ./k8s_run.sh
kubectl get all
→ エラーが発生していないこと。

コンテナコマンド実施

kubectl get po -o wide
laravel-cache/laravel-dbのIPを控える。
kubectl get all
→laravel-phpのポッド名を確認する。(複数作った場合は全てに対して実施する。)
kubectl exec -it <ポッド名> sh

vi .env

以下の場所を前の手順で控えたIPに書き換える

DB_HOST=<laravel-dbのIPアドレス>
REDIS_HOST=<laravel-cacheのIPアドレス>

.env反映

php artisan cache:clear
php artisan config:cache

DBへのマイグレート

php artisan migrate
php artisan config:cache

exit

各種サイト確認する。

*つぶやきサイトでは画像アップが実施できません。

サイトURL

laravelサイト(kind)

http://127.0.0.1:10081

laravelサイト(minikube)

kubectl get laravel-np
→PORT(S)の右側のポート番号を確認する。
http://127.0.0.1:<ポート番号>

laravelサイト(GKE)

kubectl get laravel-lb
→External-IPの値を確認する。(数分待つ。)
http:/<External-IP>
*SSL化していないので、利用に注意!

K8S稼働サイトを削除する方法

以下のコマンドを実行する。

$ kubectl delete -f ./manifest

おわりに

この記事がK8S/GKE/Laravelを扱う方の助けになればと思います。
見直さなければならない部分も多数あるため修正していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0