本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
在您使用ECI伸縮組時,手動更新ECI實例中的容器鏡像可能會成為一個耗時且易出錯的任務。為了解決這一問題,您可以借助彈性伸縮服務集成的云效流水線功能,實現一鍵自動構建鏡像、更新鏡像和更新伸縮組中的實例。
實現原理
本方案通過集成云效的流水線組件,在您更新您的業務代碼后,可以在伸縮組一鍵完成鏡像的構建更新和部署,具體實現流程如下:
云效流水線會將您配置的代碼倉庫的代碼打包構建成Docker鏡像。
在打包構建好鏡像后,將鏡像發布到容器鏡像倉庫(ACR)。
在完成鏡像發布之后,云效流水線會通過系統運維管理(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"
}
]
}
配置環境
為完成一鍵構建部署鏡像到伸縮組,您需要先完成下述配置。
步驟一:創建阿里云容器鏡像倉庫
如果您已經有阿里云容器鏡像倉庫,可以跳過該步驟。
創建容器鏡像倉庫后,您構建好的鏡像將會存儲在此倉庫。
登錄容器鏡像服務控制臺。
創建容器鏡像實例。
在頂部菜單欄選擇地域。
說明推薦容器鏡像倉庫的地域與伸縮組的地域保持一致,同地域可直接通過內網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
組內最小實例數。當伸縮組的當前實例數小于伸縮最小實例數時,彈性伸縮服務會自動添加實例,使得伸縮組的當前實例數等于伸縮最小實例數。
0
k8s.aliyun.com/ess-scaling-group-max-size
組內最大實例數。當伸縮組的當前實例數大于伸縮最大實例數時,彈性伸縮服務會自動移出實例,使得伸縮組的當前實例數等于伸縮最大實例數。
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
在伸縮配置頁簽下找到剛才創建的伸縮配置,點擊啟用。
步驟三:在彈性伸縮控制臺配置云效流水線
配置云效流水線,使其可以自動完成鏡像的打包、發布和部署。
在伸縮組管理頁面,點擊發布管理,點擊使用云效發布。
選擇云效企業,點擊下一頁。
重要如果尚未創建云效企業,需要先點擊創建企業,根據界面提示完成云效企業的創建。創建完成在選擇企業后,請按照界面提示完成授權操作。
配置流水線。
配置流水線源。在流水線源下,點擊添加,選擇示例代碼源,點擊添加。
說明如果您已經有自己業務的代碼源,您可以根據界面提示,選擇您的代碼倉庫地址。
添加鏡像構建任務。
在鏡像構建任務下,點擊添加。
在
下,點擊創建服務鏈接,會跳轉到云效的服務鏈接管理界面,點擊新建服務連接。選擇容器鏡像服務(ACR),點擊下一步,選擇服務授權(若沒有,點擊新建會跳轉到授權頁),點擊創建。
回到鏡像構建任務頁面,在選擇服務連接參數下選擇之前創建的鏈接服務,在鏡像倉庫參數下選擇之前創建的鏡像倉庫,點擊添加。
添加部署任務。
在部署任務下,點擊添加,在選擇服務連接配置下,點擊創建服務鏈接。
服務連接類型選擇彈性伸縮(ESS),點擊下一步,點擊創建。
在部署鏡像配置下,選擇鏡像構建并推送至阿里云鏡像倉庫個人版.鏡像VPC地址,點擊添加。
說明如果您伸縮組的Region和鏡像服務的Region相同時,推薦優先選擇鏡像VPC地址,其他情況需要實例能夠訪問公網才能夠拉取鏡像。
點擊完成新建。
使用:一鍵構建鏡像并部署到伸縮組
如果其他RAM用戶需要使用該功能,請確保該RAM用戶在您的云效企業下,同時具有該流水線的權限。且該RAM用戶至少需要具有以下權限:
管理云效(RDC)的權限。
只讀訪問訪問控制(RAM)的權限。
管理系統運維管理(OOS)的權限。
在您更新代碼后,點擊云效發布的運行按鈕,即可將新代碼打包并部署到您的伸縮組。
準備工作。
已經環境配置。具體操作,可參見配置環境。
已經更新了您的代碼并推送到了代碼倉庫。
一鍵構建鏡像并部署。
進入伸縮組,點擊發布管理頁簽,點擊使用云效發布頁簽,點擊運行按鈕,此時運行記錄列表里會新增一條記錄。
在運行記錄列表,點擊詳細按鈕查看流水線詳細信息,等待流水線執行完畢。流水線執行結束后,您的伸縮組中的實例和伸縮配置將會自動更新,相應的新擴容出的實例也將采用新鏡像。
在實例配置來源頁簽下,找到正在生效的伸縮配置,點擊修改進行伸縮配置的檢查。核實伸縮配置中的
是否已更新。手動觸發一次擴容,在實例列表頁簽下點擊新擴容出的ECI實例,確認新加入的ECI實例采用新鏡像。
如果伸縮組存在正在運行的ECI實例,您可以在實例列表頁簽下點擊該ECI實例的名稱,進入實例詳細頁面,確認已有ECI實例鏡像已更新。