跳轉到主要內容
工程的博客

民主化雲基礎設施起程拓殖和詹金斯

通過子恒廖

2018年10月31日, 工程的博客

分享這篇文章

這篇文章是我們一係列的一部分內部磚上工程博客平台,基礎設施管理、集成、工具、監視和配置。Beplay体育安卓版本

今年夏天在磚我設計和實現一個服務協調和部署雲提供商的基礎設施資源,顯著提高操作的速度在我們的自我管理的雲平台。Beplay体育安卓版本起程拓殖部署該服務被稱為“管道”,和我與雲計算和可觀察性工作團隊使其成為可能。

在這個博客中,我解釋了我們如何使用起程拓殖的增強現有的工作流,並解決了痛點大大減少操作負擔和錯誤的風險。我將總結其對工程的影響速度,我整體的實習經驗數據磚。

介紹

在磚、工程師與各雲提供商的(即交互。AWS, Azure)日常管理的資源。為了緩解供應,我們利用起程拓殖,雲不可知論者,開源資源配置工具。結合磚”jsonnet-based模板係統,工程師可以通過聲明指定所需的資源,並跨多個地區和雲提供商提供這些資源。一個丟失在實現運營效率是部署編製的模板提供各自的資源。

起程拓殖:基礎設施代碼

為讀者不熟悉起程拓殖,我們簡要描述如何利用起程拓殖管理雲資源。為了提供雲基礎設施使用起程拓殖,用戶定義他們的資源在一個模板文件中,通常使用JSON,或Hashicorp配置語言(HCL)(一個配置語言由起程拓殖的創造者)。一個示例JSON模板提供一個Azure keyvault看起來如下:

{“資源”:{“azurerm_key_vault”:{“databricks_example_key_vault”:{“位置”:“westus”,“tenant_id”:“YOUR_TENANT_ID”“名稱”:“db-example-kv”,“resource_group_name”:“dbwestus”,…一些KeyVault參數…}}}}

由起程拓殖模板時,生成一個輸出tfstate文件。的tfstate文件描述當前狀態的雲資源配置相應的起程拓殖模板。這些文件是起程拓殖執行後續的關鍵資源更新已部署資源,自起程拓殖計算你所期望的狀態差異從現有的基線狀態tfstate文件,並執行相應的更新來實現所需的雲資源的最終狀態。

改變或破壞現有資源,用戶隻需更改模板使用起程拓殖和重新應用它。如果相應的tfstate文件存在,起程拓殖將正確修改資源,生成一個新的tfstate文件來取代舊的。如果tfstate文件丟失,起程拓殖將對所有的資源作為新模板中指定。狀態管理是一件棘手的管理,但起程拓殖有效遷移所必需的資源所需的狀態。異常的應用程序行為可以發生在起程拓殖利用tfstate文件不匹配當前雲資源狀態。

現有的痛點

起程拓殖是一個非常強大的工具,它已經有了極大的提高磚的時候利用雲資源的效率。然而,成千上萬的模板和雲資源管理在生產環境中對磚工程帶來了許多新的挑戰。一些最重要的問題包括:

  1. 操作部署生產瓶頸資源——在磚,數量有限的人特權訪問資源部署到生產環境中。對於一個工程師來部署他們的資源,他們需要一個請求到基礎設施團隊批準請求和部署生產變化。即使如此,似乎輕如更新生產數據庫參數變化。完成請求可能會需要幾個小時甚至幾天的時間初步工程要求。
  2. 缺乏強製tfstate一致性Git -磚商店tfstate文件,提供版本控製等細節(特別是變更跟蹤)。然而,由於Git允許用戶在不同的時間點視圖代碼設計,兩個用戶可以使用tfstate文件的相互矛盾的看法。隨著係統的尺度,就無法阻止用戶在不同的分支機構部署相同的資源,覆蓋現有資源,或進入不一致的狀態。
  3. 缺乏支持部署資源與敏感信息——一個非常常見的用例在磚起程拓殖部署每個服務數據庫。在部署時,需要指定一組初始的憑證。如果簡單地添加到模板,證書將在Git中可見,在模板和物化tfstate文件,這是一個明顯的違反安全。作為變通方法,模板包含占位符的憑證和tfstate文件被修訂憑證因果消毒。占位符尤其有問題,工程師們需要記住手動刪除之前真正的憑證。

