All Products
Search
Document Center

Compute Nest:Paket penyebaran Helm chart

Last Updated:Apr 01, 2026

Gunakan paket penyebaran Helm chart untuk meng-host Helm chart secara privat dan menyebarkannya dengan aman melalui layanan Compute Nest.

Kapan menggunakan paket penyebaran Helm chart

Gunakan paket penyebaran Helm chart jika chart Anda harus tetap privat. Compute Nest menyimpannya di repositori Container Registry yang dikelola dan menariknya saat penerapan menggunakan kredensial sementara.

Jika Helm chart Anda dapat diakses publik, cukup tentukan URL-nya langsung dalam templat Resource Orchestration Service (ROS)—tidak diperlukan paket penyebaran.

Helm chart cocok untuk layanan dengan struktur resource yang kompleks dan banyak file YAML. Paket penyebaran Compute Nest menyediakan manajemen terstruktur dan distribusi aman untuk chart tersebut. Untuk detail tentang cara mengunggah dan menarik chart, lihat Paket penyebaran image kontainer.

Cara kerja

Saat Compute Nest menerapkan layanan, sistem menyelesaikan dua pengenal templat dalam templat ROS:

  • {{computenest::helmchart::test}} — diganti dengan alamat chart OCI lengkap, contohnya: oci://compute-nest-chart-registry.cn-hangzhou.cr.aliyuncs.com/${aliUid}/wordpress:15.4.1

  • {{computenest::helm::dockerconfigjson}} — diganti dengan kredensial sementara yang digunakan untuk menarik chart dari repositori Container Registry

Penerapan menggunakan modul publik MODULE::ACS::ComputeNest::FluxOciHelmDeploy, yang dibangun di atas FluxCD. FluxCD hanya mendukung format Open Container Initiative (OCI), sehingga semua paket penyebaran Helm chart harus dalam format OCI.

Templat ROS minimal berikut menunjukkan kedua pengenal tersebut dalam konteksnya:

Resources:
  FluxHelmDeploy:
    Type: MODULE::ACS::ComputeNest::FluxOciHelmDeploy
    Version: v1
    Properties:
      ClusterId:
        Ref: ClusterId
      ReleaseName: wordpress
      Namespace: wordpress
      HelmChartUrl: '{{ computenest::helmchart::test }}'
      DockerConfigJson: '{{ computenest::helm::dockerconfigjson }}'
      ChartValues:
        mariadb:
          primary:
            persistence:
              enabled: true
              storageClass: alicloud-disk-essd
              size: 20Gi
        persistence:
          enabled: false

HelmChartUrl menerima alamat chart yang telah diselesaikan. DockerConfigJson menerima kredensial sementara. Anda mengaitkan pengenal paket penyebaran dengan paket penyebaran tertentu saat membuat layanan (lihat langkah 5 di bawah).

Buat paket penyebaran Helm chart

Prasyarat

Klien Helm telah diinstal, dan Helm chart telah disiapkan. Untuk petunjuk tentang pengemasan dan pendorongan Helm chart dalam format OCI, lihat Dorong dan tarik Helm chart.

Buat paket penyebaran

  1. Di Konsol Compute Nest, klik Konsol Compute Nest Service Deployment Package di panel navigasi kiri. Di bagian Deployment Package, klik Create Deployment Package.

  2. Di bagian Deployment Package Information, konfigurasikan parameter berikut:

    ParameterDeskripsi
    Deployment package name3–128 karakter. Menerima huruf, angka, dan garis bawah. Tidak dapat diubah setelah dibuat.
    Version name3–50 karakter. Menerima huruf, angka, dan garis bawah.
    Description10–500 karakter.
    Resource groupMengelompokkan resource berdasarkan penggunaan, izin, dan wilayah. Lihat Manage resource groups.
    Tag settingsMaksimal 20 tag per paket penyebaran. Lihat Add a custom tag.
  3. Di bagian Deployment Package Content, atur Deployment Package Type ke Helm Chart.

  4. Klik Obtain Access Credential untuk mendapatkan kredensial akses sementara untuk namespace tersebut. Jalankan perintah yang ditampilkan secara berurutan di CLI Anda untuk mendorong chart ke repositori Container Registry.

    image

  5. Setelah chart diunggah, pilih chart tersebut dari Select Product dan klik Publish Deployment Package.

    image

