Deploy Laravel project with Kubernetes

Kubernetes hay K8s là một hệ thống để quản lý các “container“.

Nói một cách dễ hiểu, nếu bạn biết dùng Docker hoặc rkt [0] để chạy các container, thì K8s là giải pháp để quản lý chúng (quản lý bao gồm: tạo, sửa, xoá, xếp lịch(schedule), hay mở rộng (scale)…) trên nhiều máy. Như vậy, để có thể sử dụng được K8s, bạn phải biết dùng Docker.

Tham khảo thêm tạo Blog: https://www.familug.org/2017/03/kubernetes.html

Vì đây là một chủ đề quá rộng và chưa có kinh nghiệm áp dụng, tác giả xin dừng lại ở mức giới thiệu, cưỡi tên lửa xem hoa.

Github projects: https://github.com/minhnv2306/laravel_6_learn_deploy

Bước 0: Test docker ở local

1
2
docker build -t my-laravel-image .
docker run -p 8000:8000 my-laravel-image

Sau đó kiểm tra qua đường dẫn http://localhost:8000/login xem ứng dụng lên chưa nhé :D

Nếu docker đã chạy ngon ở local, bước tiếp theo là để nó được deploy lên Kubernetes thôi.

Bước 1: Push Docker lên Container Registry

Guideline: https://cloud.google.com/container-registry/docs/pushing-and-pulling

Ví dụ

1
2
3
4
5
6
$ docker images

my-laravel-image 3.0 bd8aa88c505e 2 days ago 1.46GB

$ docker tag bd8aa88c505e gcr.io/coastal-set-245303/my-laravel-image:3.0
$ docker push gcr.io/coastal-set-245303/my-laravel-image:3.0

Bước 2: Deploy với Kubernetes

Guideline: https://cloud.google.com/kubernetes-engine/docs/quickstart

1
kubectl create deployment hello-laravel --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

Ví dụ
1
kubectl create deployment hello-laravel --image=gcr.io/coastal-set-245303/my-laravel-image:3.0

Exposing the Deployment
1
2
kubectl expose deployment hello-laravel --type LoadBalancer \
--port 80 --target-port 8000

Inspecting and viewing the application

  1. Inspect the running Pods by using kubectl get pods:
    1
    kubectl get pods
  2. Xem thông tin service deploy
    1
    kubectl get service hello-laravel

Góc nhìn ít ỏi của tác giả về Kubernetes

  • Kubernetes ưu điểm trong việc tối ưu hệ thống, cân bằng tải, nên được sử dụng trong các hệ thống lớn, tải cao. Khi đó việc phân tải đa phần mình sẽ nhờ Google làm giúp.
  • Chính vì vậy khi deploy với Kubernetes, nó sẽ tạo cho bạn 3 instance VM (xem trong instance group sẽ thấy rõ) để cùng chạy web của bạn
  • Thực tế tác giả chưa làm về web tải lớn, khi nào có kinh nghiệm sẽ đọc tiếp, giờ xem qua thôi :D
Author

Ming

Posted on

2020-02-06

Updated on

2021-04-10

Licensed under

Comments