Paket penyebaran file mengatasi masalah umum dalam penyebaran berbasis skrip: skrip penyebaran Anda perlu mengunduh file perangkat lunak, tetapi file tersebut mungkin terlalu besar, sumber unduhan tidak stabil, atau tidak dapat diakses melalui internet publik. Cukup unggah file sekali, dan Compute Nest secara otomatis menangani distribusi regional serta pengirimannya melalui jaringan internal yang aman.
Cara kerja
Saat Anda memublikasikan paket penyebaran file, Compute Nest mereplikasi file yang diunggah ke bucket Object Storage Service (OSS) di semua wilayah target di bawah akun umum Compute Nest.
Dalam Template Resource Orchestration Service (ROS) Anda, tempatkan pengenal file seperti {{ computenest::file::mykey }} di lokasi mana pun yang memerlukan URL file tersebut. Saat Anda membuat layanan, Compute Nest mengaitkan pengenal tersebut dengan paket penyebaran file yang telah Anda tentukan. Ketika pelanggan membuat instans layanan, Compute Nest mendeteksi wilayah target, memilih URL OSS untuk wilayah tersebut, lalu mengganti pengenal dalam templat dengan URL HTTP internal—sehingga setiap unduhan menjadi cepat, stabil, dan terbatas pada jaringan internal.
Model izin: Visibilitas paket penyebaran file mengikuti layanan yang dikaitkannya.
| Status kaitan | Visibilitas paket |
|---|---|
| Tidak dikaitkan dengan layanan apa pun | Pribadi |
| Dikaitkan dengan setidaknya satu layanan publik | Publik |
| Hanya dikaitkan dengan layanan pribadi | Pribadi |
Sintaksis pengenal file
Gunakan salah satu ekspresi tetap berikut dalam Template ROS Anda. ${key} adalah string tanpa spasi.
| Kasus penggunaan | Pengenal |
|---|---|
| URL pribadi (disarankan) | {{ computenest::file:: ${key}}} |
| URL publik | {{ computenest::publicfile::${key}}} |
Bungkus pengenal dengan tanda kutip tunggal atau ganda dalam templat. Saat menggunakan wget untuk mengunduh file, gunakan parameter -O untuk menentukan nama file output.
Contoh: templat umum (UserData)
Potongan kode berikut mendefinisikan dua pengenal file dalam bagian UserData sebuah Instance Elastic Compute Service (ECS). Saat pelanggan menyebarkan layanan, Compute Nest mengganti setiap pengenal dengan URL OSS internal regional.
TiDBServer:
Type: ALIYUN::ECS::InstanceGroup
Properties:
...
UserData:
Fn::Sub:
- |
#!/bin/sh
sleep 10
wget '{{ computenest::file::DemoFirst }}' -O TestFirst.txt # diganti dengan URL OSS internal saat penyebaran
wget '{{ computenest::file::DemoSecond }}' -O TestSecond.tar
......Contoh: templat MigrateTask
Untuk resource ALIYUN::RDS::MigrateTask, gunakan pengenal dalam bidang OssObjectPositions. Compute Nest mengonversi URL file ke format {Titik akhir OSS}:{nama bucket OSS}:{kunci file backup di OSS} yang dibutuhkan oleh parameter tersebut.
SQLDump:
Type: ALIYUN::RDS::MigrateTask
Properties:
...
DBName: mytest
DBInstanceId:
Fn::GetAtt:
- Database
- DBInstanceId
OssObjectPositions: {{ computenest::file::DemoFirst }} # dikonversi ke format titik akhir:bucket:kunci OSSSebagai contoh, Compute Nest mengonversi pengenal tersebut menjadi nilai seperti oss-ap-southeast-1.aliyuncs.com:rdsmssqlsingapore:autotest_2008R2_TestMigration_FULL.bak. Untuk spesifikasi parameter lengkap, lihat ALIYUN::RDS::MigrateTask.
Membuat paket penyebaran file
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
File yang ingin diunggah
Langkah 1: Konfigurasi informasi dasar
Masuk ke Konsol Compute Nest. Di panel navigasi sebelah kiri, klik Service Deployment Package.
Di bagian Deployment Package, klik Create Deployment Package.
Di bagian Deployment Package Information, konfigurasikan parameter berikut.
Parameter Deskripsi Deployment Package Name 3–128 karakter; huruf, angka, dan garis bawah (_). Tidak dapat diubah setelah pembuatan. Version Name 3–50 karakter; huruf, angka, dan garis bawah (_). Description 10–500 karakter. Resource Group Kelompok sumber daya tempat paket penyebaran ini berada. Kelompok sumber daya memungkinkan Anda mengelola sumber daya berdasarkan penggunaan, izin, dan wilayah. Untuk informasi lebih lanjut, lihat Manage resource groups. Tag Settings Tag yang akan ditambahkan ke paket penyebaran. Maksimal 20 tag per paket. Untuk membuat tag kustom, lihat Add a custom tag.
Langkah 2: Mengunggah file
Di bagian Deployment Package Content, atur Deployment Package Type ke File.
Pilih wilayah unggah untuk Upload Deployment Package, lalu pilih metode unggah berdasarkan ukuran file Anda. Untuk file yang lebih besar dari 5 GB:
Klik Obtain Access Credential. Perintah unggah akan muncul untuk unggah lokal atau unggah dari Instance ECS melalui jaringan internal.
Salin perintah tersebut dan ganti
<source_file>dengan nama file sumber dan<target_file>dengan nama file target di Compute Nest.Jalankan perintah tersebut menggunakan Alibaba Cloud CLI.
Masukkan nama file yang diunggah ke dalam bidang File Upload URL.
Ukuran file Metode Hingga 5 GB Pilih Upload Local File dan unggah file langsung. Lebih besar dari 5 GB Pilih Upload File Larger Than 5 GB, lalu ikuti langkah-langkah di bawah. 
(Opsional) Aktifkan Configure Script Command untuk menentukan perintah yang dijalankan saat paket penyebaran diunduh selama pembaruan instans layanan. Perintah skrip tidak wajib untuk asosiasi file. Jika diaktifkan, konfigurasikan parameter berikut:
Parameter Deskripsi OS Sistem operasi layanan Anda. Download Directory Direktori pada Instance ECS tempat file diunduh. Buat direktori jika belum ada. Command Type Jenis perintah yang akan dijalankan. Command Content Perintah yang dijalankan setelah pengunduhan. Anda dapat mereferensikan parameter konfigurasi instans layanan dalam perintah tersebut. Untuk Distribution Region, nilai default-nya adalah All Regions. Ubah hanya jika Anda perlu membatasi distribusi ke wilayah tertentu.
Klik Publish Deployment Package.
Setelah versi paket penyebaran dipublikasikan, isinya tidak dapat dimodifikasi. Untuk memperbarui konten, buat versi baru atau paket penyebaran baru.
Langkah 3: Verifikasi distribusi
Kembali ke halaman Service Deployment Package. Klik nama paket penyebaran yang telah Anda buat.
Di tab Packages, pantau progres penyebaran.
Setelah status berubah menjadi Available, klik View di kolom Actions untuk mengonfirmasi hasil distribusi di berbagai wilayah.

