文件部署物
計算巢通過文件部署物解決腳本部署中軟件資源下載的問題(云資源無公網(wǎng)訪問或下載源不穩(wěn)定)。本文為您介紹文件部署物使用場景與原理,以及如何創(chuàng)建和使用文件部署物。
使用背景
為什么使用文件部署物?
計算巢通過文件部署物解決了云資源無公網(wǎng)訪問、大文件或不穩(wěn)定源導致的軟件下載問題。服務商將文件上傳至指定OSS Bucket后,系統(tǒng)自動復制到多個區(qū)域,并在部署過程中自動替換模板中的標識位為對應區(qū)域的內(nèi)網(wǎng)OSS鏈接,確保了數(shù)據(jù)傳輸?shù)姆€(wěn)定性和安全性。
文件部署物的優(yōu)勢?
服務商僅需在模板中撰寫關(guān)聯(lián)標識位,并在計算巢控制臺的服務詳情頁面配置文件部署物關(guān)聯(lián)即可。
文件復制:計算巢會將服務商上傳的文件復制到計算巢的通用賬號下,在此賬號下的OSS Bucket中完成文件多地域復制。
文件關(guān)聯(lián):計算巢會識別模板中標識位(
{{ computeneset::file::xxx}}
),在創(chuàng)建服務時將標識位與文件部署物關(guān)聯(lián)。用戶部署時,計算巢會識別用戶的部署地域,自動選擇該地域?qū)腛SS URL替換模板的標識位,實現(xiàn)文件URL的動態(tài)替換。權(quán)限管理:部署物權(quán)限跟隨服務,若未關(guān)聯(lián)服務,部署物權(quán)限為私有。若關(guān)聯(lián)至少一個公開權(quán)限服務,則文件部署物權(quán)限為公開。若全部關(guān)聯(lián)私有權(quán)限服務,則文件部署物權(quán)限為私有。
內(nèi)網(wǎng)下載:計算巢通過內(nèi)網(wǎng)下載文件部署物,在標識位替換時,計算巢默認會自動生成一個內(nèi)網(wǎng)OSS的HTTP地址替換標識位。通過內(nèi)網(wǎng)下載,鏈路穩(wěn)定安全。
使用說明
服務ROS模板中定義文件關(guān)聯(lián)的標識位,并在文件關(guān)聯(lián)中設置文件部署物,在創(chuàng)建服務實例時,計算巢會自動識別模板中的標識位,并根據(jù)服務實例部署地域,自動替換成部署物對應地域的文件URL。
文件關(guān)聯(lián)標識位的固定表達式如下:
(推薦)若部署物的文件URL為私網(wǎng)URL時,文件的固定表達式為:
{{ computenest::file:: ${key}}}
。若部署物的文件URL為公網(wǎng)URL時,文件的固定表達式為:
{{ computenest::publicfile::${key}}}
。說明其中
${key}
為任意單詞,中間不可用空格隔開。
使用文件部署物進行部署的示例YAML如下:
模板中定義文件關(guān)聯(lián)標識位時,推薦使用單引號('')或雙引號(“”)將標識位的內(nèi)容引起來。
如果使用wget命令下載,推薦加入-O參數(shù)指定輸出文件名。
常用模板定義標識位。
以
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 ……
數(shù)據(jù)庫類型
MigrateTask
中定義標識位。SQLDump: Type: ALIYUN::RDS::MigrateTask Properties: …… DBName: mytest DBInstanceId: Fn::GetAtt: - Database - DBInstanceId OssObjectPositions: {{ computenest::file::DemoFirst }}
創(chuàng)建和使用
前提條件
準備您要上傳的文件。
創(chuàng)建文件部署物
配置部署物的基本信息。
登錄計算巢控制臺,在左側(cè)導航欄選擇服務部署物,并在部署物區(qū)域中單擊創(chuàng)建部署物。
在部署物信息區(qū)域,完成部署物信息填寫。
配置項
說明
部署物名稱
由中文、數(shù)字、英文及下劃線組成,長度在 3~50 個字符之間,一個中文字等于 2 個字符,部署物名稱創(chuàng)建后不可修改。
部署物版本名稱
由中文、數(shù)字、英文及下劃線組成,長度在 3~50 個字符之間,一個中文字等于 2 個字符。
部署物描述
簡介長度在10-500個字符之間,一個中文字等于2個字符。
資源組
選擇創(chuàng)建的部署所歸屬的資源組名稱。
資源組對您擁有的云資源從用途、權(quán)限、歸屬等維度進行分組,實現(xiàn)企業(yè)內(nèi)部多用戶、多項目的資源分級管理。更多信息,請參見資源組。
標簽配置
選擇或填寫完整的標簽鍵和標簽值,為部署物定標簽。每個資源最多可綁定20條標簽。若無可選的標簽鍵和標簽值,可創(chuàng)建自定義標簽。創(chuàng)建自定義標簽的詳細操作,請參見創(chuàng)建并綁定自定義標簽。
配置文件部署物。
在部署物內(nèi)容區(qū)塊,選擇部署物類型為文件部署物。
上傳部署地域選擇上傳文件的地域,并根據(jù)您上傳的本地文件大小,選擇上傳本地文件或上傳超過5G大文件。
單擊獲取訪問憑證,會彈出本地環(huán)境上傳或ECS內(nèi)網(wǎng)環(huán)境上傳的上傳命令,根據(jù)您的上傳環(huán)境復制上傳命令,并將命令中的
<source_file>
和<target_file>
分別替換為您源文件名和上傳到計算巢之后的文件名稱。在阿里云CLI中運行上傳命令,完成文件的上傳。
在部署物配置處,填入已上傳的文件名稱。
(可選)選擇是否配置腳本命令功能,配置腳本命令主要用于服務實例升級功能,文件關(guān)聯(lián)功能不需要配置腳本命令。
操作系統(tǒng):根據(jù)您服務的操作系統(tǒng),選擇對應的操作系統(tǒng)。
部署物下載目錄:設置將部署物下載到ECS實例的目錄。若設置的下載目錄不存在,則下載部署物前,會先創(chuàng)建目錄再下載。
命令類型:設置命令的類型。
命令內(nèi)容:設置完成文件下載后需要執(zhí)行的命令。
若需要調(diào)用服務實例的具體配置參數(shù),您需要在命令內(nèi)容中使用命令進行調(diào)用。更多信息,請參見調(diào)用參數(shù)說明。
在設置分發(fā)區(qū)域,文件部署物默認全部地域分發(fā)。
單擊發(fā)布部署物。
部署物發(fā)布后,不可對當前版本內(nèi)容進行修改,只能通過創(chuàng)建新版本或新部署物的方式進行修改。
查看部署物。
返回服務部署物頁面,單擊部署物名稱,進入部署物詳情界面查看部署進度。
當狀態(tài)為可用后單擊查看,會獲取到文件部署物的分發(fā)結(jié)果。
使用文件部署物
本節(jié)以創(chuàng)建私有化部署服務為例,重點介紹在創(chuàng)建服務時文件部署物相關(guān)配置。
登錄計算巢控制臺。
在左側(cè)導航欄中選擇我的服務,在我創(chuàng)建的服務區(qū)域下單擊創(chuàng)建新服務。
創(chuàng)建私有化部署服務。
根據(jù)提示填入服務基本信息,在錄入模板中根據(jù)實際情況選擇ROS模板。
當ROS模板中存在
{{ computenest::file::test }}
或者{{ computenest::publicfile::test }}
,則在部署物關(guān)聯(lián)區(qū)塊中可設置文件關(guān)聯(lián)。說明本示例模板僅可用于測試。
ROSTemplateFormatVersion: '2015-09-01' Description: en: 新建ack部署 zh-cn: new ack Parameters: PayType: Type: String Label: en: ECS Instance Charge Type zh-cn: 付費類型 Default: PostPaid AllowedValues: - PostPaid - PrePaid AssociationProperty: ChargeType AssociationPropertyMetadata: LocaleKey: InstanceChargeType PayPeriodUnit: Type: String Label: en: Pay Period Unit zh-cn: 購買資源時長周期 Default: Month AllowedValues: - Month - Year AssociationProperty: PayPeriodUnit AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid PayPeriod: Type: Number Description: en: When the resource purchase duration is Month, the value of Period ranges from 1 to 9, 12, 24, 36, 48, or 60. <br><b><font color='red'> When ECS instance types are PrePaid valid </b></font> zh-cn: 當購買資源時長為Month時,Period取值:1~9 <br><b><font color='red'>當ECS實例類型為PrePaid有效</b></font> Label: en: Period zh-cn: 購買資源時長 Default: 1 AllowedValues: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 AssociationProperty: PayPeriod AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid ZoneId: Type: String AssociationProperty: ALIYUN::ECS::Instance:ZoneId Label: en: Zone ID zh-cn: 可用區(qū) Default: cn-hangzhou-h VpcCidrBlock: Type: String Label: en: VPC CIDR IPv4 Block zh-cn: 專有網(wǎng)絡IPv4網(wǎng)段 Description: zh-cn: VPC的ip地址段范圍,<br>您可以使用以下的ip地址段或其子網(wǎng):<br><font color='green'>[10.0.0.0/8]</font><br><font color='green'>[172.16.0.0/12]</font><br><font color='green'>[192.168.0.0/16]</font> en: 'The ip address range of the VPC in the CidrBlock form; <br>You can use the following ip address ranges and their subnets: <br><font color=''green''>[10.0.0.0/8]</font><br><font color=''green''>[172.16.0.0/12]</font><br><font color=''green''>[192.168.0.0/16]</font>' Default: 192.168.0.0/16 AssociationProperty: ALIYUN::VPC::VPC::CidrBlock VSwitchCidrBlock: Type: String Label: en: VSwitch CIDR Block zh-cn: 交換機子網(wǎng)網(wǎng)段 Description: zh-cn: 必須屬于VPC的子網(wǎng)段。 en: Must belong to the subnet segment of VPC. Default: 192.168.1.0/24 AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock AssociationPropertyMetadata: VpcCidrBlock: VpcCidrBlock LoginPassword: NoEcho: true Type: String Description: en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ Special symbol in) zh-cn: 服務器登錄密碼,長度8-30,必須包含三項(大寫字母、小寫字母、數(shù)字、 ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ 中的特殊符號) Label: en: Instance Password zh-cn: 實例密碼 ConstraintDescription: en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ Special symbol in) zh-cn: 長度8-30,必須包含三項(大寫字母、小寫字母、數(shù)字、 ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ 中的特殊符號) AssociationProperty: ALIYUN::ECS::Instance::Password AllowedPattern: ^[a-zA-Z0-9-\(\)\`\~\!\@\#\$\%\^\&\*\_\-\+\=\|\{\}\[\]\:\;\<\>\,\.\?\/]*$ MinLength: 8 MaxLength: 30 Default: computenest*12345 WorkerInstanceType: Type: String Label: en: Worker Nodes Types zh-cn: Worker節(jié)點規(guī)格 AssociationProperty: ALIYUN::ECS::Instance::InstanceType AssociationPropertyMetadata: ZoneId: ${ZoneId} Default: ecs.g6.large WorkerSystemDiskCategory: Type: String AllowedValues: - cloud_efficiency - cloud_ssd - cloud_essd AssociationPropertyMetadata: LocaleKey: DiskCategory InstanceType: ${WorkerInstanceType} Label: en: Worker System Disk Category zh-cn: Worker 系統(tǒng)盤磁盤類型 Default: cloud_essd WorkerSystemDiskSize: Type: Number Label: en: Worker System Disk Size(GB) zh-cn: Worker節(jié)點系統(tǒng)盤大小(GB) MinValue: 1 Default: 120 PodCidr: Type: String Description: zh-cn: 請?zhí)顚懹行У乃接芯W(wǎng)段,即以下網(wǎng)段及其子網(wǎng):10.0.0.0/8,172.16-31.0.0/12-16,192.168.0.0/16<br>不能與 VPC 及 VPC 內(nèi)已有 Kubernetes 集群使用的網(wǎng)段重復。<font color='blue'><b>創(chuàng)建成功后不能修改</b></font> en: 'Please fill in a valid private segment, i.e. the following segments and their subnets: 10.0.0.0/8, 172.16-31.0.0/12-16, 192.168.0.0/16<br> which cannot duplicate the network segments already used by clusters in VPC and VPC Kunetberes. <font color=''blue''><b>Cannot be modified after successful creation</b></font>' Label: zh-cn: Pod 網(wǎng)絡 CIDR en: Pod Network CIDR AssociationProperty: ALIYUN::CS::ManagedKubernetesCluster::PodCidr Default: 10.0.0.0/16 ServiceCidr: Type: String Description: zh-cn: 可選范圍:10.0.0.0/16-24,172.16-31.0.0/16-24,192.168.0.0/16-24<br>不能與 VPC 及 VPC 內(nèi)已有 Kubernetes 集群使用的網(wǎng)段重復。<font color='blue'><b>創(chuàng)建成功后不能修改</b></font> en: 'Optional range: 10.0.0.0/16-24, 172.16-31.0.0/16-24, 192.168.0.0/16-24<br> cannot duplicate segments already used by existing Kubernetes clusters in VPC and VPC.<font color=''blue''><b>Cannot be modified after successful creation</b></font>' Label: zh-cn: Service CIDR en: Service CIDR AssociationProperty: ALIYUN::CS::ManagedKubernetesCluster::ServiceCidr Default: 172.16.0.0/16 Resources: EcsVpc: Type: ALIYUN::ECS::VPC Properties: VpcName: Ref: ALIYUN::StackName CidrBlock: Ref: VpcCidrBlock EcsVSwitch: Type: ALIYUN::ECS::VSwitch Properties: VSwitchName: Ref: ALIYUN::StackName VpcId: Ref: EcsVpc ZoneId: Ref: ZoneId CidrBlock: Ref: VSwitchCidrBlock EcsSecurityGroup: Type: ALIYUN::ECS::SecurityGroup Properties: SecurityGroupName: Ref: ALIYUN::StackName VpcId: Ref: EcsVpc SecurityGroupEgress: - PortRange: '-1/-1' Priority: 1 IpProtocol: all DestCidrIp: 0.0.0.0/0 NicType: intranet SecurityGroupIngress: - PortRange: '-1/-1' Priority: 1 IpProtocol: all SourceCidrIp: Ref: PodCidr Description: pod網(wǎng)絡訪問開放 NicType: intranet - PortRange: '-1/-1' Priority: 1 IpProtocol: all SourceCidrIp: Ref: VpcCidrBlock Description: vpc網(wǎng)絡訪問開放 NicType: intranet - PortRange: '-1/-1' Priority: 1 IpProtocol: icmp SourceCidrIp: 0.0.0.0/0 Description: icmp協(xié)議端口放開 NicType: intranet ManagedKubernetesCluster: Type: ALIYUN::CS::ManagedKubernetesCluster Properties: Name: Ref: ALIYUN::StackName ChargeType: Ref: PayType Period: Ref: PayPeriod PeriodUnit: Ref: PayPeriodUnit VSwitchIds: - Ref: EcsVSwitch VpcId: Ref: EcsVpc WorkerInstanceTypes: - Ref: WorkerInstanceType NumOfNodes: 3 ClusterSpec: ack.pro.small ContainerCidr: Ref: PodCidr ServiceCidr: Ref: ServiceCidr ZoneIds: - Ref: ZoneId SecurityGroupId: Ref: EcsSecurityGroup WorkerSystemDiskCategory: Ref: WorkerSystemDiskCategory WorkerSystemDiskSize: Ref: WorkerSystemDiskSize LoginPassword: Ref: LoginPassword SnatEntry: true Addons: - Name: flannel Config: '' ComputenestHelmApplication: Type: MODULE::SHARE::1563457855438522::HelmDeploy Version: v5 DependsOn: - ManagedKubernetesCluster Properties: ClusterId: Fn::GetAtt: - ManagedKubernetesCluster - ClusterId ChartIdentifier: '{{ computenest::helmpull::springBoot }}' ChartValues: image: fullname: '{{ computenest::acrimage::springBootDemo }}' dockerConfigJson: '{{ computenest::acr::dockerconfigjson }}' service: type: LoadBalancer port: 8080 Namespace: Ref: ALIYUN::StackName ReleaseName: spring-boot-chart # 睡眠1分鐘,以便于獲取資源時可以拿到 HelmSleep: Type: ALIYUN::ROS::Sleep DependsOn: - ComputenestHelmApplication Properties: CreateDuration: 60 # 獲取service信息,輸出到output中 ClusterApplicationResources: Type: DATASOURCE::CS::ClusterApplicationResources DependsOn: - HelmSleep Properties: ClusterId: Fn::GetAtt: - ManagedKubernetesCluster - ClusterId Kind: Service Name: spring-boot-chart Namespace: Ref: ALIYUN::StackName JsonPath: $.status.loadBalancer.ingress[0].ip FirstMatch: true Outputs: # 將公網(wǎng)ip做為http返回的地址顯示在控制臺 Endpoint: Description: zh-cn: 對外暴露的公網(wǎng)IP地址 en: Public IP Addresses Value: Fn::Sub: - "http://${ServerAddress}:8080" - ServerAddress: Fn::GetAtt: - ClusterApplicationResources - Response Metadata: ALIYUN::ROS::Interface: ParameterGroups: - Parameters: - PayType - PayPeriodUnit - PayPeriod Label: en: PayType Configuration zh-cn: 付費類型配置 - Parameters: - ZoneId - VpcCidrBlock - VSwitchCidrBlock - LoginPassword Label: en: Basic Configuration zh-cn: 基礎配置 - Parameters: - WorkerInstanceType - WorkerSystemDiskCategory - WorkerSystemDiskSize - ServiceCidr - PodCidr Label: en: Kubernetes zh-cn: Kubernetes配置
單擊設置文件關(guān)聯(lián)下方的關(guān)聯(lián)部署物,在彈框中選擇部署物和版本單擊確定完成。
完成服務的創(chuàng)建,并測試通過后, 請根據(jù)計算巢服務的發(fā)布審核標準進行自檢,并提交審核。發(fā)布審核標準的詳細信息,請參見發(fā)布審核標準。
審核通過后,上線服務。詳細步驟,請參見上線服務。
當用戶創(chuàng)建了服務實例后,計算巢會將模板中的內(nèi)容根據(jù)服務實例部署地域和部署物自動替換為對應部署地域的文件URL。
常用模板定義標識位替換后的結(jié)果如下所示。
當部署物的文件URL為私網(wǎng)URL時,替換結(jié)果如下。
當部署物的文件URL為公網(wǎng)URL時,替換結(jié)果如下。
數(shù)據(jù)庫類型MigrateTask中,計算巢會將文件部署物的URL更改為
OssObjectPositions
參數(shù)的格式。由于OssObjectPositions參數(shù)是由OSS Endpoint地址、OSS Bucket名稱和OSS上的備份文件Key三段組成,每段中間用英文冒號
:
分隔(例如:oss-ap-southeast-1.aliyuncs.com:rdsmssqlsingapore:autotest_2008R2_TestMigration_FULL.bak
,更多信息,請參見ALIYUN::RDS::MigrateTask),因此計算巢會將文件部署物的URL替換成該格式,如下圖所示。
相關(guān)文檔
關(guān)于創(chuàng)建計算巢服務的詳細內(nèi)容,請參見創(chuàng)建服務。
當您不再需要部署物或部署物版本時,可刪除該部署物或部署物版本,請參見刪除部署物。
當您需要變更部署物的分發(fā)地域、部署物內(nèi)容等信息時,可通過創(chuàng)建新版本來實現(xiàn),請參見創(chuàng)建新版本。
設置部署物的升級配置,請參見服務升級配置。