天天看點

如何使用容器鏡像服務 TCR 輕松實作容器 DevOps

作者周明,騰訊雲容器産品工程師。目前主要負責騰訊雲TKE、TCR等産品控制台的相關研發工作。

概述

當你使用雲廠商提供的容器服務部署業務服務後,是否對傳遞部署全鍊路的效率有更高的需求,例如實作基于容器的 DevOps 服務,自動化地完成鏡像建構以及叢集内容器的鏡像版本更新。騰訊雲容器鏡像服務 TCR 提供雲原生應用傳遞流水線功能,全鍊路可追蹤、可觀測、可自主配置,讓使用者可以輕松實作代碼送出變更後,自動觸發鏡像的建構和推送,并将鏡像更新到容器服務 TKE、彈性容器服務 EKS 等平台建立的叢集中,完成最終的傳遞,為企業級使用者在騰訊雲上提供一體化雲原生 DevOps 解決方案。本文主要介紹如何使用容器鏡像服務 TCR 輕松實作容器 DevOps。

容器鏡像服務簡介

容器鏡像服務(Tencent Container Registry,TCR)是騰訊雲提供的安全獨享、高性能的容器鏡像托管分發服務,支援 Docker 鏡像、Helm Chart 存儲分發及鏡像安全掃描,為企業級客戶提供了細顆粒度的通路權限管理和網絡通路控制。

如何使用容器鏡像服務 TCR 輕松實作容器 DevOps

容器DevOps業務流程

DevOps 是 Development 和 Operations 的組合詞,代表着重視「軟體開發人員(Dev)」和「IT 運維技術人員(Ops)」之間溝通合作的文化;旨在透過自動化「軟體傳遞」和「架構變更」的流程,使得建構、 測試、釋出軟體的過程能夠更加地快捷、頻繁和可靠。TCR 與容器服務 TKE、CODING DevOps 等産品無縫內建,在騰訊雲上提供一體化雲原生 DevOps 解決方案,容器 DevOps 的基本業務流程如圖所示。

如何使用容器鏡像服務 TCR 輕松實作容器 DevOps

如何使用容器鏡像服務輕松實作容器 DevOps

前提條件

  • 準備 TCR 企業版執行個體,建立鏡像倉庫。

    前往執行個體清單頁面,建立企業版執行個體,關于如何建立可參考文檔建立企業版執行個體,并在生成的執行個體中建立一個鏡像倉庫。

  • 準備 TKE 标準叢集,并部署容器應用

    前往 容器服務控制台,建立 TKE 标準叢集,可參考文檔 建立叢集。

    目前容器服務 TKE 已支援在控制台内選擇容器鏡像服務 TCR 企業版鏡像建立工作負載。同時,TKE 标準叢集可安裝 TCR 專屬插件,實作内網及免密拉取 TCR 企業版内鏡像,參考文檔 使用 TCR 企業版執行個體内容器鏡像建立工作負載。

  • 開通 CODING DevOps 服務。

場景一:代碼變動後自動建構鏡像,并觸發部署

操作場景

支援使用者配置流水線,在代碼變更後,自動建構鏡像,并觸發自動部署到容器平台。

操作步驟

配置傳遞流水線
  1. 登入容器鏡像服務 TCR 控制台,選擇左側導航欄中的【傳遞流水線】,在“傳遞流水線”頁面中,單擊【建立】。
    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
  2. 在“基本資訊”步驟中,配置以下參數,然後單擊【下一步:鏡像配置】。
    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
    • 流水線名稱:設定傳遞流水線名稱。
    • 流水線描述:為傳遞流水線添加描述資訊,建立後可修改。
  3. 在“鏡像配置”步驟中,配置以下參數,單擊【下一步:應用部署】。
    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
    • 鏡像倉庫:選擇傳遞流水線關聯的鏡像倉庫,将自動配置鏡像建構及推送,用于托管應用部署所需要的鏡像。
    • 鏡像版本過濾

      :支援對執行傳遞流水線中鏡像的版本進行限制,可以過濾掉不需要執行部署的鏡像版本。

      • 直接部署任意版本:推送到鏡像倉庫的任意版本鏡像都會被部署。
      • 僅部署指定名稱版本:需指定鏡像版本,多個版本可以使用逗号分隔,非指定版本不會部署。
      • 僅部署指定規則版本:需輸入正規表達式。
    • 鏡像來源:支援平台建構鏡像和本地推送鏡像。平台建構鏡像允許使用者關聯不同代碼托管平台的代碼倉庫,當代碼變動時自動觸發傳遞流水線,完成自動建構、推送鏡像以及應用部署;本地推送鏡像支援使用者在手動推送鏡像時,也能觸發應用部署。場景一中我們選擇平台建構鏡像。
    • 代碼源、代碼倉庫:選擇用于建構鏡像的代碼倉庫,流水線将拉取該代碼倉庫内源代碼進行編譯及建構,首次選擇需要授權。目前已支援GitHub、公有GitLab、私有GitLab、碼雲以及工蜂等代碼托管平台。
    • 觸發規則

      :鏡像建構被自動觸發的規則條件。目前支援以下四種場景:

      • 推送到指定分支觸發:需指定分支。
      • 推送新标簽時觸發建構:建立标簽并推送時觸發。
      • 推送到分支時觸發建構:推送至任意分支時觸發,無需指定分支。
      • 符合分支或标簽規則時建構:需輸入正規表達式,例如

        ^refs/heads/master$

        ,可比對 master 分支進行觸發。
    • Dockerfile 路徑:鏡像建構執行的操作基于代碼倉庫内的 Dockerfile,需指定該 Dockerfile 檔案的路徑。如不指定,預設為代碼倉庫根目錄下名為 Dockerfile 的檔案。
    • 建構目錄:鏡像建構執行的工作目錄,即上下文環境(context),預設為代碼倉庫的根目錄。
    • 版本規則:定義鏡像建構生成的鏡像名稱,即鏡像版本(tag)。支援配置自定義字首,并組合加入“分支/标簽”,“更新時間”,“commit号” 三個環境變量。其中,更新時間為執行 docker tag 指令時建構服務的系統時間。
  4. 在“應用部署”步驟中,配置以下參數,單擊【确定】。
    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
    • 部署平台:傳遞流水線同時支援容器服務 TKE,彈性容器服務 EKS 及邊緣容器服務 Edge。本文以容器服務 TKE 為例。
    • 部署地域:目标叢集所在地域。選擇已建立的 TKE 标準叢集所在地域。
    • 部署叢集:目标叢集。選擇已建立的 TKE 标準叢集。
    • 部署方式:目前僅支援 “更新已有工作負載”。
    • 命名空間:已部署應用所在的命名空間。
    • 工作負載:已部署應用的關聯工作負載。
    • Pod容器:已部署應用的工作負載内的 Pod 容器。

