透過 GitLab CI + K6 進行小規模 Load Testing

在先前的文章,已分享過使用 JMeter 和 drill 進行小規模 Load Testing,今天延續同樣的主題,這次要使用另一個新興熱門的 Load Testing 工具 K6,試一試「如何透過 GitLab CI + K6 進行小規模 Load Testing」。 操作步驟 首先,K6 在 2021 年已經被 Grafana Labs 買下來了,但目前(2022/02/03)看來,K6 官網依然還維持原貌,沒有太大的變化,只是多掛上了 Grafana Labs 的 Logo。K6 有提供 Open Source 與 K6 Cloud 兩種方案,而本文將採用的是 Open Source 方案。 準備 GitLab Runner 老樣子,第一步我們要先預備合適的 GitLab CI 環境,應該不用再多做解釋,請先準備好能夠操控 Container 的 GitLab Runner,如果你不知該如何準備 Runner,又想要快速試一下本文的內容,那最簡單的做法是註冊一個 gitlab.com 帳號,然後建立新 Project 並使用官方提供的 Shared Runners。 準備 Docker image - K6 第二步,預備一個能夠運行 K6 的 Docker image。 這次很幸運,已經有現成的 Image 可以使用 loadimpact/k6...

February 3, 2022 · Cheng Wei Chen

跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三)

本文為系列文章《跟著 GitLab Auto DevOps 學習 CI/CD Pipeline》的第三篇,藉由逐一檢視並解析 GitLab Auto DevOps 背後的 Templates,讓我們一起跟著 GitLab Auto DevOps 學習 GitLab CI/CD Pipeline。 在上一篇文章,我們學習了善用 include: 並透過合適的層級規劃,讓我們可以建立出屬於自己的 CI/CD Pipeline Templates。接著在本篇文章,我們要來認識在規劃 GitLab CI Pipeline 時,一個重要的進階功能 workflow:。 此系列文清單: 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(四) workflow 在本系列文的第一篇我們介紹 Auto-DevOps.gitlab-ci.yml 時,有稍微提到 workflow:,但當時只有快速帶過,說明關於它的一個基本認識,在文章中我是這樣解釋的: workflow: 類似程式語言中的 if / else,在 GitLab CI 我們可以利用 workflow: 設置不同的條件,藉此控制 GitLab CI 判斷哪些情境之下,才需要產生 CI/CD Pipeline。...

February 1, 2022 · Cheng Wei Chen

《Accelerate》繁中版推薦

《Accelerate》中文版即將上市 有在關注 DevOps 議題的朋友,應該都有看過《鳳凰專案》這本經典的 DevOps 好書。如果你有看過《鳳凰專案》那麼你一定也知道原文書籍的出版單位 IT Revolution 這多年來早已出版除了《鳳凰專案》之外,數本與 DevOps 相關的優質書籍。 今天要推薦的好書,即是 2018 年早已出版的《Accelerate》。但這次要推薦的不是英文版,而是經過多年終於能順利出版上市的《Accelerate》繁體(正體)中文版——《ACCELERATE:精益軟體與 DevOps 背後的科學》。 如果你每年都有在關注 DORA 發表的 State of DevOps Report,那麼這本《Accelerate》鐵定是你絕對不能錯過的好書。本書的作者群依然是 IT Revolution 與 DORA 背後的那群專業顧問與研究者,但有別於 State of DevOps Report,本書更深入的為我們探索並解答——何謂 BizDevOps?價值交付?以及在這波延續多年的 DevOps 轉型熱潮中,有哪些具體可供企業參考學習的建議。 《Accelerate》繁體(正體)中文版由 DevOps Taiwan Communitry 的志工江少傑主動向出版社推薦此書,並毛遂自薦擔任譯者,本書將於 2022/01/28 由旗標科技出版上市。感謝出版社與少傑的邀請,有幸能為此書撰寫簡短的推薦序,下面就一字不刪的直接附上整篇推薦序,希望這本好書都能成為各企業 DevOps 旅途上的一份助力。 推薦序全文 DevOps——自 2009 年誕生的這個玄妙 Buzzword,已擁有超過 10 年歷史;而在華文的 IT 圈中,我們莫約是從 2013~2014 年逐漸開始看見有人在網路上公開的提到 DevOps,至今雖不到 10 年,但也已有 6 至 7 年的時間。從前述的描述看來,不論是外文或華文 IT 圈,DevOps 都已是一個擁有多年歷史的老東西,面對這樣的老東西,不知你是否與我擁有著相同的疑問——「既然 DevOps 已被提倡這麼多年了,那究竟各企業實行 DevOps 的狀況又是如何呢?」 幸運的是我們不需要自己回答這個問題,因為自 2013 年開始,每一年在網路上公開發表的 State of DevOps Report 已為我們提供了解答。從每一年的 Report 中我們可以發現,雖然各企業實行 DevOps 的方向與進展有著明顯的差異,但隨著逐步實踐 DevOps,企業不約而同的有著相同的看法——DevOps 不只是軟體開發(Dev)與維運(Ops)的技術升級,若用另一個 Buzzword 來描述它,DevOps 即是一場關乎企業全體的「數位轉型」,軟體與科技能否幫助企業持續交付價值予客戶及利害關係人,即是其中的重要關鍵。...

