iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
DevOps

Kubernetes X DevOps X 從零開始導入工具 X 需求分析*從底層開始研究到懷疑人生的體悟*系列 第 17

Day 17 - 從零開始導入Terraform,Infrastructure as Code 架構即程式,公司完整導入流程

先占虛擬機系列腰斬了嗎?

沒有,先占虛擬機系列作了一半,後面還有 cassandra 於 GKE 運行的實戰分享。

然而這系列了 view 數實在低到驚人,決定先暫停先占系列的更新,換個題目試試水溫。

如果喜歡先占虛擬機系列的朋友,請來粉絲專頁 給我留個言,讓我知道這系列還是有人想看,或是完全沒人想看XD。

大綱

  • Infrastructure as code 的需求與實例
  • Infrastructure as code 的基本概念
  • 以 Terrafrom 為例,terraform 的基本概念
  • Terraform 的功能與最佳實踐
  • 公司從零開始導入的心路歷程
  • 導入後誠心推薦的最佳實踐一 Terraform + Gitflow
  • 導入後誠心推薦的最佳實踐二 Terraform SOP handbook
  • 開源的 Terraform 範例,實際導入成功的案例,給大家參考
  • Terraform module

一樣不曉得分幾天寫,大家有興趣歡迎留言,留言都會回,比較督人有興趣的題目就會比較容易更新。


本文同步刊登於個人技術部落格,有興趣關注更多 Kubernetes、DevOps 相關資源的讀者,請務必追蹤從零開始的軟體工程師之旅,喜歡的話幫我按讚分享、歡迎留言、或是許願想要看的文章。

如果有技術問題也可透過粉絲專頁 討論,技術方面諮詢免錢、需要動手做另計 XD。

曬貓


好,今天來講得這個 Terraform

我會實際分享我們公司為雲團隊導入的經驗,前半部會有點像購物頻道的廣告

以下的對話是不是常出現在日常工作中?

以下這段對話很耳熟?

「是誰改了這個設定?」

  • by 週一上班的 DevOps 與週六值班的維運團隊
  • 對啟用的環境的掌握如何
  • 環境的變更能否永久保存

「這個環境怎麼少一個設定?」

  • 網站噴錯後,整個團隊一步步釐清問題,不是 code,不是變數config,是 infra 有一個小地方沒設定
  • 環境複雜,以我們的例子是複雜得多雲網路,常出這種問題
  • 環境設定的除錯很費時
  • 完全可以避免

「會動就好,沒事不要改環境(抖)」

  • Legacy site
  • 調整 production 環境是否有信心
  • 我們看不慣無人整理的舊架構,導入 terraform 後,(很不要命的)把 production site 搬過一遍
  • 我有十成的信心跟你說新舊兩個 site 完全一樣

Our stories

  • 開發團隊大概 100+ 個左右
  • 專案很多,而且老闆很喜歡開新專案測試商業模型
  • 環境也越開越多,大大小小幾百台 vm,幾十個資料庫,都是不同專案在跑,規模大概這樣
  • 每週都有新環境要交付
  • 交接缺口

我們公司東西多,但東西多不是問題,問題是什麼呢?

問題

  • 手動部屬本來不是問題,但漸漸成為問題
    • 開 infrastructure 的方法,跟著 SOP 上去 GCP GUI 介面,點一點,填一填。公有雲開機器很方便。
    • 可是不同人開的環境漸漸出現一些不同,可能差一個設定、一個參數、或是命名規則差一點。這些細節的不同,差一個 config 有時候就會雷到人。「這機器誰建的阿,根本有問題啊」,而且這種雷很多時候都是跑下去出事了,才發現「阿靠原來設定不一樣」
    • 命名差一點不影響功能,但看久了就很煩,「阿就對不齊阿」,有強迫症就很痛苦。然後你維運的自動化腳本就爆掉,命名差一個字,regex 就要大改。突然增加維運成本
  • 生產環境大家都不太敢動。架構調整很沒信心
    • 誰知道當初環境設定了那些東西,開機器的人離職了,也不知道他為啥設定,「你知道他當初為什麼要設定這個嗎?」,你問我我是要去擲茭喔。
      • 我們這一季把所有現有環境都搬到新的架構上,因為我們對舊架構不爽很久了(XD),這個能做到當然有作法,後面細講

有實際需求才找解決方案,沒有需求就不用衝動導入新技術,導入過程中還是蠻累的

需求

從維運的角度,需求大概長這樣

  • 提升穩定度

    • infra 交付標準化
    • 交付自動化
    • 測試環境
  • infra 提交要能夠 review

  • 提升效率

    • 老闆要的。超快部屬,腳本跑下去要快,還要更快
  • 次要目標

    • 成本,效能最佳化,希望能在整理過程中,找到最適合的可行架構
    • 新人好上手,Junior 同事也能「安全」的操作,看到這個安全兩個字了嗎? 安全第一,在訓練新的 op 時要注意安全,不然他上去 GUI 點一點,一個手起刀落 DB 就不見了,整個維運團隊一周不用睡覺。安全第一吼。
    • 權限控管,IAM 也用 terraform 管理,權限管理人多手雜越用越亂,可以考慮使用 IaC,一覽無遺

Programatical approach for infra

啊不就是 Infrastructure as code XD

  • 導入前,大家都有聽過,大家都覺得很想導入,但沒人有經驗,每個人都超怕,但又不知道在怕三小
  • 這表明了一件事,大家都知道要做對的事情,但不是每個人都能改變現況,讓團隊導向對的事情

計畫

  • 確定需求
  • 開始 survey
  • 「小心」導入
  • 有經驗領頭羊很棒,但不是必須

上一篇
Day 16 - 先占節點 Preemptible Instance 實戰分享,先占虛擬機如何殺死你的 Pod,如何處置下篇
下一篇
Day 18 - 從零開始導入Terraform,Infrastructure as Code 基本概念與工作流程
系列文
Kubernetes X DevOps X 從零開始導入工具 X 需求分析*從底層開始研究到懷疑人生的體悟*30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言