完成以上配置後,可在“傳遞流水線” 清單頁檢視建立的流水線。

如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
更新容器應用

完成以上配置後,即可在更新應用代碼後,自動觸發鏡像建構,推送及應用更新。

  1. 更新源代碼

    更新源代碼,并送出至遠端代碼倉庫。

    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
  2. 執行流水線

    源代碼推送完成後,如符合鏡像配置中鏡像建構的觸發條件,将觸發流水線執行。可點選流水線檢視該流水線執行記錄,并檢視具體步驟進度。

    • Checkout:檢出代碼。
    • Docker Build:基于鏡像建構配置進行鏡像建構,并為生成的鏡像打上指定規則的Tag,如 v-{tag}-{date}-{commit}。
    • Docker Push:推送鏡像,自動推送至關聯鏡像倉庫内。
    • Deploy To TKE:使用最新推送的鏡像更新關聯工作負載及Pod 内同名鏡像。
  3. 檢視應用更新狀态

    前往容器服務 TKE 控制台,進入上述叢集及工作負載詳情頁,并選擇修訂曆史,可檢視應用更新狀态。如下圖所示,v1版本是一開始手動部署的nginx鏡像,流水線執行完成後更新為 v2 版本,使用的是自動建構出來的新的鏡像。

    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
    可以直接通路該應用服務,檢視是否已更新。通過檢視 Servce 暴露到公網的位址,檢視結果,可以看到服務已經更新。
    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps

場景二: 本地推送鏡像後,自動觸發部署

操作場景

在某些場景可能不需要使用 TCR 鏡像自動建構能力,但又希望可以在推送鏡像後能夠自動部署到容器平台。TCR 支援使用者配置本地推送鏡像後,通過觸發器的能力,自動觸發鏡像部署。

操作步驟

配置傳遞流水線

參考場景一配置建立一條傳遞流水線,與場景一的差別在“鏡像配置”步驟中,将”鏡像來源“選擇為”本地推送鏡像“。

如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
更新容器應用

完成配置後,即可在本地使用指令行指令推送鏡像,觸發自動部署。

  1. 本地推送鏡像

    通過快捷指令我們可以登入騰訊雲容器鏡像服務 Docker Registry 并向 Registry 中推送鏡像。例如這裡推送一個 nginx 鏡像。

    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
  2. 執行流水線

    本地推動鏡像完成後,如符合鏡像配置中鏡像建構的觸發條件,将觸發流水線執行,由于此時鏡像已經準備好,是以流水線隻需要執行自動部署。

    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps
  3. 檢視應用更新狀态

    同場景一,我們可以前往容器服務 TKE 控制台,進入上述叢集及工作負載詳情頁,并選擇修訂曆史,可檢視應用更新狀态,也可直接通路該應用服務,檢視是否已更新。

    如何使用容器鏡像服務 TCR 輕松實作容器 DevOps

總結

本文分兩個場景介紹了如何使用容器鏡像服務 TCR 實作容器 DevOps。場景一是代碼變動後,自動觸發鏡像建構以及應用部署;場景二是本地推送鏡像後自動觸發應用部署。想要快速上手使用容器鏡像服務 TCR、容器服務 TKE 實踐 CD 流程,本文是個很好的參考。

【騰訊雲原生】雲說新品、雲研新術、雲遊新活、雲賞資訊,掃碼關注同名公衆号,及時擷取更多幹貨!!

繼續閱讀