顯示具有 ACR 標籤的文章。 顯示所有文章
顯示具有 ACR 標籤的文章。 顯示所有文章

定期自動化執行ACR Repository維護Azure CLI指令碼的N種方法

定期自動化執行ACR Repository維護Azure CLI指令碼的N種方法

前篇使用Azure CLI-自動刪除Azure Container Registry過期映像檔,我寫好了維護 ACR Repository 維護指令碼。我們希望能定期自動化執行這份維護指令碼(或說排程執行也行),這份指令碼有幾個麻煩的地方,一、註解第一行「First we need to login to Azure」,你必須先登入 Azure 帳號,登入之後才能執行 Azure CLI。二、因為需要登入 Azure 帳號,也就被 Azure 帳號這件事給限制住了,它就不太可能離開你的主機去別的地方做自動化。因此,在自動化之前,我們必須先解決 ACR 訪問權限的問題。

使用Azure CLI-自動刪除Azure Container Registry過期映像檔

使用Azure CLI-自動刪除Azure Container Registry過期映像檔

ACR Repository Image List

Azure Container Registry裡會儲存大量的映像檔,但其中許多都是已過期或未使用的映像檔。因此,都需要定期清理 ACR 裡的映像檔,以節省空間與成本。

ACR使用Artifact Cache取得外部信任Registry映像檔快取備份

ACR使用Artifact Cache取得外部信任Registry映像檔快取備份

Azure Container Registry 最近 GA 了一個 Artifact Cache 功能,我測試之後,Artifact Cache 完全可以解決我們長期(困擾3-5年以上)以來在混合雲環境存取外部Registry映像檔存取問題。公司有非常安全網路規劃,因此地端內網非常不易接觸外網資源,例舉來說:

a: 地端伺服器 <--> Firewall <--> MPLS <--> ACR (v)
b: 地端伺服器 <--> Firewall <--> MPLS <--> hub.docker.com (x)
c: 地端伺服器 <--> Firewall <--> MPLS <--> mcr.microsoft.com (x)

讓地端Kubernetes存取私有Registry-以Azure Container Registry為例

讓地端Kubernetes存取私有Registry-以Azure Container Registry為例

上一篇,是直接透過各種 containerd CLI 來存取 Private Registry 裡的 Images。其實這只算一個 PoC,因為要先學習如何存取私有 Registry。有了之前的經驗,那麼接下來的大目標是讓 Kubernetes 的 nodes 也能存取私有 Registry。之前提到,Kubernetes 本身是使用 crictl CLI 來與 containerd 溝通。

crictl pull --creds "UserName:Password" "ImageDetail"

但我們用 Kubernetes 時不可能這樣下指令,必須透過一些其他方法。Kubernetes 本身可以吃 docker 的 config.json 組態來使用。對「docker 的 config.json 組態」有沒有很熟悉的感覺。對,在上一篇我們透過 nerdctl login 協助,它預設會把相關組態儲存下來到 /root/.docker/config.json,這不就是我們需要的嗎。

containerd CLI - ctr、nerdctl、crictl 與 Azure Container Registry 存取設定

containerd CLI - ctr、nerdctl、crictl 與 Azure Container Registry 存取設定

在安裝完containerD之後,有時需要直接與containerd溝通,這時就需要透過CLI,文件共介紹 ctr、nerdctl、crictl 三套 CLI,CLI 與 containerd 的關係,就像 dockerd 與 docker CLI 差不多意思。除了溝通之外,由於我們 Registry 是採用Azure Container Registry,因此另一個重點是要知道如何設定以存取預設 docker.io 以外的 Registry。