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 | docker build -t 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/quickstart1
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 Deployment1
2kubectl expose deployment hello-laravel --type LoadBalancer \
--port 80 --target-port 8000
Inspecting and viewing the application
- Inspect the running Pods by using kubectl get pods:
1
kubectl get pods
- 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
Deploy Laravel project with Kubernetes
http://yoursite.com/2020/02/06/Deploy-Laravel-project-with-Kubernetes/