DevOps 新手入門 — 把 Go 後端一路自動化到雲端

DevOps 新手入門 — 把 Go 後端一路自動化到雲端

這是一份為 DevOps 完全新手寫的教學。我們不從零教,而是直接承接前一份教學的成果:一個已經用 docker-compose 容器化好的 no-logic-trade Go + PostgreSQL 後端(在 ../code/)。我們會把它當作地基,一步步長出一條完整的自動化交付線:改 code → 自動測試 → 自動 build image → 推到 registry → 部署上雲 → 監控

讀者設定:DevOps 全新手、平常寫前端、碰過一點 Node.js、剛學會寫 Go 後端。 每個工具第一次出現時,都會先用 2–3 句白話講「它是什麼、解決什麼問題、為什麼需要它」。


這份教學會用到的工具(先有個印象就好)

工具 一句話它是什麼 解決什麼問題
GitHub Actions GitHub 內建的自動化機器人(CI/CD 平台) 每次 push 自動幫你跑測試、build、部署,不用手動
GHCR GitHub 的容器 image 倉庫(Container Registry) 存放 build 好的 Docker image,供部署時拉取
Terraform 用程式碼描述雲端資源的工具(IaC) 不用在網頁 console 點來點去,雲端設定可重現、可版控
Kubernetes 容器編排系統(先本機 kind,再上雲 GKE) 自動管理一堆容器:自我修復、擴縮、滾動更新
Prometheus + Grafana 指標收集 + 視覺化儀表板 看見服務的健康狀況、流量、延遲,出事能即時發現
GCP (Google Cloud) 我們選用的雲平台(free tier 優先) 真正把服務跑在網際網路上

看不懂這些名詞很正常——每個都會在對應章節第一次出現時詳細解釋。現在只要知道「有這些角色」即可。


章節地圖

檔案 主題 第一次登場的工具
1 01-intro.md 導論:DevOps 在解決什麼問題 + 全貌(架構圖 + 目錄)
2 02-optimize-image.md 從既有容器化 app 出發,優化 Docker image Docker(精煉)
3 03-ci-github-actions.md CI 第一步:push 自動跑測試與 build GitHub Actions、YAML
4 04-cd-ghcr.md CD:自動 build image 並推送到 GHCR GHCR
5 05-terraform-iac.md IaC 入門:用 Terraform 佈建雲端基礎 Terraform、gcloud
6 06-deploy-cloudrun.md 部署上雲:Cloud Run(free tier) Cloud Run、Cloud SQL
7 07-kubernetes-local.md Kubernetes 入門:本機 kind 跑起來 Kubernetes、kubectl、kind
8 08-gke.md 把 K8s 接到雲端:GKE(managed K8s) GKE
9 09-monitoring.md 監控與日誌:Prometheus + Grafana Prometheus、Grafana、Helm
10 10-full-pipeline.md 收尾:完整 pipeline 全貌 + 安全拆除 GitOps 概念

這份教學的幾個原則

  1. 承接、不重教:假設你已經有 ../code/ 那個容器化好的 Go 後端。不會再教 Docker 基礎。
  2. 工具先講「為什麼」:每個工具登場先解釋它解決什麼痛,再動手。
  3. 每章可驗證:章末都有「如何驗證這一步成功」(具體指令 + 預期輸出)與「常見錯誤 / 踩雷點」。
  4. 💸 省錢至上:所有會花錢的雲端資源都明確標注,並在章末給「用完即刪」步驟;第 10 章有完整拆除清單。

技術選擇(本教學採用)

  • 雲平台:Google Cloud(GCP)— 對新手友善、free tier 大方、gcloud 直覺。
  • 本機 Kubernetes:kind — 直接用現有 Docker 跑叢集,輕量快速。
  • 雲端資料庫:Cloud SQL,用完即刪(每章末附 terraform destroy)。

你需要先準備

  • 前一份教學的成果:../code/(容器化好的 Go 後端)。第 1 章會帶你確認它能跑。
  • 一個 GitHub 帳號
  • 一個 Google Cloud 帳號(新帳號有 $300、90 天試用額度)。第 1 章會帶你開通帳單並設定預算警示(很重要,避免帳單暴衝)。
  • 其餘 CLI 工具(gcloud、terraform、kubectl、kind、helm)會在各自章節第一次用到時才安裝。

準備好就從 第 1 章 開始。