January 15, 2022 · Cheng Wei Chen

跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二)

本文為系列文章《跟著 GitLab Auto DevOps 學習 CI/CD Pipeline》的第二篇,藉由逐一檢視並解析 GitLab Auto DevOps 背後的 Templates,讓我們一起跟著 GitLab Auto DevOps 學習 GitLab CI/CD Pipeline。 在上一篇文章,我們了解 Auto DevOps 可說是 GitLab CI 的火力展示,它以 Auto-DevOps.gitlab-ci.yml 為起點,利用 include: 引用了多個 Template,構成了可以自動產生 Pipeline 的 Auto DevOps 功能。本文我們將延續上一篇文章,從 Auto-DevOps.gitlab-ci.yml 繼續認識官方是怎麼規劃與管理 pipeline 與 templates。 此系列文清單: 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(四) 結構 善用 include: 在上一篇文章,雖然我們只是快速的解釋 Auto-DevOps....

January 9, 2022 · Cheng Wei Chen

Ansible Variable 的 True 與 False (boolean)

2022 的第一篇部落格,就從整理一則舊筆記開始吧!這次整理的舊筆記是關於在 Ansible 的 Varaible 中使用 boolean 的一些個人經驗。(本文使用的 Ansible 版本為 2.10。) 內文 在撰寫 Ansible Playbook 的時候,我們為了讓它能夠運用在多種情境,我們經常會使用到 when: 來控制各個 task 是否需要執行,例如: # 當目標 Host 的 Linux 為 Ubuntu 時,才執行此 Task - name: "Create nginx sites-enabled link | (Ubuntu)" file: src: "/etc/nginx/sites-available/{{ APP_NAME }}" dest: "/etc/nginx/sites-enabled/{{ APP_NAME }}" state: link when: ansible_distribution == "Ubuntu" 而在剛開始學習 Ansible,對於 Ansible、Python 及 Jinja2 還不夠熟悉時,我們可能會寫出下面這種 when:。 # 希望做到當 Variable is_laravel 為 true 時,就執行 task - name: Create ....

January 1, 2022 · Cheng Wei Chen

跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一)

自從 GitLab 推出 Auto DevOps 功能之後,我在許多演講與社群的場合都曾分享過,其實 Auto DevOps 並不是真的那麼「Auto」,它的背後是仰賴 GitLab 官方事先預備好的眾多 GitLab CI Templates,這些 Templates 能夠根據 Project 內容,自動產生多種情境的 CI/CD Pipeline。因此如果你想要自學 GitLab CI 的各種進階用法與技巧,或想要參考別人如何規劃 CI/CD Pipeline,那麼這些建構出 Auto DevOps 的諸多 CI Templates 即是我們絕佳的學習與參考對象。 既然 GitLab 官方準備了這麼好的學習材料,當然要好好運用它,因此從本文開始,接下來我將以系列文的方式,逐一檢視並解析 GitLab Auto DevOps 背後的 Templates,讓我們一起跟著 GitLab Auto DevOps 學習 GitLab CI/CD Pipeline。 此系列文清單: 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(一) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(二) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(三) 跟著 GitLab Auto DevOps 學習 CI/CD Pipeline(四) Auto DevOps CI Templates 首先讓我們快速查看 GitLab 官方準備的 Auto DevOps CI Templates,如下網址,我們可以在官方公開的 GitLab Project 中找到它們。...

December 27, 2021 · Cheng Wei Chen

運用 Fail2ban 自動封鎖攻擊者的 IP

說到最近 IT 圈最熱門的資安問題,想必大家一定都知道,即是源自 Apache Log4j 2 被開採的漏洞 Log4Shell,事件爆發至今依然燒個不停,多少 IT 人為了盤點影響範圍與修補漏洞,不知道少睡了多少時間、死了多少腦細胞,此時此刻要先向所有 IT 人說一聲「辛苦了!」。 連上網路即是被攻擊的第一步 回到本文主題,如果你有經手 Server 管理與維護的工作,想必你一定有過這樣的經驗,即是只要 Server 一接上網路,接著在 Log 中就會開始看見各式各樣嘗試攻擊你的紀錄,以最常見的 Web Server 為例,我們經常會在 access.log 看見類似下面這幾種 Log: # 下面以 Nginx 的 access.log 為例 ## 針對 Wordpress 的攻擊,看你是不是會不小心把 wp-admin.php 暴露在外 14.18.100.250 - - [18/Dec/2021:03:41:40 +0800] "GET /wp-admin.php HTTP/1.1" 301 178 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36" ## 嘗試找到 MySQL 的介面或資訊 14.18.100.250 - - [18/Dec/2021:04:25:32 +0800] "GET /admin/mysql/ HTTP/1....

December 19, 2021 · Cheng Wei Chen