在您使用ECI伸縮組時,手動更新ECI執行個體中的容器鏡像可能會成為一個耗時且易出錯的任務。為瞭解決這一問題,您可以藉助Auto Scaling服務整合的雲效流水線功能,實現一鍵自動構建鏡像、更新鏡像和更新伸縮組中的執行個體。
實現原理
本方案通過整合雲效的流水線組件,在您更新業務代碼後,可以在伸縮組一鍵完成鏡像的構建、更新和部署,具體實現流程如下:
雲效流水線會將您配置的代碼倉庫的代碼打包構建成Docker鏡像。
在打包構建好鏡像後,將鏡像發布到容器鏡像倉庫(ACR)。
在完成鏡像發布之後,雲效流水線會通過系統營運管理(OOS),將您的鏡像更新到您伸縮組執行個體中,同時您伸縮組執行個體配置來源中的鏡像也會得到更新。
更多雲效的資訊,請參見什麼是雲效。
準備工作
如果您使用RAM帳號登入,請您確保您有以下許可權。如何為RAM使用者授權,請參見為RAM使用者授權。
配置環境
為完成一鍵構建部署鏡像到伸縮組,您需要先完成下述配置。
步驟一:建立阿里雲容器鏡像倉庫
如果您已經有阿里雲容器鏡像倉庫,可以跳過該步驟。
建立容器鏡像倉庫後,您構建好的鏡像將會儲存在此倉庫。
建立容器鏡像執行個體。
在頂部功能表列選擇地區。
說明推薦容器鏡像倉庫的地區與伸縮組的地區保持一致,同地區可直接通過內網VPC網域名稱訪問。若不一致,需鏡像倉庫開通公網訪問能力,且伸縮組下執行個體具備公網訪問能力。
在執行個體列表頁面,點擊個人執行個體,等待執行個體建立完成。

建立完成後會進入如下介面,點擊設定Registry登入密碼,並按照介面提示完成密碼設定。

設定完成Registry登入密碼之後,在左側導覽列點擊命名空間,點擊建立命名空間,按照介面提示完成命名空間的建立。
在左側導覽列選擇鏡像倉庫,然後點擊建立鏡像倉庫。按照介面提示完成參數配置。主要參數說明如下:
倉庫資訊
配置項
說明
樣本
命名空間
選擇步驟3建立的命名空間。
ess_eci_test_namespace
倉庫名稱
自訂倉庫名稱。
ess_eci_test_repo
倉庫類型
選擇私人。
私人
摘要
簡要描述建立鏡像倉庫的用途。
test
代碼源
代碼源選擇本地倉庫,然後單擊建立鏡像倉庫。
建立完成後,會進入倉庫的基本資料頁面,找到公網地址並複製,供後續步驟使用。
步驟二:建立ECI伸縮組
如果您已經建立好伸縮組,可以跳過該步驟。
您可以通過以下兩種方式建立伸縮組:
通過YAML建立。
通過表單建立。
方式一:通過YAML建立
在頂部功能表列選擇地區,在左側點擊伸縮組管理,點擊建立伸縮組。
在通過YAML建立頁簽下,完成伸縮組配置後點擊建立。本樣本採用以下配置。更多關於通過YAML建立伸縮組的配置說明,請參見通過Kubernetes YAML檔案方式配置ECI類型的伸縮組。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-demo annotations: k8s.aliyun.com/ess-scaling-group-name: ess-eci-test k8s.aliyun.com/ess-scaling-group-min-size: 0 k8s.aliyun.com/ess-scaling-group-max-size: 5 spec: selector: matchLabels: app: nginx-demo replicas: 0 template: metadata: labels: app: nginx-demo annotations: k8s.aliyun.com/eci-with-eip: false spec: containers: - name: nginx image: registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:latest ports: - containerPort: 80 name: http - containerPort: 443 name: https resources: requests: memory: 0.05Gi cpu: 50m limits: memory: 1Gi cpu: '1'警告如果您已有業務鏡像,您可以將鏡像修改為您的業務鏡像。如果沒有,請使用樣本裡的鏡像,後續步驟運行流水線會自動替換該鏡像。鏡像為空白將無法建立伸縮組。
參數說明:
參數名
說明
樣本
k8s.aliyun.com/ess-scaling-group-name
伸縮組名稱
ess-eci-test
k8s.aliyun.com/ess-scaling-group-min-size
組內最小執行個體數。當伸縮組的當前執行個體數小於伸縮最小執行個體數時,Auto Scaling服務會自動添加執行個體,使得伸縮組的當前執行個體數等於伸縮最小執行個體數。
0
k8s.aliyun.com/ess-scaling-group-max-size
組內最大執行個體數。當伸縮組的當前執行個體數大於伸縮最大執行個體數時,Auto Scaling服務會自動移出執行個體,使得伸縮組的當前執行個體數等於伸縮最大執行個體數。
5
k8s.aliyun.com/eci-with-eip
是否自動建立並綁定EIP
false
方式二:通過表單建立
在頂部功能表列選擇地區。
建立伸縮組。
在左側點擊伸縮組管理,點擊建立伸縮組。
在通過表單建立頁簽下,完成伸縮組配置,然後點擊建立按鈕。本樣本採用以下配置,更多關於伸縮組的配置說明,請參見建立伸縮組。
配置項
說明
樣本
伸縮組名稱
輸入伸縮組名稱。
ess-eci-test
伸縮群組類型
選擇ECI,表示伸縮組內的執行個體類型為ECI執行個體。
ECI
組內執行個體配置資訊來源
先不指定自動建立執行個體的模板。伸縮組建立完成後,您需要繼續建立伸縮配置。
從零開始建立
組內最小執行個體數
代表伸縮組最小有1個ECI執行個體。
0
組內最大執行個體數
代表伸縮組最大有5個ECI執行個體。
5
專用網路
該伸縮組下建立的ECS執行個體會在此專用網路下。
vpc-test****-001
選擇交換器
您可以配置多個可用性區域的交換器以提高擴容成功率。
vsw-test****
為伸縮組建立伸縮配置。
找到剛剛建立的伸縮組,點擊查看詳情進入伸縮組詳情頁。
在執行個體配置來源頁簽下,點擊伸縮配置,點擊建立伸縮配置按鈕進入建立伸縮配置頁。
本執行個體採用以下配置,其他配置項均按預設配置,完成配置後點擊配置確認,點擊確認建立,更多關於建立伸縮配置的說明,請參見建立伸縮配置(ECI執行個體)。
配置項
說明
樣本
付費模式
根據您的需求,選擇付費模式。
隨用隨付
安全性群組
根據您的需求,選擇安全性群組。
sg-****oer
輸入您的容器名稱。
nginx
選擇容器的鏡像和版本。
警告如果您已有業務鏡像,您可以將鏡像修改為您的業務鏡像。如果沒有,請使用樣本裡的鏡像。鏡像為空白將無法建立伸縮組。
鏡像名稱:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx
鏡像版本:latest
在伸縮配置頁簽下找到剛才建立的伸縮配置,點擊啟用。
步驟三:在Auto Scaling控制台配置雲效流水線
配置雲效流水線,使其可以自動完成鏡像的打包、發布和部署。
在伸縮組管理頁面,點擊發行管理,點擊使用雲效發布。

