一,引言
最近專案上讓開始學習AWS,作為一名合格的開發人員,當然也是學會利用Azure DevOps Pipeline 將應用程式部署到 AWS ECS(完全託管的容器編排服務)。我們要學會將應用程式部署到多雲的環境上,技多不壓身!!!!
首先肯定的是,我們必須先依賴Azure DevOps 進行應用程式構建 docker images 。並且將 dockre image 推送到 AWS ECR(完全託管的容器登錄檔)
二,正文
1,建立AWS ECR 容器登錄檔
登陸到AWS 控制檯後,搜尋 ECR,在東京區 “ap-northeast-1” 建立私有映象倉庫
點選 “Create repository” 建立一個新的映象倉庫
輸入相關引數
Visibility settings:“Private”
Repository name:“cnbateblogweb”
點選 “Create repository” 建立映象倉庫
建立完成後,可以看到建立好的 “cnbateblogweb” 的私有映象倉庫資訊
2,建立AWS 訪問控制的Key
AWS 的訪問控制許可權設計的很全面,可以精細控制到具體某個服務的操作動作,我們如果想利用Azure DevOps Pipeline 推送映象到AWS ECR,那麼我們就需要配置 Service Connection。所以就需要我們提前配置好 AWS access_key 和 secret_key
我這邊為了方便演示,就直接為主賬號,也就是 root 賬號建立 access_key。(注意,如果是其他子賬號資訊,就要確保子賬號必須有push images 到 ECR 的許可權資訊)
點選控制檯在右上角的個人賬號,在下拉選擇項中點選 “My Security Credentials”。
展開Access Keys(access key ID and secret access key) ,點選 “Create New Access key”
下載,儲存 Access key,並且檢視到剛剛建立好的機密資訊
3,設定 Azure DevOps Pipeline
前置條件1,需要安裝 “AWS Tookit for AzueDevOps” 到 Azure DevOps。Extensions for Visual Studio family of products | Visual Studio Marketplace
選擇將 “AWS Tookit for Azure DevOps” 安裝到 Azure DevOps,等待下載完成就可以了。
接下來我們需要登陸到 Azure DevOps 上建立新的專案
Project name:“CnBateBlogWeb_AWS”
Visibility:“Private”
Advanced Setting=》 Work item process:“Agile”
點選 “Create”
建立好專案之後,我們先把連線到 AWS 的 Service Connection 配置好
點選 “Project setting”,設定服務連線。
選擇 “Pipeline =》Service connection”,並點選 "New service connection" 建立一個新的服務連線
選擇新的連線型別 “AWS”,點選 “Next”
輸入前面在 AWS 控制檯上建立好的 access_key,secret_key
service connection name:“CnBateBlogWeb_ServiceConnection”
點選 “Save” 進行儲存操作
接下來需要建立 Pipeline,選擇 “Pipelines”,點選 “Create Pipeline”
選擇使用 “Use the classic editor” 建立 Pipeline
我們的測試專案是放在GitHub上的,大家可以自行選擇自己的專案的實現儲存倉庫,點選 “Continue”。
在選擇輸入搜尋 “docker”,並選擇 “Docker container” 後,點選 “Apply”
因為我們要把構建好的 docker image 推送的 AWS ECR 中,所以我們就得先刪除掉預設的 “push an image” 這個task
目前只留一個 "Build an image" 的就task,可以看到當前 Task 的引數資訊
Container Register 可以選擇:“Container Register”
Docker Register Service Connection 不需要新增(當前任務是構建 images,並且我們目標是AWS ECR,是不需要新增 Docker Register Service Connection)
Docker File 選擇專案中 dockerfile 檔案路徑。
Image Name :需要我們多多注意一下,當前構建的 images 映象的命名是 Repository 名稱+BuildId
點選圖中的 “+”,新增新的Task
搜尋框輸入關鍵字 “ECR push”,選擇 “Amazon ECR Push”,並點選 “Apply”
修改相關引數
Display name:“Push Image To AWS ECR”
AWS Credentials:“CnBateBlogWeb_ServiceConnection”
AWS Region 選擇:“Asia Pacific(Tokyo)[ap-northeast-1]”
Source Image Name:“$(image_name)/cnbateblogweb”
Source Image Tag:"$(Build.BuildId)"
Target Repository Name:“cnbateblogweb”(注意,這個名稱必須跟AWS 控制檯上建立的ECR 的名稱一致)
Target Repository Tag:“$(Build.BuildId)”
確定完引數後,點選 “Save & queue”
選擇執行Pipeline 的代理池等資訊後,點選 “Run”
等待Pipeline執行完成後,可以看到執行成功
檢視詳細資訊得知,Azure DevOps 以及將映象Tag 為 28 的 “cnbateblogweb” 的映象推送到 AWS ECR 中了
我們可以回到AWS 控制檯檢視ECR的狀況
bingo !!!! 完成。?????????
三,結尾
今天的操作有些騷,本來好好的講解Azure和 Azure DevOps 相關的內容,卻發了一篇AWS 相關的文章!!!!其實各位,AWS在全球所佔的份額還是很高的。不管是 Azure 還是 AWS,我們都是需要學習的。由條件的同學多練習練習,動手操作一番才能更熟練的掌握。關於今天的內容就差不多到此結束,下一篇我們進行講解如何利用 Azure DevOps 部署應用程式到 AWS ECS。
文章來自博主本人自己的部落格:https://allenmasters.com/post/2021/5/26/azure-devopsazure-devops-pipeline-aws-ecr
歡迎大家關注博主的部落格:https://allenmasters.com/
作者:Allen
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。