全部產品
Search
文件中心

Auto Scaling:通過雲效流水線自動構建和更新ECI伸縮組容器鏡像

更新時間:Mar 25, 2025

在您使用ECI伸縮組時,手動更新ECI執行個體中的容器鏡像可能會成為一個耗時且易出錯的任務。為瞭解決這一問題,您可以藉助Auto Scaling服務整合的雲效流水線功能,實現一鍵自動構建鏡像、更新鏡像和更新伸縮組中的執行個體。

實現原理

本方案通過整合雲效的流水線組件,在您更新業務代碼後,可以在伸縮組一鍵完成鏡像的構建、更新和部署,具體實現流程如下:

  1. 雲效流水線會將您配置的代碼倉庫的代碼打包構建成Docker鏡像。

  2. 在打包構建好鏡像後,將鏡像發布到容器鏡像倉庫(ACR)

  3. 在完成鏡像發布之後,雲效流水線會通過系統營運管理(OOS),將您的鏡像更新到您伸縮組執行個體中,同時您伸縮組執行個體配置來源中的鏡像也會得到更新。

更多雲效的資訊,請參見什麼是雲效

準備工作

如果您使用RAM帳號登入,請您確保您有以下許可權。如何為RAM使用者授權,請參見為RAM使用者授權

自訂許可權樣本

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ess:*",
                "cr:*",
                "rdc:*",
                "vpc:Describe*",
                "ecs:DescribeSecurityGroups",
                "oos:ListExecutions",
                "oos:ListTaskExecutions",
                "oos:GetExecutionTemplate",
                "eci:Describe*",
                "eci:ListUsage",
                "oss:GetExecutionTemplate",
                "ram:GetRole"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

配置環境

為完成一鍵構建部署鏡像到伸縮組,您需要先完成下述配置。

步驟一:建立阿里雲容器鏡像倉庫

重要

如果您已經有阿里雲容器鏡像倉庫,可以跳過該步驟。

建立容器鏡像倉庫後,您構建好的鏡像將會儲存在此倉庫。

  1. 登入Container Registry控制台

  2. 建立容器鏡像執行個體。

    1. 在頂部功能表列選擇地區。

      說明

      推薦容器鏡像倉庫的地區與伸縮組的地區保持一致,同地區可直接通過內網VPC網域名稱訪問。若不一致,需鏡像倉庫開通公網訪問能力,且伸縮組下執行個體具備公網訪問能力。

    2. 在執行個體列表頁面,點擊個人執行個體,等待執行個體建立完成。

      image

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

      image

  3. 設定完成Registry登入密碼之後,在左側導覽列點擊命名空間,點擊建立命名空間,按照介面提示完成命名空間的建立。

  4. 在左側導覽列選擇鏡像倉庫,然後點擊建立鏡像倉庫。按照介面提示完成參數配置。主要參數說明如下:

    • 倉庫資訊

      配置項

      說明

      樣本

      命名空間

      選擇步驟3建立的命名空間。

      ess_eci_test_namespace

      倉庫名稱

      自訂倉庫名稱。

      ess_eci_test_repo

      倉庫類型

      選擇私人

      私人

      摘要

      簡要描述建立鏡像倉庫的用途。

      test

    • 代碼源

      代碼源選擇本地倉庫,然後單擊建立鏡像倉庫

  5. 建立完成後,會進入倉庫的基本資料頁面,找到公網地址並複製,供後續步驟使用。

步驟二:建立ECI伸縮組

重要

如果您已經建立好伸縮組,可以跳過該步驟。

您可以通過以下兩種方式建立伸縮組:

  • 通過YAML建立。

  • 通過表單建立。

方式一:通過YAML建立

  1. 登入Auto Scaling控制台

  2. 在頂部功能表列選擇地區,在左側點擊伸縮組管理,點擊建立伸縮組

  3. 通過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

