用 Traefik 搭配 Docker 快速架設服務

更新: 2019.01.10 新增教學影片

drone traefik docker deploy

相信大家在架設服務肯定會選一套像是 HAProxy, Nginx, ApacheCaddy,這四套架設的難度差不多,如果要搭配 Let’s Encrypt 前面兩套需要自己串接 (Nginx, Apache),而 Caddy 是用 Golang 開發裡面已經內建了 Let’s Encrypt,,管理者不用擔心憑證過期,相當方便。但是本篇我要介紹另外一套工具叫 Traefik,這一套也是用 Go 語言開發,而我推薦這套的原因是,此套可以跟 Docker 很深度的結合,只要服務跑在 Docker 上面,Traefik 都可以自動偵測到,並且套用設定。透過底下的範例讓 Traefik 串接後端兩個服務,分別是 domain1.comdomain2.com。來看看如何快速設定 Traefik。

traefik + docker + golang

Continue reading “用 Traefik 搭配 Docker 快速架設服務”

用 Docker 整合測試 Flutter 框架

Flutter 是一套以 Dart 語言為主體的手機 App 開發框架,讓開發者可以寫一種語言產生 iOS 及 Android,只要裝好 Flutter 框架,就可以在個人電腦上面同時測試 iOS 及 Android 流程,如果您需要 Docker 環境,可以直接參考此開源專案,裡面已經將 Flutter 1.0 SDK 包在容器,只要將專案目錄掛載到 Docker 內,就可以透過 flutter test 指令來完成測試,對於 CI/CD 流程使用 Docker 技術非常方便。 Continue reading “用 Docker 整合測試 Flutter 框架”

Drone CI/CD 推出 Cloud 服務支援開源專案

Screen Shot 2018-12-08 at 10.36.20 PM Drone 在上個月宣布推出 Cloud 服務 整合 GitHub 帳戶內的 Repo,只要登入後就可以跑 GitHub 上面的專案自動化整合及測試,原先在 GitHub 上面常見的就是 TravisCircleCI,現在 Drone 也正式加入角逐行列,但是從文中內可以看到其實是由 Packet 這間公司獨家贊助硬體及網路給 Drone,兩台實體機器,一台可以跑 X86 另外一台可以跑 ARM,也就是如果有在玩 ARM 開發版,現在可以直接在 Drone Cloud 上面直接跑測試。底下是硬體規格: Continue reading “Drone CI/CD 推出 Cloud 服務支援開源專案”

Drone 支援單機版安裝 (內附影片)

Screen Shot 2018-11-26 at 11.40.28 AM 在上週寫了『Drone 推出 1.0.0 RC1 版本』介紹,裡面提到一個很重要的改變,就是 Drone 現在支援『單機版』安裝了,你會問什麼是單機版安裝?以前不就是可以支援在單台機器把 Drone 給架設起來,那在 1.0.0 RC1 版本指的是什麼意思?在之前的版本,要完整的安裝完成 Drone,需要架設 drone server 及 drone agent,但是在 1.0 版本之後,只需要一個 drone 服務,裡面就內建了 server 及 agent,這很適合用在團隊非常小的狀況底下來快速安裝 drone,假設團隊專案很多,或者是成長很快,建議還是將 server 及 agent 分開架設,未來只需要擴充 agent 即可,底下來看看該如何架設單機版 drone。 Continue reading “Drone 支援單機版安裝 (內附影片)”

高雄 Mopcon 濁水溪以南最大研討會 – Drone CI/CD 介紹

Screen Shot 2018-11-06 at 1.16.22 PM 今年又以講者身份參加 Mopcon 南區最大研討會,此次回高雄最主要推廣 Drone 這套 CI/CD 平台。大家可以從過去的 Blog 或影片可以知道我在北部推廣了很多次 Drone 開源軟體,唯獨南台灣還沒講過,所以透過 Mopcon 研討會終於有機會可以來推廣了。本次把 Drone 的架構圖畫出來,如何架設在 Kubernetes 上以及該如何擴展 drone agent,有興趣的可以參考底下投影片: Continue reading “高雄 Mopcon 濁水溪以南最大研討會 – Drone CI/CD 介紹”

Drone 搭配 Kubernetes 部署 Go 語言項目

Screen Shot 2018-06-04 at 9.19.46 AM

在之前寫過一篇『Drone 搭配 Kubernetes 升級應用程式版本』,裡面內容最主要介紹 honestbee 撰寫的 drone 外掛: drone-kubernetes,但是此外掛並非用 Go 語言所撰寫,而是用 Shell Script 透過 kubectl set image 方式來更新專案項目,但是這邊會有幾個缺點,第一點就是假設在 Develop 環境永遠都是吃 master 分支,也就是讀取 Image 的 latest 標籤,這時候此外掛就無法作用,第二點此外掛無法讀取 kubernetes YAML 檔案,假設專案要修正一個 ENV 值,此外掛也無法及時更新。綜合這兩點因素,只好捨棄此外掛,而本篇會帶給大家另一個用 Go 語言所撰寫的外掛,是由 @Sh4d1 所開發的項目,用法相當容易,底下會一步一步教大家如何部署 Go 語言項目。

Continue reading “Drone 搭配 Kubernetes 部署 Go 語言項目”

[影片教學] 使用 Filter 將專案跑在特定 Drone Agent 服務

drone-logo_512 Drone 是一套用 Go 語言撰寫的 CI/CD 開源專案,是由一個 Server 跟多個 Agent 所組成,Agent 上面必須安裝好 Dokcer 才可以順利測試及部署,但是團隊內會出現一個狀況,每個專案的測試及部署方式不同,有的測試需要 Agent 很多 CPU 或記憶體資源,有的小專案則不需要那麼多,但是當大專案把 agent 系統資源吃光,其他專案都跑不動了,這邊的解決方式就是再建立一台新的 Agent 服務,將需要大量資源的專案跑在該台新的 Agent,Drone 這邊有支援 filter 功能,讓開發者可以指定專案要跑在哪一台 Agent 上。底下來教大家如何設定 drone filter。 Continue reading “[影片教學] 使用 Filter 將專案跑在特定 Drone Agent 服務”

Go 語言搭配 Docker Healthy Check 檢查

Screen Shot 2018-03-17 at 11.40.12 PMDocker 1.12 版本後,提供了 HEALTHCHECK 指令,通過指定的一行命令來判斷容器內的服務是否正常運作。在此之前大部分都是透過判斷程式是否 Crash 來決定容器是否存活,但是這地方有點風險的是,假設服務並非 crash,而是沒辦法退出容器,造成無法接受新的請求,這就確保容器存活。現在呢我們可以透過在 Dockerfile 內指定 HEALTHCHECK 指令來確保服務是否正常。而用 Go 語言開發的 Web 服務該如何來實現呢? Continue reading “Go 語言搭配 Docker Healthy Check 檢查”