All Products
Search
Document Center

Compute Nest:Artefak penyebaran file

Last Updated:Apr 02, 2026

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 kaitanVisibilitas paket
Tidak dikaitkan dengan layanan apa punPribadi
Dikaitkan dengan setidaknya satu layanan publikPublik
Hanya dikaitkan dengan layanan pribadiPribadi

Sintaksis pengenal file

Gunakan salah satu ekspresi tetap berikut dalam Template ROS Anda. ${key} adalah string tanpa spasi.

Kasus penggunaanPengenal
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 OSS

Sebagai 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

  1. Masuk ke Konsol Compute Nest. Di panel navigasi sebelah kiri, klik Service Deployment Package.

  2. Di bagian Deployment Package, klik Create Deployment Package.

  3. Di bagian Deployment Package Information, konfigurasikan parameter berikut.

    ParameterDeskripsi
    Deployment Package Name3–128 karakter; huruf, angka, dan garis bawah (_). Tidak dapat diubah setelah pembuatan.
    Version Name3–50 karakter; huruf, angka, dan garis bawah (_).
    Description10–500 karakter.
    Resource GroupKelompok 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 SettingsTag yang akan ditambahkan ke paket penyebaran. Maksimal 20 tag per paket. Untuk membuat tag kustom, lihat Add a custom tag.

Langkah 2: Mengunggah file

  1. Di bagian Deployment Package Content, atur Deployment Package Type ke File.

  2. Pilih wilayah unggah untuk Upload Deployment Package, lalu pilih metode unggah berdasarkan ukuran file Anda. Untuk file yang lebih besar dari 5 GB:

    1. Klik Obtain Access Credential. Perintah unggah akan muncul untuk unggah lokal atau unggah dari Instance ECS melalui jaringan internal.

    2. Salin perintah tersebut dan ganti <source_file> dengan nama file sumber dan <target_file> dengan nama file target di Compute Nest.

    3. Jalankan perintah tersebut menggunakan Alibaba Cloud CLI.

    4. Masukkan nama file yang diunggah ke dalam bidang File Upload URL.

    Ukuran fileMetode
    Hingga 5 GBPilih Upload Local File dan unggah file langsung.
    Lebih besar dari 5 GBPilih Upload File Larger Than 5 GB, lalu ikuti langkah-langkah di bawah.

    image

  3. (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:

    ParameterDeskripsi
    OSSistem operasi layanan Anda.
    Download DirectoryDirektori pada Instance ECS tempat file diunduh. Buat direktori jika belum ada.
    Command TypeJenis perintah yang akan dijalankan.
    Command ContentPerintah yang dijalankan setelah pengunduhan. Anda dapat mereferensikan parameter konfigurasi instans layanan dalam perintah tersebut.
  4. Untuk Distribution Region, nilai default-nya adalah All Regions. Ubah hanya jika Anda perlu membatasi distribusi ke wilayah tertentu.

  5. Klik Publish Deployment Package.

Penting

Setelah versi paket penyebaran dipublikasikan, isinya tidak dapat dimodifikasi. Untuk memperbarui konten, buat versi baru atau paket penyebaran baru.

Langkah 3: Verifikasi distribusi

  1. Kembali ke halaman Service Deployment Package. Klik nama paket penyebaran yang telah Anda buat.

  2. Di tab Packages, pantau progres penyebaran.

  3. Setelah status berubah menjadi Available, klik View di kolom Actions untuk mengonfirmasi hasil distribusi di berbagai wilayah.

    image

Mengaitkan paket penyebaran file dengan layanan

Bagian ini menjelaskan cara mengaitkan paket penyebaran file dengan layanan pribadi.

  1. Di halaman Create Service, atur Select Service Creation Method ke Custom Launch dan Select Service Type ke Private Service. Klik Next: Configure Settings.

    image

  2. 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>

  3. Di bagian Associate Software Package, klik Deployment Package Association. Di kotak dialog, pilih paket penyebaran dan versinya, lalu klik OK.

    image

    image

  4. Setelah layanan lolos pengujian, kirimkan untuk ditinjau. Untuk kriteria peninjauan, lihat Review criteria.

  5. 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:

    image

    image

  • Templat MigrateTask: Compute Nest mengonversi URL file ke format {Titik akhir OSS}:{nama bucket OSS}:{kunci file backup di OSS} yang dibutuhkan oleh parameter OssObjectPositions.

    image

Langkah berikutnya

Referensi