方式二:通過表單建立

  1. 登入Auto Scaling控制台

  2. 在頂部功能表列選擇地區。

  3. 建立伸縮組。

    1. 在左側點擊伸縮組管理,點擊建立伸縮組

    2. 通過表單建立頁簽下,完成伸縮組配置,然後點擊建立按鈕。本樣本採用以下配置,更多關於伸縮組的配置說明,請參見建立伸縮組

      配置項

      說明

      樣本

      伸縮組名稱

      輸入伸縮組名稱。

      ess-eci-test

      伸縮群組類型

      選擇ECI,表示伸縮組內的執行個體類型為ECI執行個體。

      ECI

      組內執行個體配置資訊來源

      先不指定自動建立執行個體的模板。伸縮組建立完成後,您需要繼續建立伸縮配置。

      從零開始建立

      組內最小執行個體數

      代表伸縮組最小有1個ECI執行個體。

      0

      組內最大執行個體數

      代表伸縮組最大有5個ECI執行個體。

      5

      專用網路

      該伸縮組下建立的ECS執行個體會在此專用網路下。

      vpc-test****-001

      選擇交換器

      您可以配置多個可用性區域的交換器以提高擴容成功率。

      vsw-test****

  4. 為伸縮組建立伸縮配置。

    1. 找到剛剛建立的伸縮組,點擊查看詳情進入伸縮組詳情頁。

    2. 執行個體配置來源頁簽下,點擊伸縮配置,點擊建立伸縮配置按鈕進入建立伸縮配置頁。

    3. 本執行個體採用以下配置,其他配置項均按預設配置,完成配置後點擊配置確認,點擊確認建立,更多關於建立伸縮配置的說明,請參見建立伸縮配置(ECI執行個體)

      配置項

      說明

      樣本

      付費模式

      根據您的需求,選擇付費模式。

      隨用隨付

      安全性群組

      根據您的需求,選擇安全性群組。

      sg-****oer

      容器配置 > 容器名稱

      輸入您的容器名稱。

      nginx

      容器配置 > 鏡像

      選擇容器的鏡像和版本。

      警告

      如果您已有業務鏡像,您可以將鏡像修改為您的業務鏡像。如果沒有,請使用樣本裡的鏡像。鏡像為空白將無法建立伸縮組。

      • 鏡像名稱:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx

      • 鏡像版本:latest

    4. 伸縮配置頁簽下找到剛才建立的伸縮配置,點擊啟用

步驟三:在Auto Scaling控制台配置雲效流水線

配置雲效流水線,使其可以自動完成鏡像的打包、發布和部署。

  1. 伸縮組管理頁面,點擊發行管理,點擊使用雲效發布

    image

  2. 選擇雲效企業,點擊下一頁

    重要

    如果尚未建立雲效企業,需要先點擊建立企業,根據介面提示完成雲效企業的建立。建立完成並選擇企業後,請按照介面提示完成授權操作。

  3. 配置流水線。

    1. 配置流水線源。在流水線源下,點擊添加,選擇範例程式碼源,點擊添加

      image

      說明

      如果您已經有自己業務的代碼源,您可以根據介面提示,選擇您的代碼倉庫地址。

    2. 添加鏡像構建任務。

      1. 鏡像構建任務下,點擊添加

      2. 鏡像構建任務 > 選擇服務鏈結接下,點擊建立服務鏈結接,會跳轉到雲效的服務鏈結接管理介面,點擊建立服務串連

        image

      3. 選擇Container Registry(ACR),點擊下一步,選擇服務授權(若沒有,點擊建立會跳轉到授權頁),點擊建立

      4. 回到鏡像構建任務頁面,在選擇服務串連參數下選擇之前建立的連結服務,在鏡像倉庫參數下選擇之前建立的鏡像倉庫,點擊添加

        image

    3. 添加部署任務。

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

        image

      2. 服務連線類型選擇Auto Scaling(ESS),點擊下一步,點擊建立

      3. 部署鏡像配置下,選擇鏡像構建並推送至阿里雲鏡像倉庫個人版.鏡像VPC地址,點擊添加

        說明

        如果您伸縮組的Region和鏡像服務的Region相同時,推薦優先選擇鏡像VPC地址,其他情況需要執行個體能夠訪問公網才能拉取鏡像。

    4. 點擊完成建立

使用:一鍵構建鏡像並部署到伸縮組

重要

如果其他RAM使用者需要使用該功能,請確保該RAM使用者在您的雲效企業下,同時具有該流水線的許可權。且該RAM使用者至少需要具有以下許可權:

  • 管理雲效(RDC)的許可權。

  • 存取控制(RAM)的唯讀許可權。

  • 管理系統營運管理(OOS)的許可權。

在您更新代碼後,點擊雲效發布運行按鈕,即可將新代碼打包並部署到您的伸縮組。

  1. 準備工作。

    • 已經完成環境配置。具體操作,可參見配置環境

    • 已經更新了您的代碼並推送到了代碼倉庫。

  2. 一鍵構建鏡像並部署。

    1. 進入伸縮組,點擊發行管理頁簽,點擊使用雲效發布頁簽,點擊運行按鈕,此時運行記錄列表裡會新增一條記錄。

      image

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

      image

      • 執行個體配置來源頁簽下,找到正在生效的伸縮配置,點擊修改進行伸縮配置的檢查。核實伸縮配置中的容器配置 > 鏡像是否已更新。

      • 手動觸發一次擴容,在執行個體列表頁簽下點擊新擴容出的ECI執行個體,確認新加入的ECI執行個體採用新鏡像。

      • 如果伸縮組存在正在啟動並執行ECI執行個體,您可以在執行個體列表頁簽下點擊該ECI執行個體的名稱,進入執行個體詳細頁面,確認已有ECI執行個體鏡像已更新。