Mengaitkan paket penyebaran file dengan layanan
Bagian ini menjelaskan cara mengaitkan paket penyebaran file dengan layanan pribadi.
Di halaman Create Service, atur Select Service Creation Method ke Custom Launch dan Select Service Type ke Private Service. Klik Next: Configure Settings.

Masukkan informasi dasar layanan. Pilih jenis templat dan metode pembuatan templat, atur Deployment Method ke ROS, lalu masukkan konten templat. Jika templat berisi
{{ computenest::file::test }}atau{{ computenest::publicfile::test }}, parameter Set File Association akan muncul di bagian Deployment Package Association. <details> <summary>Contoh templat ROS</summary>Templat contoh di bawah ini hanya untuk pengujian.
ROSTemplateFormatVersion: '2015-09-01' Description: en: new ack zh-cn: 新建ack部署 Parameters: PayType: Type: String Label: en: Jenis Biaya Instans ECS zh-cn: 付费类型 Default: PostPaid AllowedValues: - PostPaid - PrePaid AssociationProperty: ChargeType AssociationPropertyMetadata: LocaleKey: InstanceChargeType PayPeriodUnit: Type: String Label: en: Satuan Periode Pembayaran zh-cn: 购买资源时长周期 Default: Month AllowedValues: - Month - Year AssociationProperty: PayPeriodUnit AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid PayPeriod: Type: Number Description: en: Ketika durasi pembelian sumber daya adalah Month, nilai Periode berkisar dari 1 hingga 9, 12, 24, 36, 48, atau 60. <b><font color='red'> Berlaku ketika tipe instans ECS adalah PrePaid </font> zh-cn: 当购买资源时长为Month时,Period取值:1~9 <b><font color='red'>当ECS实例类型为PrePaid有效</font> Label: en: Periode 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: ID Zona zh-cn: 可用区 Default: cn-hangzhou-h VpcCidrBlock: Type: String Label: en: Blok CIDR IPv4 VPC zh-cn: 专有网络IPv4网段 Description: zh-cn: VPC的ip地址段范围,您可以使用以下的ip地址段或其子网:<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: 'Rentang alamat IP VPC dalam bentuk CidrBlock; <br>Anda dapat menggunakan rentang alamat IP berikut dan subnetnya: <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: Blok CIDR VSwitch zh-cn: 交换机子网网段 Description: zh-cn: 必须属于VPC的子网段。 en: Harus termasuk dalam segmen subnet VPC. Default: 192.168.1.0/24 AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock AssociationPropertyMetadata: VpcCidrBlock: VpcCidrBlock LoginPassword: NoEcho: true Type: String Description: en: Kata sandi login server, panjang 8-30 karakter, harus mengandung tiga dari kategori berikut (huruf kapital, huruf kecil, angka, simbol khusus ()`~!@#$%^&*_-+=|{}[]:;<>,.?/) zh-cn: 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ 中的特殊符号) Label: en: Kata Sandi Instans zh-cn: 实例密码 ConstraintDescription: en: Panjang 8-30 karakter, harus mengandung tiga dari kategori berikut (huruf kapital, huruf kecil, angka, simbol khusus ()`~!@#$%^&*_-+=|{}[]:;<>,.?/) zh-cn: 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;<>,.?/ 中的特殊符号) AssociationProperty: ALIYUN::ECS::Instance::Password AllowedPattern: ^[a-zA-Z0-9-\(\)\`\~\!\@\#\$\%\^\&\*\_\-\+\=\|\{\}\[\]\:\;\<\>\,\.\?\/]*$ MinLength: 8 MaxLength: 30 Default: computenest*12345 WorkerInstanceType: Type: String Label: en: Tipe Node Worker zh-cn: Worker节点规格 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: Kategori Disk Sistem Worker zh-cn: Worker 系统盘磁盘类型 Default: cloud_essd WorkerSystemDiskSize: Type: Number Label: en: Ukuran Disk Sistem Worker (GB) zh-cn: Worker节点系统盘大小(GB) MinValue: 1 Default: 120 PodCidr: Type: String Description: zh-cn: 请填写有效的私有网段,即以下网段及其子网:10.0.0.0/8,172.16-31.0.0/12-16,192.168.0.0/16<br>不能与 VPC 及 VPC 内已有 Kubernetes 集群使用的网段重复。 <font color='blue'><b>创建成功后不能修改</font> en: 'Isilah segmen pribadi yang valid, yaitu segmen berikut dan subnetnya: 10.0.0.0/8, 172.16-31.0.0/12-16, 192.168.0.0/16 yang tidak boleh tumpang tindih dengan segmen jaringan yang sudah digunakan oleh kluster di VPC dan VPC Kubernetes. <font color=''blue''><b>Tidak dapat dimodifikasi setelah berhasil dibuat</font>' Label: zh-cn: Pod 网络 CIDR en: CIDR Jaringan Pod 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不能与 VPC 及 VPC 内已有 Kubernetes 集群使用的网段重复。 <font color='blue'><b>创建成功后不能修改</font> en: 'Rentang opsional: 10.0.0.0/16-24, 172.16-31.0.0/16-24, 192.168.0.0/16-24 tidak boleh tumpang tindih dengan segmen yang sudah digunakan oleh kluster Kubernetes yang ada di VPC dan VPC.<font color=''blue''><b>Tidak dapat dimodifikasi setelah berhasil dibuat</font>' Label: zh-cn: Service CIDR en: CIDR Layanan 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: access to the pod network NicType: intranet - PortRange: '-1/-1' Priority: 1 IpProtocol: all SourceCidrIp: Ref: VpcCidrBlock Description: access to the VPC NicType: intranet - PortRange: '-1/-1' Priority: 1 IpProtocol: icmp SourceCidrIp: 0.0.0.0/0 Description: access to the ICMP port 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 # Sleep for 1 minute to wait for the resources to be ready. HelmSleep: Type: ALIYUN::ROS::Sleep DependsOn: - ComputenestHelmApplication Properties: CreateDuration: 60 # Query the service information and display the information in the 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: # Display the public IP address as the returned HTTP URL in the console. Endpoint: Description: zh-cn: 对外暴露的公网IP地址 en: Alamat IP publik Value: Fn::Sub: - "http://${ServerAddress}:8080" - ServerAddress: Fn::GetAtt: - ClusterApplicationResources - Response Metadata: ALIYUN::ROS::Interface: ParameterGroups: - Parameters: - PayType - PayPeriodUnit - PayPeriod Label: en: Konfigurasi Jenis Biaya zh-cn: 付费类型配置 - Parameters: - ZoneId - VpcCidrBlock - VSwitchCidrBlock - LoginPassword Label: en: Konfigurasi Dasar zh-cn: 基础配置 - Parameters: - WorkerInstanceType - WorkerSystemDiskCategory - WorkerSystemDiskSize - ServiceCidr - PodCidr Label: en: Kubernetes zh-cn: Kubernetes配置</details>
Di bagian Associate Software Package, klik Deployment Package Association. Di kotak dialog, pilih paket penyebaran dan versinya, lalu klik OK.


Setelah layanan lolos pengujian, kirimkan untuk ditinjau. Untuk kriteria peninjauan, lihat Review criteria.
Setelah disetujui, publikasikan layanan tersebut. Untuk detailnya, lihat Publish a service.
Saat pelanggan membuat instans layanan, Compute Nest secara otomatis mengganti setiap pengenal file dalam templat dengan URL OSS internal untuk wilayah target pelanggan.
Templat umum: Gambar berikut menunjukkan hasil penggantian pengenal untuk URL file pribadi dan publik. Penggantian URL file pribadi: Penggantian URL file publik:


Templat MigrateTask: Compute Nest mengonversi URL file ke format
{Titik akhir OSS}:{nama bucket OSS}:{kunci file backup di OSS}yang dibutuhkan oleh parameterOssObjectPositions.
Langkah berikutnya
Create a service — panduan lengkap untuk membuat layanan Compute Nest
Create a version — perbarui konten paket penyebaran dengan membuat versi baru
Delete a deployment package — hapus paket penyebaran atau versi yang tidak lagi diperlukan