作者周明,騰訊云容器產品工程師,目前主要負責騰訊云TKE、TCR等產品控制臺的相關研發作業,
概述
當你使用云廠商提供的容器服務部署業務服務后,是否對交付部署全鏈路的效率有更高的需求,例如實作基于容器的 DevOps 服務,自動化地完成鏡像構建以及集群內容器的鏡像版本更新,騰訊云容器鏡像服務 TCR 提供云原生應用交付流水線功能,全鏈路可追蹤、可觀測、可自主配置,讓用戶可以輕松實作代碼提交變更后,自動觸發鏡像的構建和推送,并將鏡像更新到容器服務 TKE、彈性容器服務 EKS 等平臺創建的集群中,完成最終的交付,為企業級用戶在騰訊云上提供一體化云原生 DevOps 解決方案,本文主要介紹如何使用容器鏡像服務 TCR 輕松實作容器 DevOps,
容器鏡像服務簡介
容器鏡像服務(Tencent Container Registry,TCR)是騰訊云提供的安全獨享、高性能的容器鏡像托管分發服務,支持 Docker 鏡像、Helm Chart 存盤分發及鏡像安全掃描,為企業級客戶提供了細顆粒度的訪問權限管理和網路訪問控制,

容器DevOps業務流程
DevOps 是 Development 和 Operations 的組合詞,代表著重視「軟體開發人員(Dev)」和「IT 運維技術人員(Ops)」之間溝通合作的文化;旨在透過自動化「軟體交付」和「架構變更」的流程,使得構建、 測驗、發布軟體的程序能夠更加地快捷、頻繁和可靠,TCR 與容器服務 TKE、CODING DevOps 等產品無縫集成,在騰訊云上提供一體化云原生 DevOps 解決方案,容器 DevOps 的基本業務流程如圖所示,
如何使用容器鏡像服務輕松實作容器 DevOps
前提條件
-
準備 TCR 企業版實體,創建鏡像倉庫,
前往實體串列頁面,新建企業版實體,關于如何創建可參考檔案創建企業版實體,并在生成的實體中創建一個鏡像倉庫,
-
準備 TKE 標準集群,并部署容器應用
前往 容器服務控制臺,新建 TKE 標準集群,可參考檔案 創建集群,
當前容器服務 TKE 已支持在控制臺內選擇容器鏡像服務 TCR 企業版鏡像創建作業負載,同時,TKE 標準集群可安裝 TCR 專屬插件,實作內網及免密拉取 TCR 企業版內鏡像,參考檔案 使用 TCR 企業版實體內容器鏡像創建作業負載,
-
開通 CODING DevOps 服務,
場景一:代碼變動后自動構建鏡像,并觸發部署
操作場景
支持用戶配置流水線,在代碼變更后,自動構建鏡像,并觸發自動部署到容器平臺,
操作步驟
配置交付流水線
-
登錄容器鏡像服務 TCR 控制臺,選擇左側導航欄中的【交付流水線】,在“交付流水線”頁面中,單擊【新建】,

-
在“基本資訊”步驟中,配置以下引數,然后單擊【下一步:鏡像配置】,

- 流水線名稱:設定交付流水線名稱,
- 流水線描述:為交付流水線添加描述資訊,創建后可修改,
-
在“鏡像配置”步驟中,配置以下引數,單擊【下一步:應用部署】,

-
鏡像倉庫:選擇交付流水線關聯的鏡像倉庫,將自動配置鏡像構建及推送,用于托管應用部署所需要的鏡像,
-
鏡像版本過濾
:支持對執行交付流水線中鏡像的版本進行限制,可以過濾掉不需要執行部署的鏡像版本,
- 直接部署任意版本:推送到鏡像倉庫的任意版本鏡像都會被部署,
- 區域署指定名稱版本:需指定鏡像版本,多個版本可以使用逗號分隔,非指定版本不會部署,
- 區域署指定規則版本:需輸入正則運算式,
-
鏡像來源:支持平臺構建鏡像和本地推送鏡像,平臺構建鏡像允許用戶關聯不同代碼托管平臺的代碼倉庫,當代碼變動時自動觸發交付流水線,完成自動構建、推送鏡像以及應用部署;本地推送鏡像支持用戶在手動推送鏡像時,也能觸發應用部署,場景一中我們選擇平臺構建鏡像,
-
代碼源、代碼倉庫:選擇用于構建鏡像的代碼倉庫,流水線將拉取該代碼倉庫內源代碼進行編譯及構建,首次選擇需要授權,目前已支持GitHub、公有GitLab、私有GitLab、碼云以及工蜂等代碼托管平臺,
-
觸發規則
:鏡像構建被自動觸發的規則條件,目前支持以下四種場景:
- 推送到指定分支觸發:需指定分支,
- 推送新標簽時觸發構建:新建標簽并推送時觸發,
- 推送到分支時觸發構建:推送至任意分支時觸發,無需指定分支,
- 符合分支或標簽規則時構建:需輸入正則運算式,例如
^refs/heads/master$,可匹配 master 分支進行觸發,
-
Dockerfile 路徑:鏡像構建執行的操作基于代碼倉庫內的 Dockerfile,需指定該 Dockerfile 檔案的路徑,如不指定,默認為代碼倉庫根目錄下名為 Dockerfile 的檔案,
-
構建目錄:鏡像構建執行的作業目錄,即背景關系環境(context),默認為代碼倉庫的根目錄,
-
版本規則:定義鏡像構建生成的鏡像名稱,即鏡像版本(tag),支持配置自定義前綴,并組合加入“分支/標簽”,“更新時間”,“commit號” 三個環境變數,其中,更新時間為執行 docker tag 指令時構建服務的系統時間,
-
-
在“應用部署”步驟中,配置以下引數,單擊【確定】,

