ref: https://faun.pub/the-best-infrastructure-as-code-tools-for-2021-b37c323e89f0
這篇文章是一個 IaC (Infrastructure as Code) 的推廣文,文章分成幾個部分,從 IaC 的基本概念與應用談起,接者分析了幾個常見的 IaC 工具,最後探討了實際的使用案例
文章偏長,對於 IaC 概念很熟悉的讀者應該可以很快速地看完,以下針對部分進行一些摘要
The need for Infrastructure as Code
作者先描述過去幫機房部署新伺服器時的各種流程,機器少量時能夠透過人力慢慢處理,但是這類型的操作繁瑣,重複且惱人
為了讓這些流程處理得更佳順遂與一致,會有各式各樣的 scripts 等相關工具被開發出來,而這些流程慢慢的會往自動化的方式去發展。
IaC 文化的興起會使得有愈來愈多獲得共識的工具被開發出來,這使得 IaC 的使用門檻會有機會降低,愈來愈多的使用者能夠更簡易的透過 IaC 的方式來管理與維護自身的架構
Benefits and reasons to implement IaC
IaC 帶來的好處是非常顯著的,譬如
1. 將 Config 檔案當作整個環境的 sing source of truth
2. 每次的部署都是基於上述的 Config 來部署,能夠確保每次部署都獲得一樣的結果,避免人為的反覆長期操作帶來的錯誤
3. 透過程式化的方式去建置環境能夠更快速的去應變各種環境需求,對於 testing, developing, production 等各種變化都可以透過 config 的差異來快速搭建
4. Config 也可以透過 Git 的方式去管理來獲得更好的可稽核性與管理性。
Principles and best practices of Infrastructure as code
作者這邊列出了幾個實作上的推薦方式
1. 透過版本控制的方式來管理 IaC 的設定檔案,能夠讓維運人員使用開發者常見的開發合作流程來管理 IaC
2. 將 IaC 的工具整合到 pipeline 的 CI/CD 流程,讓 CI 流程去檢查 IaC 的設定是否符合預期以及 CD 流程來幫忙自動部署修改架構
Infrastructure as code tools
這個區塊作者列出了幾個常見的工具,包含 Terraform, CloudFormation, Puppet, Pulumi 等,接者又透過一張大表格來比較 Terraform/Pulumi/CloudFormation 三者的差異
Pulumi 這工具這一兩年開始聲勢比較多,跟 Terraform 一個最大的差異我想就是撰寫的方式,可以透過 Js, Go, Python...等程式語言來描述架構而並非使用 Terraform 自定義的 DSL 來管理。
最後面作者也列舉了六七個適合 IaC 的使用場景,有興趣的歡迎閱讀全文
同時也有1部Youtube影片,追蹤數超過4萬的網紅史九87 SJ87,也在其Youtube影片中提到,💻 排行榜第一名的 JavaScript 為什麼是第一名 🏅️ 💻 為什麼不推薦新手學習 JavaScript 的原因❓❓ 💻 Java 是 GPL 還是 DSL 呢 💻 JavaScript 的型別: 弱型別、強型別 💻 Python 跟 C++ 誰比較適合新手呢...... 💻 物件導向 (Ob...
「dsl語言」的推薦目錄:
- 關於dsl語言 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於dsl語言 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於dsl語言 在 軟體開發學習資訊分享 Facebook 的最讚貼文
- 關於dsl語言 在 史九87 SJ87 Youtube 的最佳解答
- 關於dsl語言 在 程式老爹-papacode - 那DSL又是什麼呢? 他的全名是領域 ... 的評價
- 關於dsl語言 在 DSL是一种类似XML/JSON的脚本语言 - GitHub 的評價
- 關於dsl語言 在 003 什么是领域特定语言DSL - YouTube 的評價
- 關於dsl語言 在 Visual Studio 2010 DSL (一) DSL的簡介 - 天空的垃圾場 的評價
dsl語言 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
今天這篇文章的內容比較主觀,是作者列出自己認為 DevOps/SRE 2021 需要注意的工具
1. Managing Cloud Services via Kubernetes CRDs.
三大公有雲廠商目前也都推出透過 CRD 的方式來管理 Cloud Services,譬如 AWS Controllers for Kubernetes, Azure Service Operator, GCP Config Connector。一旦這些工具逐漸成熟,管理人員可以使用管理 kubernetes 的方式一併來管理相關的雲端資源。
個人看法:目前大家習慣用 Terraform, Ansible 等 IaC 等工具來管理,如果往這個方向走去,等於就是逐漸使用一個方式去管理一切。
此外也滿好奇最初的 Kubernetes Service Catalog 搭配 Broker 的方式其實也已經可以用 Yaml 等方式來管理雲端資源了,沒有仔細看 Service Catalog 目前的發展狀況,這兩者的差異有哪些
2. Pulumi
Terraform 作為 IaC 工具的龍頭老大勢必會有挑戰者對其虎視眈眈, Pulumi 這家公司就是挑戰者之一,該公司的產品提供的 IaC 工具能夠採用常見的程式語言來撰寫,避免所有開發者都要額外學習全新的 DSL。此外 Pulumi 今年度也有推出自己的 GitOps 相關工具,不過儘管如此,目前其使用社群都還是不及 Terraform.
個人看法: 當 CDK + Terraform 整合逐漸穩定後, Pulumi 的特色就會減少一項,這場戰爭目前還是看好 Terraform
3. Terragrunt & TFSEC
Terraform 因為其開放原始碼社群的緣故,有愈來愈多的整合工具來幫忙 Terraform 去處理不同的議題,這種合作模式會讓 Terraform 的功能愈來愈強大。 Terrafrunt 則是一個用來管理大型 Terraform 專案的好工具,能夠幫助開發者更友善的管理眾多設定檔案。此外 TFSEC 則是一個針對安全性議題的整合工具,幫助開發者透過靜態分析的方式去檢查當前 Terraform 的內容是否會有潛在的安全性問題。隨者 DevSecOps 的概念慢慢出來,開發與維運者也要多注重些關於安全性的整合工具。
4. Tekton
CI/CD 市場上能夠選擇的工具實在太多,而 Tekton 則是一個基於 Kubernetes 的 CI/CD pipeline 系統,相對於大部分的系統是透過單一 Yaml 去描述 Pipelin, Tekton 則是透過 CRD 的方式於去定義每個 Stage,其帶來的好處就是相同的 stage 可以重複利用,不需要針對每個 pipeline 都去重新設計
個人看法: Tekton 的架構有好有壞,隨者所有的 stage 都變成單一小CRD,管理者想要一目瞭然整個 pipeline 變得非常繁瑣,使用上也常搭配 JenkinsX 來提供複雜的 CI/CD 功能
5. Trivy
如同前面提過,DevSecOps 的概念出來後,任何部分都要去考慮安全性,而 Container Image 本身也是個不容忽視的地方。因此也有不少的開源專案針對 Container Image 來進行掃描與偵測。有些 Contianer Image Registry 直接整合相關的掃描工具,自動掃描所有更新的 Image 並且提供報告給管理人員。 掃描工具諸如 Trivy, Falco, Clair, Anchore Engine 等都值得大家多多注意。
6. ShellCheck
儘管現在有愈來愈多的工具幫助開發者來管理整個叢集,然而 shell script 的定位還是不可動搖,太多時候我們還是需要自行撰寫相關的 shell scrtip 來完成一些任務。 ShellCheck 則是一個針對 shll script 的靜態分析工具,透過 lint 與常見錯誤等分析,讓開發者能夠寫出有更好品質且更好維護的 shell script.
7. Litmus
2011 Netflix 提出 Chaos Monkey 這類型的環境檢測工具,這方面的議題就沒有減少過,即是到了充滿 Kubernetes 的今日,還是有不少的開源專案或是商業平台在提供這方面的服務,譬如 chaoskube, kube-monkey, PowerfulSeal 以及 Gremlin.
作者這邊想要強調另外一套更容易使用且容易擴充的專案 Litmus,該專案基於 Kubernetes Operator 的概念去開發,透過 ChaosEngine, ChaosExperiment 以及 ChaosResult
原文: https://medium.com/dev-genius/technologies-tools-to-watch-in-2021-a216dfc30f25
dsl語言 在 軟體開發學習資訊分享 Facebook 的最讚貼文
--限時 5 折特價電子書--
關於這本書
Kotlin in Action 教你如何使用 Kotlin語言寫出有品質的應用程式。對於經驗豐富的 Java 開發人員而言,這本富含案例的書比大多數語言書籍更為深入,涵蓋了有趣的話題,例如使用自然語言語法構建DSL。
作者是 Kotlin 的核心開發人員,所以你可以相信,即使是精細的細節也是完全正確的。
https://softnshare.com/book-kotlin-in-action/
dsl語言 在 史九87 SJ87 Youtube 的最佳解答
💻 排行榜第一名的 JavaScript 為什麼是第一名 🏅️
💻 為什麼不推薦新手學習 JavaScript 的原因❓❓
💻 Java 是 GPL 還是 DSL 呢
💻 JavaScript 的型別: 弱型別、強型別
💻 Python 跟 C++ 誰比較適合新手呢......
💻 物件導向 (Object-oriented) 又是怎麼回事
程式語言要學哪一種?新手的第一步:程式語言的介紹和分類分析 #我想長資識 https://youtu.be/bH7dRlbEDJY
🙋♂️ 協助我們製作 CC 字幕: https://www.stevenlin.tw/iWantCC
👉追蹤我們👈
————————————————————————
史九87 IG ► https://www.instagram.com/im9vv
史九87 FB ► https://www.facebook.com/shihjo87
商業合作請洽詢 ► shihjo87@gmail.com
信箱箱址中文:
24199
三重忠孝路郵局第 88 號信箱
信箱箱址英文:
P.O.BOX 88 Sanchong Zhongxiao Road
New Taipei City 24199
Taiwan (R.O.C)
————————————————————————
👉 Follow us 👈
————————————————————————
SJ87 IG ► https://www.instagram.com/im9vv
SJ87 FB ► https://www.facebook.com/shihjo87
Biz contact ► shihjo87@gmail.com
Address:
P.O.BOX 88 Sanchong Zhongxiao Road
New Taipei City 24199
Taiwan (R.O.C)
————————————————————————
dsl語言 在 DSL是一种类似XML/JSON的脚本语言 - GitHub 的推薦與評價
DSL 比XML/JSON更接近程序语言的构造,基于DSL的描述可以方便的构建解释器,从而可以很容易建造一个领域特定语言(DSL)。这是为什么直接取名叫DSL的原因,意思是它是 ... ... <看更多>
dsl語言 在 003 什么是领域特定语言DSL - YouTube 的推薦與評價
DSL语言 全称为Domain Specific Language。常见的 DSL语言 :XML;Matlab;groovy。特点:解决某一特定领域的问题,通用语言是要解决所有的问题。 ... <看更多>
dsl語言 在 程式老爹-papacode - 那DSL又是什麼呢? 他的全名是領域 ... 的推薦與評價
那DSL又是什麼呢? 他的全名是領域特定語言(Domain Specific Language) 就是「只針對特定任務」的程式語言喔! 像是滅火器只用來滅火、除濕機只用來除濕. ... <看更多>