課程簡介
△打造從程式碼到上線部署的全自動化交付流程
在現代軟體開發中,企業必須同時兼顧交付速度、品質與系統穩定度,而 DevOps 正是為了解決開發與維運分離所帶來的協作瓶頸,透過導入 CI/CD,自動化建置、測試與部署流程,使每次程式提交後都能快速、穩定地完成版本交付,大幅縮短開發周期並降低錯誤率,隨著微服務與容器化成為主流,CI/CD 已成現代工程師不可或缺的核心能力。
課程目標
- 安裝docker 與部署Kubernetes 與Gitlab。
- 打包container image,運行在local端docker環境。
- 學習如何撰寫Kubernetes YAML,把服務部署至Kubernetes。
- 撰寫GitLab CI/CD YAML
- GitLab CI/CD流程
讓參與學員能夠學習到在使用docker, Kubernetes部署應用服務時,能夠像使用虛擬機一樣熟悉,並且經由使用CI/CD軟體讓開發流程自動化。
注意事項
- 本課程設計在Web 前端與後端服務自動化上,行動裝置CI/CD不包含在內。
- 本課程皆以Linux OS 與Linux OS container來做設計,不包含Windows OS與Window container。
預備知識
- 使用過Linux OS,操作過Linux指令,會簡單使用Linux 任一個文字編輯器(e.g. vim, vi, nano)
- 具 web 應用開發經驗佳(非必需)
課程內容
Module 1 |DevOps 與 CI/CD 核心觀念
- DevOps 精神、流程與常見工具鏈
- CI/CD 概念、Pipeline 運作原理
- 為什麼企業需要 CI/CD?
Module 2 |Git 與 GitLab 專案流程管理
- Git 基礎操作與 Branch 管理
- 安裝與部署 GitLab
- GitFlow 協作模式(Feature / Release / Hotfix)
Module 3|Docker:映像檔與容器化實務
▲ Docker Image 操作
- Docker Hub 介紹與 Image 管理
- 建立與管理 Docker Image
▲ Docker Container 操作
- Container 執行、Log、Debug
- 生命週期管理(Run / Stop / Remove)
▲ Dockerfile 與常用指令
- Dockerfile 設計原則
- Build、Tag、Push、常用 Docker Command
- 撰寫可部署於 CI/CD 的容器化應用
Module 4|Kubernetes 基礎架構與操作實務
▲ Kubernetes 介紹
- 架構概念:Pod、Node、Deployment、Service
- Kubernetes 部署流程與 YAML 基礎
▲ Kubernetes 操作
- kubectl 常用指令
- 部署應用至 Kubernetes(Deployments / Pods)
- Scaling、Rolling Update、Rollback
▲ Kubernetes 網路與儲存
- Services(ClusterIP、NodePort)
- Kubernetes Storage:HostPath / NFS 實作
Module 5|GitLab CI/CD Pipeline 建置
▲ GitLab CI 設定
- GitLab Pipeline 基本結構
- GitLab Docker and Kubernetes Runner 設定與管理 加了docker 與 Kubernetes
▲ GitLab CI YAML 撰寫
- stages / jobs / script / artifacts
- 分組建置策略:Build / Test / Deploy
Module 6|CI:自動化建置、測試與程式碼品質管理
▲ 程式碼品質管理
- SonarQube 介紹
- 自動化 Source Code 分析流程
▲ 自動化建置 Docker 映像檔
- 在 Pipeline 中 Build Docker Image
- 自動 Push Image 至 Docker Hub
▲ 自動化測試流程
- Unit Test 整合
- 測試失敗時的 Pipeline 行為與錯誤處理
Module 7|CD:自動化部署至 Kubernetes
▲ GitLab CD 整合流程
- Kubernetes 從Docker Hub 獲取 image
- 使用 GitLab CI/CD 自動部署到Kubernetes環境
- 部署策略:更新 Rolling Update / 回滾 Rollback / 健康檢查 Liveness / Readiness Probe