- 部署平臺:交付流水線同時支持容器服務 TKE,彈性容器服務 EKS 及邊緣容器服務 Edge,本文以容器服務 TKE 為例,
- 部署地域:目標集群所在地域,選擇已創建的 TKE 標準集群所在地域,
- 部署集群:目標集群,選擇已創建的 TKE 標準集群,
- 部署方式:當前僅支持 “更新已有作業負載”,
- 命名空間:已部署應用所在的命名空間,
- 作業負載:已部署應用的關聯作業負載,
- Pod容器:已部署應用的作業負載內的 Pod 容器,
完成以上配置后,可在“交付流水線” 串列頁查看新建的流水線,

更新容器應用
完成以上配置后,即可在更新應用代碼后,自動觸發鏡像構建,推送及應用更新,
-
更新源代碼
更新源代碼,并提交至遠端代碼倉庫,

-
執行流水線
源代碼推送完成后,如符合鏡像配置中鏡像構建的觸發條件,將觸發流水線執行,可點擊流水線查看該流水線執行記錄,并查看具體步驟進度,
- Checkout:檢出代碼,
- Docker Build:基于鏡像構建配置進行鏡像構建,并為生成的鏡像打上指定規則的Tag,如 v-{tag}-{date}-{commit},
- Docker Push:推送鏡像,自動推送至關聯鏡像倉庫內,
- Deploy To TKE:使用最新推送的鏡像更新關聯作業負載及Pod 內同名鏡像,
-
查看應用更新狀態
前往容器服務 TKE 控制臺,進入上述集群及作業負載詳情頁,并選擇修訂歷史,可查看應用更新狀態,如下圖所示,v1版本是一開始手動部署的nginx鏡像,流水線執行完成后更新為 v2 版本,使用的是自動構建出來的新的鏡像,

可以直接訪問該應用服務,查看是否已更新,通過查看 Servce 暴露到公網的地址,查看結果,可以看到服務已經更新,

場景二: 本地推送鏡像后,自動觸發部署
操作場景
在某些場景可能不需要使用 TCR 鏡像自動構建能力,但又希望可以在推送鏡像后能夠自動部署到容器平臺,TCR 支持用戶配置本地推送鏡像后,通過觸發器的能力,自動觸發鏡像部署,
操作步驟
配置交付流水線
參考場景一配置新建一條交付流水線,與場景一的區別在“鏡像配置”步驟中,將”鏡像來源“選擇為”本地推送鏡像“,

更新容器應用
完成配置后,即可在本地使用命令列指令推送鏡像,觸發自動部署,
-
本地推送鏡像
通過快捷指令我們可以登錄騰訊云容器鏡像服務 Docker Registry 并向 Registry 中推送鏡像,例如這里推送一個 nginx 鏡像,

-
執行流水線
本地推動鏡像完成后,如符合鏡像配置中鏡像構建的觸發條件,將觸發流水線執行,由于此時鏡像已經準備好,因此流水線只需要執行自動部署,

-
查看應用更新狀態
同場景一,我們可以前往容器服務 TKE 控制臺,進入上述集群及作業負載詳情頁,并選擇修訂歷史,可查看應用更新狀態,也可直接訪問該應用服務,查看是否已更新,

總結
本文分兩個場景介紹了如何使用容器鏡像服務 TCR 實作容器 DevOps,場景一是代碼變動后,自動觸發鏡像構建以及應用部署;場景二是本地推送鏡像后自動觸發應用部署,想要快速上手使用容器鏡像服務 TCR、容器服務 TKE 實踐 CD 流程,本文是個很好的參考,
【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/244614.html
標籤:其他
上一篇:使用騰訊云 Serverless 生成你的 GIT 代碼年歷!
下一篇:文本單詞one-hot編碼

