之前寫過一篇『減少 node_modules 大小來加速部署 Node.js 專案』文章,透過 Yarn 指令可以移除不必要的模組,剩下的模組佔據整個專案大部分容量,那該如何針對留下的模組來瘦身呢?這週看到 Node.js 大神 TJ 又發了一個 Go 語言專案叫做 node-prune,此專案用來移除在 node_modules
內不必要的檔案,那哪些才是不必要的檔案呢?
Drone Secret 安全性管理
從 Nginx 換到 Caddy
終於下定決心將 Nginx 換到 Caddy 這套用 Go 語言所撰寫的開源套件,大家一定會有所疑問『為什麼要換掉 Nginx 而改用 Caddy』,原因其實很簡單,你現在看的 Blog 安裝在 Linode 機器上面,之前跑的是 Nginx 搭配 letsencrypt,但是必須要寫一個 Scripts 來自動更新 letsencrypt 憑證,這機制最後不太運作,加上這一年來,每三個月就會有人丟我說『你的 Blog 憑證過期了』,所以就在這時間點,花點時間把 Nginx 設定調整到 Caddy,轉換的時間不會花超過一小時喔。
[Read More]Go 語言實現 gRPC Health 驗證
本篇教大家如何每隔一段時間驗證 gRPC 服務是否存活,如果想了解什麼是 gRPC 可以參考 這篇『REST 的另一個選擇:gRPC』,這邊就不多介紹 gRPC 了,未來將會是容器的時代, 那該如何檢查容器 Container 是否存活。如果是用 Kubernetes 呢?該如何來撰寫 gRPC 接口搭配 livenessProbe
設定。底下是在 Dockerfile 內可以設定 HEALTHCHECK
來 達到檢查容器是否存活。詳細說明可以參考此連結。
Gorush 輕量級手機訊息發送服務
今年第一次參加濁水溪以南最大研討會 Mopcon,給了一場議程叫『用 Go 語言打造輕量級 Push Notification 服務』,身為南部人一定要參加 Mopcon,剛好透過此議程順便發佈新版 Gorush,其實今年投稿 Mopcon 最主要是回家鄉宣傳 Google 所推出的 Go 語言,藉由實際案例來跟大家分享如何入門 Go 語言,以及用 Go 語言最大好的好處有哪些。底下是此議程大綱:
- 為什麼建立 Gorush 專案
- 如何用 Go 語言實作
- 用 Drone 自動化測試及部署
- 在 Kubernetes 上跑 Gorush
在 Go 語言使用 Viper 管理設定檔
Drone 搭配 Kubernetes 升級應用程式版本
本篇要教大家如何透過 Drone 搭配 Kubernetes 自動化升級 App container 版本。為什麼我只說升級 App 版本,而不是升級或調整 K8S Deployment 架構呢 (kubectl apply
)?原因是本篇會圍繞在 honestbee 撰寫的 drone 外掛: drone-kubernetes,此外掛是透過 Shell Script 方式搭配 kubectl 指令來完成升級 App 版本,可以看到程式原始碼並無用到 kubectl apply
方式來升級,也並非用 Go 語言搭配 k8s API 所撰寫,所以無法使用 YAML 方式來進行 Deployment 的升級。本篇講解的範例都可以在 drone-nodejs-example 內找到。底下指令就是外掛用來搭配 Drone 參數所使用。
用 Kubernetes 將 Drone CI/CD 架設在 AWS
Drone 是我今年主推的 CI/CD 自架服務,詳細可以參考這篇文章,目前在公司內部團隊使用了一年以上,服務相當穩定。Drone 本身可以透過 docker-compose 方式快速在機器上架設完成,但是由於 Kubernetes 的盛行,大家也希望能透過 Kubernetes 來安裝 Drone 服務。本篇會教大家如何在 AWS 上透過 Kubernetes 安裝完成。Drone 預設使用 SQLite 當作資料庫,檔案會直接存放在 /var/lib/drone
路徑底下,但是容器內不支援寫入,所以必須要要額外掛上空間讓 Drone 可以寫入資料。此篇會以 GitHub 認證 + SQLite 來教學。
部署 Go 語言 App 到 Now.sh
本篇要教大家如何部署 Go 語言的 App 到 now.sh 服務。now 服務是讓開發者可以透過 JavaScript 或用 Docker 方式直接部署到 now 雲端機器,也就是 now 所提供的服務可以在自己電腦透過 package.json
或 Dockerfile
來部署 app。原先剛出來時候,只有支援 node.js 部署,後來才增加 Docker。透過 Docker 就可以來部署各種不同語言的專案。
為什麼我用 Drone 取代 Jenkins 及 GitLab CI
終於有機會正式跟大家介紹為什麼我會捨棄 Jenkins 跟 GitLab CI,取而代之的是用 Go 語言寫的 Drone。今年很高興錄取台灣第一屆 DevOps Day 講師,在今年主題是『用 Drone 打造輕量級容器持續交付平台』,主要推廣這套 Drone CI/CD 工具,會議內容圍繞在 Jenkins, GitLab CI 跟 Drone 的比較。也提到為什麼我不用 Jenkins 及 GitLab CI 的幾個原因。底下整理議程大綱。
- 為什麼選擇 Drone
- Drone 基礎簡介
- Drone 架構擴展
- Drone 安裝方式
- Drone 管理介面
- Drone 測試部署
- Drone 自訂套件