選擇雲效企業,點擊下一頁。
重要如果尚未建立雲效企業,需要先點擊建立企業,根據介面提示完成雲效企業的建立。建立完成並選擇企業後,請按照介面提示完成授權操作。
配置流水線。
配置流水線源。在流水線源下,點擊添加,選擇範例程式碼源,點擊添加。
說明如果您已經有自己業務的代碼源,您可以根據介面提示,選擇您的代碼倉庫地址。
添加鏡像構建任務。
在鏡像構建任務下,點擊添加。
在下,點擊建立服務鏈結接,會跳轉到雲效的服務鏈結接管理介面,點擊建立服務串連。

選擇Container Registry(ACR),點擊下一步,選擇服務授權(若沒有,點擊建立會跳轉到授權頁),點擊建立。
回到鏡像構建任務頁面,在選擇服務串連參數下選擇之前建立的連結服務,在鏡像倉庫參數下選擇之前建立的鏡像倉庫,點擊添加。

添加部署任務。
在部署任務下,點擊添加,在選擇服務串連配置下,點擊建立服務鏈結接。

服務連線類型選擇Auto Scaling(ESS),點擊下一步,點擊建立。
在部署鏡像配置下,選擇鏡像構建並推送至阿里雲鏡像倉庫個人版.鏡像VPC地址,點擊添加。
說明如果您伸縮組的Region和鏡像服務的Region相同時,推薦優先選擇鏡像VPC地址,其他情況需要執行個體能夠訪問公網才能拉取鏡像。
點擊完成建立。
使用:一鍵構建鏡像並部署到伸縮組
如果其他RAM使用者需要使用該功能,請確保該RAM使用者在您的雲效企業下,同時具有該流水線的許可權。且該RAM使用者至少需要具有以下許可權:
管理雲效(RDC)的許可權。
存取控制(RAM)的唯讀許可權。
管理系統營運管理(OOS)的許可權。
在您更新代碼後,點擊雲效發布的運行按鈕,即可將新代碼打包並部署到您的伸縮組。
準備工作。
已經完成環境配置。具體操作,可參見配置環境。
已經更新了您的代碼並推送到了代碼倉庫。
一鍵構建鏡像並部署。
進入伸縮組,點擊發行管理頁簽,點擊使用雲效發布頁簽,點擊運行按鈕,此時運行記錄列表裡會新增一條記錄。

在運行記錄列表,點擊詳細按鈕查看流水線詳細資料,等待流水線執行完畢。流水線執行結束後,您的伸縮組中的執行個體和伸縮配置將會自動更新,相應地,新擴容出的執行個體也將採用新鏡像。

在執行個體配置來源頁簽下,找到正在生效的伸縮配置,點擊修改進行伸縮配置的檢查。核實伸縮配置中的是否已更新。
手動觸發一次擴容,在執行個體列表頁簽下點擊新擴容出的ECI執行個體,確認新加入的ECI執行個體採用新鏡像。
如果伸縮組存在正在啟動並執行ECI執行個體,您可以在執行個體列表頁簽下點擊該ECI執行個體的名稱,進入執行個體詳細頁面,確認已有ECI執行個體鏡像已更新。