Azure

建構代理和發布代理之間的區別 - DevOps

  • March 24, 2020

有人可以用最簡單的術語解釋建構代理和發布代理之間的**區別嗎?**這與 Azure DevOps 有關。我從 Microsoft 找到有關建構代理的資訊,但我沒有找到任何專門針對發布代理的資訊。我不是貿易開發人員,所以如果有人能解決這個問題,我將不勝感激。

從技術上講,它們是相同的。即建構或發布使用的代理是在機器上執行的相同程式碼。但是有 3 種使用模式。

代理池

代理池是一種將代理分組在一起的方式。例如,您可以通過以下方式將代理組合在一起

  • 作業系統(Linux vs Windows vs MacOS)
  • 能力(.net 建構代理 vs Java 建構代理 vs IOS 建構代理 vs 安裝了 Web 瀏覽器以進行自動化測試的代理)
  • 功能(建構 vs 測試 vs 部署)
  • 網路訪問(一些代理可以與網路上的某些資源通信)
  • 或者以上所有的混合。

您的代理越通用,它們的使用率就越高,但您可能不希望有一個大型代理池可以做所有事情。

如果您的部署過程是遠端執行的,即代理使用諸如 ansible 或 ms deploy 之類的工具連接到遠端伺服器,那麼您可以使用這些代理來發布您的程式碼,但是還有其他幾種方法可以使用代理來發佈軟體。

部署組

在經典管道(GUI 創建的發布過程)中,您還可以創建部署組。在這種模式下,您將代理安裝在要部署到的機器上,部署組充當將伺服器集分組到環境中的一種方式,每個代理負責將程式碼部署到執行它的伺服器。您可以標記部署組中的代理,以便僅在這些代理上執行特定作業。例如,您可能在一個環境中有 5 個伺服器、2 個 Web 伺服器、2 個應用程序伺服器和一個數據庫伺服器,您可以將代理標記為“web”“app”“db”,然後在發布管道中標記您的作業,這樣管道知道在哪裡執行每個作業。它還可以並行執行作業,以便同時部署兩個 Web 伺服器。

環境

在多階段管道(YAML 管道即程式碼)中有環境的概念。這可以是一組資源。目前環境支持兩種類型的資源。

  1. Kubernetes 命名空間
  2. 虛擬機。

與部署組環境一樣,您可以將代理專門部署到虛擬機,然後使用它使用標籤執行特定作業。

在“部署組”或“環境”中使用代理有 3 個主要好處

  1. 代理在其部署的機器上是本地的,這意味著您的發布過程不必滿足在網路上工作的需要。
  2. 安全性,代理通過埠 443 與 azure devops 對話,這意味著您可以對伺服器的入站流量製定非常嚴格的規則,因為代理工作只需要超過 443 的出站流量
  3. 成本,池中的代理受並行作業規則的約束。部署組和環境* 不屬於此限制

*環境和 YAML 管道目前處於預覽階段,定價模式可能會在它們全面上市時發生變化

引用自:https://serverfault.com/questions/1007248