前言
話說 Google 推行 App Engine 已經有好一陣子了, 就算後來 GCP 的光芒幾乎都聚焦在其他產品上如 Kubernetes Engine, 但直至今日還是有很多死忠的開發者喜歡使用 App Engine 這項服務, 對於不想花時間搞底層環境的人來說, 將服務部屬在這兒絕對是最佳的選擇以下簡單的介紹如何在 Google App Engine(GAE) 上部屬Go程式
首先, 設定環境
需要在開發的環境裡安裝glcoud
的 SDK 並且初始化某些設定gcloud init
或是,
直接打開 CloudShell 直接在上面敲
gcloud
的指令也可以 (但最後部屬時需要把程式碼 clone 到 CloudShell 的機器裡)Step 1. 建立App.yaml
在工作目錄中建立 App.yaml 來描述部署的環境, 如下所示在 App.yaml 裡面可以定義 Runtime, Service Name, 以及程式中會用到的 Environment Variable 等等
ex:
runtime: go env: flex service: my-server env_variables: RUNMODE: stage automatic_scaling: min_num_instances: 1 max_num_instances: 1 cool_down_period_sec: 120 # default value cpu_utilization: target_utilization: 0.7 resources: cpu: 1 memory_gb: 5 disk_size_gb: 10 volumes: - name: ramdisk1 volume_type: tmpfs size_gb: 0.5
App.yaml 裡有一個欄位 env 可以用來指定即將部屬的環境
env: flex
這邊要注意的是 GAE 提供兩種不同的部屬環境 Standard 以及 Flexible 可以選擇
Standard V.S Flexible Environment最大的差別是 Standard Environment 是 Serverless 的架構, 在部屬時不需要特別去配置 VM 來跑服務, 在底層 Google 會動態的去調用計算資源, 當服務沒有被使用時則自動釋放這些資源, 好處是當資源被釋放之後 Google 不會跟你算錢, 如果不需要特定的 Runtime 或是也不想關心底層 Infra 的配置, 基本上 Standard Environment 是最佳的選擇。 相對的, Flexible Environment 的底層是跑 GCE 的 VM, 在部屬的時候必須聲明 VM 的規格, 而就算服務沒有被使用 Google 還是會跟你算維運 VM 的相關費用, 但好處是在專用的 VM 上跑服務不會有 Cold Start 的問題, 除此之外還能擁有更多的彈性去客製化部屬環境
Step 2. 部屬
gcloud app deploy app.yaml
留言
張貼留言