實戰 Kubernetes

Laravel x Vue Conf Taiwan 2022

Sasaya @ 臺北市青少年發展處

- 03/12/22 -

QRCode

我是誰

我是誰

Sasaya @ Fontech

PHP + Laravel

Vue + Nuxt

DevOps

💤

🚫

Command-Line + Vim

Percussion

🥁

グルル

🐈‍⬛​

糯米糍

🐄

市場調查

🙋🏻

已經有在使用

Docker

🙋🏻

已經有在使用

Kubernetes

Docker

幫助了我什麼

不再擔心用髒環境

M$SQL 2019

PHP 7.1

PHP 8.1

Node.js 14

Node.js 16

Java 11

Ruby 2.7

MySQL 8

部署簡單且輕鬆

deploy

commands

Docker Image

code.tar.gz

+

不怕程式碼被亂改

Kubernetes

幫助了我什麼

伺服器設定文件化

降低管理成本

VM

VM

VM

VM

VM

VM

VM

VM

Kubernetes Cluster

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

平行擴展更容易

Kubernetes Cluster

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

幫助是很多沒錯

但...初期超痛苦

踩雷踩到懷疑人生

今天這場議程

就是來

幫助大家減輕痛若

打包 Docker Image

Dockerfile

其實就是

指令的集合

Docker Base Image

使用

php:8.1-apache

安裝

使用 Composer 需要的套件

寫在同一個 RUN 裡才能有效瘦身

安裝 Composer

設定專案目錄

APACHE_DOCUMENT_ROOT 記得加上 public

啟用 Rewrite 模組

https://example.com/index.php/api/test

忽略不需打包的檔案

/public/storage 一定要忽略掉

複製檔案到專案目錄

只複製需要的檔案就好(沒有 storage 資料夾)

補足缺少的資料夾

Laravel 不會補上 storage 內缺少的資料夾

調整資料夾權限

Laravel 會寫入的資料夾記得要調整權限

安裝相依套件

記得加上 --no-cache 來瘦身 Docker Image

覆蓋預設的 entrypoint

避免 Container 缺資料夾

通常 storage 資料夾是會另外掛截的

調整資料夾權限

Laravel 會寫入的資料夾記得要調整權限

減化指令的魔法

docker run -it --rm laravel php artisan migrate

docker build . -t laravel

部署上 Kubernetes

設定 Volume

accessMode 一定要 ReadWriteMany 才能平行擴展

設定資源需求

上限一定要設,才不會搞爆其它服務

設定 env

env 建議寫在另外的檔案

env 範例

env 的 value 一定要是字串

平滑部署

服務正常運行後才砍掉舊的 pod

定期健康檢查

若服務不幸陣亡,自動重啟 pod

還有很多設定

等著大家去嘗試

kubectl apply -f k8s.yaml

Kubernetes

管理工具

k9s

Lens

Kubernetes 管理工具

k9s

好物推薦

k0s

k0s

為什麼分享這個主題

發揮工程師的價值

太多時間浪費在

繁鎖又不得不做的

重複性工作

各種自動化流程

各式腳本及小工具

搭配現代化主機管理

改善專案流程

讓工程師可以

專注在解決問題

提升效率  增加產能

小故事分享

Selenium

Q & A

謝謝大家

Made with Slides.com