Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP 也有 Day #40: Laravel on Kubernetes 101

PHP 也有 Day #40: Laravel on Kubernetes 101

【 簡報單元 】
1. Kubernetes 基礎知識與抽象資源介紹
2. GCP 上的 Kubernetes 操作
3. 撰寫 Dockerfile,把 Laravel Project 變成 Docker Image
4. 在 Kubernetes 上運作 Laravel Project

---

【 簡報檔案由 1 位分享者 CC 授權 】

1. Jerry Cheng
曾任 friDay 購物資深工程師,深信持續且穩定的自動化流程才是軟體交付的信仰,現任某交友平台的 DevOps 推手

---

【 PHP 也有 Day 社團連結 】
https://www.facebook.com/groups/849639948396465/

【 Star Rocket 粉絲專頁】
https://www.facebook.com/starrocket.io/

Star Rocket

December 11, 2018
Tweet

More Decks by Star Rocket

Other Decks in Programming

Transcript

  1. Agenda • 簡單認識 Kubernetes / Docker • 介紹 Kubernetes 各項元件

    • 實際部署⼀一個 Laravel Project 到 GKE 上
  2. What is Kubernetes • 容器的全⾃自動管理理/調度平台,誕⽣生⾃自 Google Borg • 不限制 application

    類型,只要能容器化的都吃 • 各種抽象化的資源類型 • web/database • task runner • auto scaler • Ingress..
  3. Docker Registry • 維護⽅方式跟 Github 有 87% 像,但是放 Docker image

    • Dockerhub -> 由 Docker 官⽅方維護,是⽬目前最⼤大的 public registry • Private registry: • VMware Harbor • Gitlab Registry • Cloud: AWS/GCP/Azure…
  4. Kubernetes Nodes • Node • Node • 負責 Resource 的執⾏行行

    • 監控 Resource 的健康狀狀態 • Master Node • 管理理與監控 Node • 負責調度所有的 Resource • 儲存整個 Cluster 的運作狀狀態 • 架設⽅方式 • ⾃自架:minikube / kubeadm / Rancher 2.x (⼈人⽣生短短幾個秋...) • 直接⽤用 Cloud: AWS/ GCP/ Azure/ DigitalOcean…
  5. • ⼀一組資源的集合 • 隔離不同 namespace 之間的資源(persistent volume 除外) • 預設有

    kube-system/ kube-public/ default https://www.mundodocker.com.br/wp-content/uploads/2017/06/namespaces.png
  6. Pod • Kubernetes 中的最⼩小執⾏行行單位 • ⼀一個完整的 application 部署封裝,可能有⼀一個以上的 container •

    共享儲存空間/網路路 https://i0.wp.com/foxutech.com/wp-content/uploads/2018/02/Kubernetes-Pod.jpg
  7. Service • ⽤用來來存取 Pod 的資源 • 可透過 Kubernetes 內部的 DNS

    來來對應 • 各種 Service Type: • ClusterIP • NodePort • LoadBalancer
  8. Ingress • 類似 Virtual Host 的概念念 • 可以⽤用 URL 來來

    proxy 到不同的 service https://cdn-images-1.medium.com/max/2000/1*KIVa4hUVZxg-8Ncabo8pdg.png
  9. Laravel requirements • Nginx/PHP-FPM • Database (MySQL) • Cache/Session store

    (Redis) • Storage (S3/GCS) • Log (ELK) • Exception handler (Sentry)