簡體   English   中英

Azure - 按主要版本從容器注冊表中檢索二頭肌模塊

[英]Azure - retrieving bicep module from container registry by major version

我的 Azure 容器注冊表中有存儲庫

  • myregistry.azurecr.io/bicep/myappmodule:v1.0.25798
  • myregistry.azurecr.io/bicep/myappmodule:v1.0。 25799

我想在外部二頭肌文件中引用主要版本(v1)的最新模塊。 所以在這種情況下,版本為 v1.0 的模塊。 應使用25799

主二頭肌:

...
module appService 'br:myregistry.azurecr.io/bicep/myappmodule:v1' = {
  name: 'appService'
  params: {
    ...
  }
}
...

有沒有辦法獲得最新的存儲庫版本?

我試過沒有成功:

  • br:myregistry.azurecr.io/bicep/myappmodule:v1.*
  • br:myregistry.azurecr.io/bicep/myappmodule:v1*
  • br:myregistry.azurecr.io/bicep/myappmodule:v1:latest
  • br:myregistry.azurecr.io/bicep/myappmodule:最新

在我的環境中進行了測試,發現您不能使用以下格式從容器注冊表中獲取最新的圖像。 您必須使用帶有標簽的完整圖像名稱才能使用最新/特定圖像。

  • br:myregistry.azurecr.io/bicep/myappmodule:v1.*
  • br:myregistry.azurecr.io/bicep/myappmodule:v1*
  • br:myregistry.azurecr.io/bicep/myappmodule:v1:latest
  • br:myregistry.azurecr.io/bicep/myappmodule:最新

將兩個具有相似名稱的圖像推送到 ACR,即您正在使用,例如嘗試從該圖像創建一個容器實例(位於容器注冊表中)

在此處輸入圖像描述

由於圖像試圖拉取以創建容器實例,因此出現錯誤,該名稱不存在

在此處輸入圖像描述

嘗試使用容器注冊表中的全名,它工作正常。

在此處輸入圖像描述

建議您使用以下格式,因為它被推送到容器注冊表。

  • myregistry.azurecr.io/bicep/myappmodule:v1.0.25798
  • myregistry.azurecr.io/bicep/myappmodule:v1.0.25799

底線為什么目前不可能https ://github.com/Azure/bicep/issues/4186#issuecomment-907600100

如果我們支持版本范圍而不是單個版本,則會出現一些有趣的復雜性:

  • 每個使用版本范圍的模塊還原都需要額外的 LIST 調用來枚舉 ACR 存儲庫中的標簽,然后再下載模塊內容。
  • 本地緩存的好處也會減少一點,因為我們總是需要查詢以檢查是否有更新的版本在請求的范圍內。
  • 二頭肌構建變得不確定。 如果發布了新模塊,則運行一次然后再運行一次可能會產生兩種不同的結果。 NPM 和 NuGet 通過與源文件並排提交的鎖定文件解決了這個問題。
  • 並非所有版本/標簽都遵循 xyz 格式。
  • 發布到注冊表的已編譯 JSON 包含在二頭肌發布期間解決的所有依賴項。 即使您修改了其中一個依賴項,在重新發布模塊之前也不會發生任何變化。

(對我在 GitHub 中的想法請求的回應: https ://github.com/Azure/bicep/discussions/7043#discussioncomment-2978469)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM