使用JulieOps管理Kafka自動化部署?

banq發表於2022-07-06

當試圖建立一個自動化的Kafka平臺時,有一個問題是 "我如何管理我的Kafka Artefacts?"。

在這篇文章中,我們談論了一個我們目前在不同專案中使用的解決方案,在未來的文章中,我們打算更詳細地瞭解它的一些功能和實現。

如果你開始使用Kafka,或者已經有了一個穩定的解決方案,並且有必要進行實驗,或者開始有請求來建立新的主題,甚至有特定的配置,不同的模式,為不同的整合部署不同的聯結器,執行多個ksqlDB查詢等。你打算每次都透過控制檯手動部署它們,還是嘗試使用API?你打算如何跟上變化?必須有一種方法來保持它的組織性、自動化和所有其他的好東西。

我們得到的答案是......JulieOps! 

什麼是 JulieOps?
以前稱為 Kafka Topology Builder,現在以 JulieOps 的名字命名(向作者的母親致敬——如果您想了解更多關於它為何以這樣的名稱結尾的資訊,請單擊此處)。它是一個開源工具,可幫助您以集中的方式自動配置 Kafka 中的主題、聯結器、訪問控制、Confluent Schema Registry 和其他工具(檢視官方文件以獲取支援的功能的完整列表)。

為什麼這個解決方案是一個答案?
如果您想利用版本控制和“一切即程式碼”來幫助您自動化並控制叢集狀態,JulieOps 的設計考慮了 GitOps 理念,因此它非常適合。

你問什麼是 GitOps?
下面我們給你一個品味,但你肯定應該更深入地研究它。

GitOps 是一種正規化或一組實踐,使開發人員能夠執行通常屬於 IT 運營範圍的任務。GitOps 要求我們使用宣告式規範來描述和觀察系統,這些規範最終構成了連續一切的基礎。

JulieOps,由Pere Urbon-Bayes,Confluent 的高階解決方案架構師建立的一個活躍的專案,不斷新增新功能並歡迎功能請求和貢獻。不僅與 Apache Kafka 相容,而且還與 Confluent Kafka 進行了一些整合,例如 RBAC、SR 等。

CLI 工具有多種格式。你已經準備好使用 docker 映象、不同發行版的包,甚至可以將它作為一個胖 jar,除了你自己在本地構建它。
執行此 CLI 工具所需的檔案是:

  • 一個屬性檔案,它將包含工具和 Kafka 叢集的所有相關配置,通常稱為拓撲構建器屬性檔案
  • 描述符檔案(可以是一個或多個,採用 YAML 或 JSON 格式),顧名思義,它將包含我們物件的描述(參見下面的示例)


JulieOps 適合我嗎?之前我應該​​考慮什麼?
使用 JulieOps 作為模組化輔助工具很容易,將其新增到我們的管道中以應用配置更改,使流程自動化。
關於這一點,有可能走不同的道路,因此可以靈活地適應您的環境。
您可以選擇在短期容器中實施 JulieOps(用於資源最佳化,因為它只是一個一次性操作)或持久的長期例項,以便在配置發生變化時持續應用它們。
嘗試擴充套件配置時相關的其他一些問題:

  • 您會在一個檔案中收集所有資訊還是將其拆分為多個檔案?
  • 每個團隊都有一個配置檔案嗎?對於每個主題/聯結器或任何其他點?
  • 你將如何處理你的 repo 中的檔案結構?你會只有一個回購還是幾個?
  • 你會按專案分離檔案嗎?團隊?用例?
  • 您還可以考慮擁有多個描述符檔案或保留一個檔案作為事實來源(您可以在儲存庫中看到原始想法,但對於更大更復雜的專案可能難以管理並且容易出錯)。

您選擇管理檔案(拓撲構建器屬性檔案或/和描述符檔案)的策略可能會影響效能和成本。您對此的關心程度取決於您的用例。
  • 例如,如果您有多個資料夾或目錄級別,您是否需要在管道中執行其他步驟來展平您的檔案?
  • 您會將所有檔案複製到您的容器嗎?或者你會有一個專用的共享卷,在那裡你已經克隆了你的 repo 或者已經附加了可以使用的檔案?
  • 你的配置檔案中有秘密嗎?它們將如何在您的管道中處理?

應該考慮所有這些以及更多。

我們如何利用 JulieOps 來幫助我們解決問題?
使用 JulieOps,我們還可以透過設計實現自動命名控制。還可以新增試執行和預設驗證以及您自己的自定義驗證。這對於管道中的測試步驟非常有價值。

使用 JulieOps 作為工具並圍繞它構建強大的管道,我們可以輕鬆配置新主題或更改現有主題,使此類操作像提交到儲存庫一樣簡單。我們可以新增新的聯結器、模式、ksqlBD 查詢、新增 ACL 等等。

專案動機之一是在保持運營控制的同時為團隊提供自主權。

但是,強大的力量帶來了巨大的責任,並且應該應用圍繞您的儲存庫的強大策略來保持控制並防止錯誤修剪事件的發生。

因此,還應該為您的儲存庫、分支、PR、提交等新增多個級別的安全性和訪問控制,這是您應該牢記在心的事情。
如您所見,JulieOps 之類的工具與您的 Kafka 叢集並行工作得很好,如果您有良好的實踐,可以真正幫助自動化操作任務並保持控制。

 

相關文章