本文件將概略介紹虛擬存放區。如需建立虛擬存放區的操作說明,請參閱「建立虛擬存放區」。
Artifact Registry 的配額與限制適用於虛擬存放區。
虛擬存放區的運作方式
虛擬存放區可做為單一存取點,從一或多個上游存放區下載、安裝或部署相同格式的構件。上游存放區可以是 Artifact Registry 標準或遠端存放區。
其他存放區模式如下:
- 標準:預設的存放區模式。您可以直接將構件 (例如私人套件) 上傳或發布至標準存放區。雖然您可以直接從個別標準存放區下載,但透過虛擬存放區存取存放區群組可簡化工具設定。
- 遠端 (僅限語言套件存放區):針對 Maven Central 或 PyPI 等公開存放區中的構件,透過快取進行提取。它會充當公開存放區的 Proxy,讓您更能掌控外部依附元件。
用途和優勢
- 簡化用戶端設定
如果任務只需要存放區的讀取權限,您只需設定單一 Artifact Registry 存放區,即可存取儲存在多個上游存放區中的成果。
例如:
- Maven 套件的虛擬存放區可提供 Artifact Registry 標準存放區中的私人 Java 套件,以及從 Maven Central 快取公開套件的遠端存放區中的公開 Java 套件。
- 虛擬存放區可提供來自不同團隊擁有的多個上游標準存放區的私人 Python 套件。每個團隊都有上游存放區的寫入權限,但會使用虛擬存放區下載其他團隊的套件。
- 更安全的依附元件解析
您可以為上游存放區指派優先順序,以便在要求的構件位於多個上游存放區時,更有效率地控制 Artifact Registry 選擇哪個存放區。
當用戶端設定私人和公開存放區時,部分工具 (例如 Python
pip
工具) 不會提供控制搜尋順序的方法。這類設定容易遭受依附元件混淆攻擊,攻擊者會將含有錯誤程式的新版套件上傳至公開存放區,誘騙用戶選擇錯誤版本。您可以同時使用遠端和虛擬存放區來減輕這項風險:
- 建立遠端存放區,做為公開存放區的 Proxy。
- 為私人套件建立標準存放區。
- 建立虛擬存放區,並設定優先使用標準存放區 (如果兩個存放區都含有相同套件版本)。
- 設定套件管理工具和其他工具,只從虛擬存放區讀取資料,這樣用戶端邏輯就不會涉及存放區選取作業。
如要瞭解其他依附元件管理最佳做法,請參閱「依附元件管理」。
虛擬存放區如何選取上游存放區
每個上游存放區都必須設定優先順序。優先順序是整數,用於加權,而非排名。也就是說,優先順序值較高的儲存庫會優先於優先順序值較低的儲存庫。
當您要求位於多個上游存放區的構件時,Artifact Registry 會使用以下優先順序邏輯:
- 系統會優先採用價值最高的存放區。舉例來說,
10
的值會視為優先順序高於1
。 - 如果有多個上游存放區的優先順序相同,則可從任何上游存放區提供構件。
直接將用戶端設定為搜尋虛擬存放區和其他存放區時,用戶端仍可能從 Artifact Registry 以外的存放區下載構件。
舉例來說,如果您將 Python pip
工具設為搜尋 PyPI 和虛擬存放區,套件可能會直接從 PyPI 下載,因為 pip
會一律選擇最新版本的套件,不論套件來自哪個存放區。如果 pip
已設定為只搜尋虛擬存放區,您就可以控制所有上游存放區的優先順序,包括用於 PyPI 的代理上游遠端存放區。
支援的存放區格式
您可以為下列 Artifact Registry 存放區格式建立虛擬存放區:
語言套件:
OS 套件:
如果您是 Artifact Registry 的新手,可以透過快速入門瞭解如何為這些格式設定標準存放區。
限制
除了 Artifact Registry 配額和限制之外,虛擬存放區還有下列限制:
- 標準 Artifact Registry 上游存放區必須與虛擬存放區位於相同區域或多區域,但可以位於不同的 Google Cloud 專案中。
Maven 虛擬存放區不允許將版本政策設為快照或版本。
Apt 和 Yum 上游必須是 Artifact Registry 標準存放區。
套件匯入、上傳或刪除後,Apt 和 Yum 標準存放區會以非同步方式更新套件索引。如果是小型存放區,重新產生索引可能需要幾秒鐘的時間。對於較大的存放區,重新建立索引的作業可能需要數分鐘或更長的時間。重新建立索引後,Apt 和 Yum 用戶端就能看到存放區的變更內容。