Verifikasi paket penyebaran

Kembali ke halaman Service Deployment Package. Klik nama paket penyebaran untuk membuka halaman detailnya. Status Available mengonfirmasi bahwa paket penyebaran berhasil dibuat.

Gunakan paket penyebaran Helm chart

Langkah-langkah berikut membuat layanan privat untuk mengilustrasikan cara menggunakan paket penyebaran Helm chart.

  1. Di Konsol Compute Nest, klik My Services di panel navigasi kiri.

  2. Di tab Created Services, klik Create Service.

  3. Atur Select Service Creation Method ke Custom Launch dan Select Service Type ke Private Service, lalu klik Next: Configure Settings.

    image

  4. Masukkan informasi dasar layanan. Pilih jenis templat dan metode pembuatan, atur Deployment Method ke ROS, dan masukkan konten templat. Sertakan {{ computenest::helmchart::test }} dan {{ computenest::helm::dockerconfigjson }} dalam templat ROS. Templat contoh berikut hanya untuk tujuan pengujian.

    Contoh templat ROS (hanya untuk pengujian)

    ROSTemplateFormatVersion: '2015-09-01'
    Description:
      en: ack baru
      zh-cn: 新建ack部署
    Parameters:
      PayType:
        Type: String
        Label:
          en: Tipe 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 Bulan, 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: 可用区
      EcsInstanceType:
        Type: String
        Label:
          en: Tipe Instans
          zh-cn: 实例类型
        AssociationProperty: ALIYUN::ECS::Instance::InstanceType
        AssociationPropertyMetadata:
          ZoneId: ${ZoneId}
          InstanceChargeType: ${InstanceChargeType}
      EcsInstancePassword:
        NoEcho: true
        Type: String
        AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
        Label:
          en: Kata Sandi Instans
          zh-cn: 实例密码
        ConstraintDescription:
          en: Panjang 8-30, harus mengandung tiga jenis (huruf kapital, huruf kecil, angka, simbol khusus dalam ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/)
          zh-cn: 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)
        MinLength: 8
        MaxLength: 30
        AssociationProperty: ALIYUN::ECS::Instance::Password
      ServerSystemDiskCategory:
        Type: String
        AllowedValues:
          - cloud_efficiency
          - cloud_ssd
          - cloud_essd
        AssociationPropertyMetadata:
          LocaleKey: DiskCategory
          InstanceType: ${EcsInstanceType}
        Label:
          en: Kategori Disk Sistem Server
          zh-cn: Server系统盘磁盘类型
        Default: cloud_essd
      ServerSystemDiskSize:
        Type: Number
        Label:
          en: Ukuran Disk Sistem Server (GB)
          zh-cn: Server节点系统盘大小(GB)
        MinValue: 1
        Default: 500
      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 subnet-nya: <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
      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: 'Silakan isi segmen privat yang valid, yaitu segmen-segmen berikut dan subnet-nya: 10.0.0.0/8, 172.16-31.0.0/12-16, 192.168.0.0/16 yang tidak boleh menduplikasi segmen jaringan yang sudah digunakan oleh kluster di VPC dan VPC Kubernetes. <font color=''blue''><b>Tidak dapat dimodifikasi setelah pembuatan berhasil</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 menduplikasi segmen yang sudah digunakan oleh kluster Kubernetes yang ada di VPC dan VPC.<font color=''blue''><b>Tidak dapat dimodifikasi setelah pembuatan berhasil</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: akses ke jaringan pod
              NicType: intranet
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: all
              SourceCidrIp:
                Ref: VpcCidrBlock
              Description: akses ke VPC
              NicType: intranet
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: icmp
              SourceCidrIp: 0.0.0.0/0
              Description: akses ke port ICMP
              NicType: intranet
            - Priority: 1
              PortRange: 22/22
              SourceCidrIp: 0.0.0.0/0
              IpProtocol: tcp
            - Priority: 1
              PortRange: 443/443
              SourceCidrIp: 0.0.0.0/0
              IpProtocol: tcp
            - Priority: 1
              PortRange: 3001/3001
              SourceCidrIp: 0.0.0.0/0
              IpProtocol: tcp
            - Priority: 1
              PortRange: 31001/31001
              SourceCidrIp: 0.0.0.0/0
              IpProtocol: tcp
            - Priority: 1
              PortRange: 9000/9000
              SourceCidrIp: 0.0.0.0/0
              IpProtocol: tcp
            - Priority: 1
              PortRange: 3389/3389
              SourceCidrIp: 0.0.0.0/0
              IpProtocol: tcp
            - Priority: 1
              PortRange: 80/80
              SourceCidrIp: 0.0.0.0/0
              IpProtocol: tcp
      CsghubServerInstance:
        Type: ALIYUN::ECS::InstanceGroup
        Properties:
          ZoneId:
            Ref: ZoneId
          IoOptimized: optimized
          InstanceChargeType:
            Ref: PayType
          PeriodUnit:
            Ref: PayPeriodUnit
          Period:
            Ref: PayPeriod
          VpcId:
            Ref: EcsVpc
          VSwitchId:
            Ref: EcsVSwitch
          SecurityGroupId:
            Ref: EcsSecurityGroup
          SystemDiskCategory:
            Ref: ServerSystemDiskCategory
          SystemDiskSize:
            Ref: ServerSystemDiskSize
          MaxAmount: 1
          ImageId: centos_7
          InstanceType:
            Ref: EcsInstanceType
          Password:
            Ref: EcsInstancePassword
          InternetMaxBandwidthOut: 50
          InstanceName:
            Fn::Join:
              - '-'
              - - Ref: ALIYUN::StackName
                - '[1,4]'
      InstanceRunCommand:
        Type: ALIYUN::ECS::RunCommand
        Properties:
          Type: RunShellScript
          Sync: true
          CommandContent:
            Fn::Sub:
              - |
                #!/bin/bash
    
                yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
                yum makecache fast
                yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin jq
                mkdir -p /etc/docker
                tee /etc/docker/daemon.json <<-'EOF'
                {
                    "registry-mirrors": [
                        "https://docker.m.daocloud.io",
                        "https://mirror.baidubce.com",
                        "https://dockerproxy.com",
                        "https://mirror.iscas.ac.cn",
                        "https://huecker.io",
                        "https://dockerhub.timeweb.cloud",
                        "https://noohub.ru",
                        "https://vlgh0kqj.mirror.aliyuncs.com"
                    ]
                }
                EOF
                systemctl enable docker
                systemctl start docker
                sleep 10
    
                # Instal server.
                wget '{{ computenest::file::csgserver }}' -O csghub-main.tar.gz
                tar -xvf csghub-main.tar.gz
                cd /root/csghub-main/deploy/all_in_one
                sed -i 's/SERVER_DOMAIN=[^,)]*/SERVER_DOMAIN=${PublicAddress}/' .env
                sleep 10
                chmod 777 startup.sh
                ./startup.sh
                sleep 10
                docker compose restart user_server
                sleep 10
                docker compose restart nginx
                docker compose restart user_server
                # Ketika eksekusi kode berhasil, ROS memanggil kembali WaitCondition untuk menghentikan penantian.
              - PublicAddress:
                  Fn::Select:
                    - 0
                    - Fn::GetAtt:
                        - CsghubServerInstance
                        - PublicIps
          InstanceIds:
            Fn::GetAtt:
              - CsghubServerInstance
              - InstanceIds
          Timeout: 3600
  5. Di bagian Deployment Package Association, klik Deployment Package Association. Di dialog Select Deployment Package, pilih paket penyebaran dan versinya, lalu klik OK untuk mengaitkan paket penyebaran Helm chart dengan pengenal paket penyebaran.

    image

  6. Simpan dan uji layanan. Setelah layanan lolos pengujian, pastikan layanan memenuhi kriteria tinjauan dan kirimkan untuk ditinjau.

  7. Setelah layanan dibuat, lihat asosiasi paket penyebarannya di halaman detail layanan.

    image

Langkah selanjutnya