計算巢通過檔案部署物解決指令碼部署中軟體資源下載的問題(雲資源無公網訪問或下載源不穩定)。本文為您介紹檔案部署物使用情境與原理,以及如何建立和使用檔案部署物。
使用背景
-
為什麼使用檔案部署物?
計算巢通過檔案部署物解決了雲資源無公網訪問、大檔案或不穩定源導致的軟體下載問題。服務商將檔案上傳至指定OSS Bucket後,系統自動複製到多個地區,並在部署過程中自動替換模板中的標識位為對應地區的內網OSS連結,確保了資料轉送的穩定性和安全性。
-
檔案部署物的優勢?
服務商僅需在模板中撰寫關聯標識位,並在計算巢控制台的服務詳情頁面設定檔部署物關聯即可。
-
檔案複製:計算巢會將服務商上傳的檔案複製到計算巢的通用帳號下,在此帳號下的OSS Bucket中完成檔案多地區複製。
-
檔案關聯:計算巢會識別模板中標識位(
{{ computeneset::file::xxx}}),在建立服務時將標識位與檔案部署物關聯。使用者部署時,計算巢會識別使用者的部署地區,自動選擇該地區對應的OSS URL替換模板的標識位,實現檔案URL的動態替換。 -
許可權管理:部署物許可權跟隨服務,若未關聯服務,部署物許可權為私人。若關聯至少一個公開許可權服務,則檔案部署物許可權為公開。若全部關聯私人許可權服務,則檔案部署物許可權為私人。
-
內網下載:計算巢通過內網下載檔案部署物,在標識位替換時,計算巢預設會自動產生一個內網OSS的HTTP地址替換標識位。通過內網下載,鏈路穩定安全。
-
使用說明
服務ROS模板中定義檔案關聯的標識位,並在檔案關聯中設定檔案部署物,在建立服務執行個體時,計算巢會自動識別模板中的標識位,並根據服務執行個體部署地區,自動替換成部署物對應地區的檔案URL。
檔案關聯標識位的固定運算式如下:
-
(推薦)若部署物的檔案URL為私網URL時,檔案的固定運算式為:
{{ computenest::file:: ${key}}}。 -
若部署物的檔案URL為公網URL時,檔案的固定運算式為:
{{ computenest::publicfile::${key}}}。說明其中
${key}為任意單詞,中間不可用空格隔開。
使用檔案部署物進行部署的樣本YAML如下:
-
模板中定義檔案關聯標識位時,推薦使用單引號('')或雙引號(“”)將標識位的內容引起來。
-
如果使用wget命令下載,推薦加入-O參數指定輸出檔案名。
-
常用模板定義標識位。
以
userData中下載檔案並將檔案的名稱修改為TestFirst.txt和TestSecond.tar為例,展示模板中定義的標識位。TiDBServer: Type: ALIYUN::ECS::InstanceGroup Properties: …… UserData: Fn::Sub: - | #!/bin/sh sleep 10 wget '{{ computenest::file::DemoFirst }}' -O TestFirst.txt wget '{{ computenest::file::DemoSecond }}' -O TestSecond.tar …… -
資料庫類型
MigrateTask中定義標識位。SQLDump: Type: ALIYUN::RDS::MigrateTask Properties: …… DBName: mytest DBInstanceId: Fn::GetAtt: - Database - DBInstanceId OssObjectPositions: {{ computenest::file::DemoFirst }}
建立和使用
前提條件
準備您要上傳的檔案。
建立檔案部署物
-
配置部署物的基本資料。
-
登入計算巢控制台,在左側導覽列選擇服務部署物,並在部署物地區中單擊建立部署物。
-
在部署物資訊地區,完成部署物資訊填寫。
配置項
說明
部署物名稱
由中文、數字、英文及底線組成,長度在 3~128 個字元之間,一個中文字等於 2 個字元,部署物名稱建立後不可修改。
部署物版本名稱
由中文、數字、英文及底線組成,長度在 3~50 個字元之間,一個中文字等於 2 個字元。
部署物描述
簡介長度在10-500個字元之間,一個中文字等於2個字元。
資源群組
選擇建立的部署所歸屬的資源群組名稱。
資源群組對您擁有的雲資源從用途、許可權、歸屬等維度進行分組,實現企業內部多使用者、多專案的資源分級管理。更多資訊,請參見資源群組。
標籤配置
選擇或填寫完整的標籤鍵和標籤值,為部署物定標籤。每個資源最多可綁定20列標籤。若無可選的標籤鍵和標籤值,可建立自訂標籤。建立自訂標籤的詳細操作,請參見建立並綁定自訂標籤。
-
-
設定檔部署物。
-
在部署物內容區塊,選擇部署物類型為檔案。
-
選擇上傳檔案的地區,並根據您上傳的本地檔案大小,選擇上傳本地檔案或上傳超過5G大檔案。
-
(可選)選擇是否配置指令碼命令功能,配置指令碼命令主要用於服務執行個體升級功能,檔案關聯功能不需要配置指令碼命令。
-
在設定分發地區,檔案部署物預設全部地區分發。
-
單擊發布部署物。
部署物發布後,不可對目前的版本內容進行修改,只能通過建立新版本或新部署物的方式進行修改。
-
-
查看部署物。
-
返回服務部署物頁面,單擊部署物名稱,進入部署物詳情介面查看部署進度。
-
當狀態為可用後單擊查看,會擷取到檔案部署物的分髮結果。
分髮結果中包含分發地區及對應的分發連結,展示部署物已分發到的各地區(如華北 2(北京)、華北 6(烏蘭察布)等)的記錄。
-
使用檔案部署物
本節以建立私人化部署服務為例,重點介紹在建立服務時檔案部署物相關配置。
-
登入計算巢控制台。
-
在左側導覽列中選擇我的服務,在我建立的服務地區下單擊建立新服務。
-
在建立新服務頁面,建立服務的方式選擇為自訂建立服務,服務類型選擇為私有部署服務,單擊下一步:佈建服務。
-
根據提示填入服務基本資料,在錄入模板中根據實際情況選擇ROS模板。
當ROS模板中存在
{{ computenest::file::test }}或者{{ computenest::publicfile::test }},則在部署物關聯區塊中可設定檔案關聯。 -
單擊設定檔案關聯下方的關聯部署物,在彈框中選擇部署物和版本單擊確定完成。
彈框中 關聯標誌符 欄位的值為
{{ computenest::file::springboot }},僅可選擇檔案類型的部署物。完成後,關聯標誌符 顯示對應的模板變數(如
{{ computenest::file::springboo…),關聯部署物 顯示所選部署物名稱。 -
完成服務的建立,並測試通過後, 請根據計算巢服務的發布審核標準進行自檢,並提交審核。發布審核標準的詳細資料,請參見發布審核標準。
-
審核通過後,上線服務。詳細步驟,請參見上線服務。
當使用者建立了服務執行個體後,計算巢會將模板中的內容根據服務執行個體部署地區和部署物自動替換為對應部署地區的檔案URL。
-
常用模板定義標識位替換後的結果如下所示。
-
當部署物的檔案URL為私網URL時,替換結果如下。
Resources: ECSInstances: Type: 'ALIYUN::ECS::InstanceGroup' Properties: UserData: | #!/bin/sh mkdir /root/lzq cd /root/lzq wget 'https://computenest-artifacts-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/xxx/cn-zhangjiakou/xxx/樣本文本.txt' wget 'https://computenest-artifacts-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/xxx/cn-guangzhou/xxx/changes.txt' wget {{DemoThird}} SystemDiskCategory: -
當部署物的檔案URL為公網URL時,替換結果如下。
Properties: UserData: | #!/bin/sh mkdir /root/lzq cd /root/lzq wget 'https://computenest-artifacts-cn-wulanchabu.oss-cn-wulanchabu.aliyuncs.com/xxx/cn-beijing/xxx/1976虛擬背景.jpg' wget {{DemoThird}} SystemDiskCategory: Ref: SystemDiskCategory VpcId:
-
-
資料庫類型MigrateTask中,計算巢會將檔案部署物的URL更改為
OssObjectPositions參數的格式。由於OssObjectPositions參數是由OSS Endpoint地址、OSS Bucket名稱和OSS上的備份檔案Key三段組成,每段中間用英文冒號
:分隔(例如:oss-ap-southeast-1.aliyuncs.com:rdsmssqlsingapore:autotest_2008R2_TestMigration_FULL.bak,更多資訊,請參見ALIYUN::RDS::MigrateTask),因此計算巢會將檔案部署物的URL替換成該格式,如下所示。}, "OssObjectPositions": "oss-cn-hangzhou-internal.aliyuncs.com:computenest-artifacts-cn-hangzhou:xxx/cn-zhangjiakou/xxx/樣本文本.txt", "DBInstanceId": { ... }
-