起程拓殖部署管道:資源配置簡單、安全

在前一節中提到的問題,我們起程拓殖部署管道,設計了一個自助服務資源配置工具。管道是由Jenkins和提供了一個簡單的用戶界麵來部署起程拓殖模板:

圖1:起程拓殖部署管道UI。

提供資源雲,一個工程師需要構造一個起程拓殖模板,輸入的路徑作為參數工作,和部署工作。管道將解決模板,利用各自的雲提供商的憑證,並應用模板使用起程拓殖。確保部署是有意為之,管道將暫停短暫顯示提出改變的資源和提示用戶確認。確認後,資源無縫部署!

圖2:一個例子diff顯示當部署一個起程拓殖模板(在這種情況下,Azure KeyVault)。

如果任何資源目標生產環境中,管道實施我們的基礎設施團隊的批準才能進行。雖然幹預仍然需要為安全目的,工作流是大大簡化了,因為基礎設施團隊隻需要批準請求並允許管道處理自動化交付。另外,管道支持兩人授權生產資源的變化經曆了代碼評審過程(包括基礎設施團隊批準),並合並到主分支。在這種情況下,管道生成一個鏈接請求工程師發送到另一個工程師批準。

讚同者評論和接受請求後,管道收益和應用起程拓殖模板。這些工作流最小化所需的努力更新生產資源,防止未經授權的部署。

管道完成後應用起程拓殖模板,生成的tfstate文件將被上傳到一個分布式tfstate服務(由Azure blob存儲支持),而不是提交到版本控製中。這種設計確保tfstate文件是一致的,消除了用戶從tfstates起程拓殖模板應用的風險代表國家在曆史上不同的點。

部署秘密

允許部署雲資源與敏感的憑證,我們與中央憑證管理係統綜合管道Hashicorp庫的支持。在起程拓殖資源模板,用戶可以指定一個參考憑證需要引導資源。在運行時,管道將從庫獲取參考憑證並無縫地注入他們起程拓殖通過運行時參數。憑證傳遞服務之間不需要用戶手動幹預。通過利用憑證注入和因果tfstate編校,用戶可以安全地提供雲資源而不用擔心泄露憑證。

結論

起程拓殖部署管道旨在提高效率和安全的雲資源配置在磚。在內部發布2018年8月,成為微軟的標準管道資源部署到Azure。我們看到大幅減少的時間引導新雲資源,並增加由於采用新解鎖工作流。通常,生產資源配置將在幾分鍾內完成的任務。此外,這些工作流現在更安全由於憑證注入。

我的實習經驗在磚是非凡的。我在多家公司實習,磚的實習是實習的不同,從一開始,我從來沒有覺得我是作為一名實習生,但是我是團隊的一部分,該公司。我有機會和創造價值幾乎立即產生影響。磚的工程師是謙遜和支持,總是打開反饋盡管更多的行業經驗。最重要的是,我已經能夠成長和學習,在技術上和本書初版,從各種各樣的經驗你不會得到在其他公司:與合夥人跟聊天,參加火花和艾城的峰會,會議上最大的火花,聽CEO重新提出他的董事會表示,與VPs整個公司參加午餐會議,跟蹤磚麵試的過程。

最後,我還要感謝每個人在公司,尤其是我的隊友從雲端和可觀察性的團隊,作為我美好的暑期實習經驗的一部分。我深深了解的心態當我方法設計和構建可伸縮的雲基礎設施。

閱讀更多

找出我們的工程實習生工作:

內部工程相關的博客係列:

免費試著磚
看到所有工程的博客的帖子
Baidu
map