すべてのプロダクト
Search
ドキュメントセンター

Compute Nest:Helm chart デプロイパッケージ

最終更新日:Jun 08, 2025

このトピックでは、Helm chart デプロイパッケージの仕組みと、Helm chart デプロイパッケージの作成方法および使用方法について説明します。

シナリオ

  • Helm chart を使用してサービスをデプロイする際に Helm chart を機密に保つ場合は、Compute Nest の Helm chart デプロイパッケージを使用することをお勧めします。これらのデプロイパッケージは、Compute Nest の Alibaba Cloud Container Registry リポジトリに保存されます。一時キーを使用して安全にプルされます。

    重要

    Helm chart にパブリックにアクセスできる場合は、Resource Orchestration Service (ROS) テンプレートで Helm chart のパブリック URL を直接指定します。追加の構成は必要ありません。

  • 一般に、Helm chart は、複雑な構造と、リソースデプロイメント用の多数の YAML ファイルを持つサービスに適しています。 Helm chart は、これらの YAML ファイルの構造化された管理を容易にします。 Helm chart デプロイパッケージは、Compute Nest の Container Registry リポジトリで管理されます。 Helm chart デプロイパッケージのアップロード方法とプルの詳細については、「コンテナイメージデプロイパッケージ」をご参照ください。

仕組み

サービステンプレートで次の 2 つの識別子を定義して、Helm chart デプロイパッケージを使用できます。

  • {{computenest::helmchart::test}}: oci://compute-nest-chart-registry.cn-hangzhou.cr.aliyuncs.com/${aliUid}/wordpress:15.4.1 などの Helm chart の完全なアドレスに置き換えられるデプロイパッケージ識別子。

  • {{computenest::helm::dockerconfigjson}}: Compute Nest の Container Registry リポジトリから Helm chart デプロイパッケージをプルするために使用されるキー。

Helm chart は、Compute Nest によって定義されたパブリックモジュール MODULE::ACS::ComputeNest::FluxOciHelmDeploy を使用してデプロイされます。このパブリックモジュールは、Open Container Initiative (OCI) 形式の chart のみをサポートするオープンソースコンポーネント FluxCD を使用します。したがって、Compute Nest の Helm chart デプロイパッケージは OCI 形式である必要があります。次のサンプルコードは、MODULE::ACS::ComputeNest::FluxOciHelmDeploy を使用して Helm chart デプロイパッケージをデプロイする方法を示しています。

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

Helm chart デプロイパッケージの作成と使用

前提条件

Helm クライアントがインストールされ、Helm chart が準備されています。詳細については、「Helm chart のプッシュとプル」をご参照ください。

Helm chart デプロイパッケージの作成

  1. デプロイパッケージの基本情報を構成します。

    1. Compute Nest コンソール にログインします。左側のナビゲーションウィンドウで、[サービスデプロイパッケージ] をクリックします。[サービスデプロイパッケージ] ページの [デプロイパッケージ] セクションで、[デプロイパッケージの作成] をクリックします。

    2. [デプロイパッケージ情報] セクションで、次の表に示すパラメータを構成します。

      パラメータ

      説明

      デプロイパッケージ名

      デプロイパッケージの名前。名前は 3 ~ 128 文字で、文字、数字、およびアンダースコア(_) を使用できます。デプロイパッケージの作成後、名前を変更することはできません。

      バージョン名

      デプロイパッケージバージョンの名前。名前は 3 ~ 50 文字で、文字、数字、およびアンダースコア(_) を使用できます。

      説明

      デプロイパッケージの説明。説明は 10 ~ 500 文字である必要があります。

      リソースグループ

      デプロイパッケージが属するリソースグループの名前。

      リソースグループは、使用状況、権限、およびリージョン別にリソースをグループ化するために使用されます。リソースグループを使用して、リソースを階層的に編成し、ユーザーとプロジェクトに基づいてリソースをグループ化できます。詳細については、「リソースグループの管理」をご参照ください。

      タグ設定

      デプロイメントパッケージに追加するタグ。完全なタグキーとタグ値を選択または入力します。 デプロイメントパッケージには最大 20 個のタグを追加できます。 タグキーまたはタグ値がない場合は、カスタムタグを作成できます。 詳細については、「カスタムタグを追加する」をご参照ください。

  2. Helm チャート デプロイメント パッケージを構成します。

    1. [デプロイメントパッケージコンテンツ] セクションで、[デプロイメントパッケー ジタイプ] パラメーターに [Helm Chart] を選択します。

    2. [アクセス認証情報を取得] をクリックして、名前空間の一時キーを取得します。次に、取得したコマンドを CLI で順番に実行します。

      image

    3. Helm チャートが Compute Nest の Container Registry リポジトリにアップロードされた後、[製品の選択] パラメーターでチャートを選択し、[デプロイメントパッケージを公開] をクリックします。

      image

  3. デプロイメントパッケージを表示します。

    1. [サービスデプロイメントパッケージ] ページに戻ります。表示するデプロイメントパッケージを見つけ、その名前をクリックします。 [デプロイメントパッケージの詳細] ページで、デプロイメントパッケージの詳細を表示できます。

    2. Helm チャートデプロイメントパッケージのステータスが [利用可能] の場合、Helm チャートデプロイメントパッケージは作成されています。

Helm チャートデプロイメントパッケージの使用

この例では、Helm チャートデプロイメントパッケージの使用方法を説明するために、プライベートサービスを作成します。

  1. Compute Nest コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[マイサービス] をクリックします。 [マイサービス] ページの [作成済みサービス] タブで、[サービスの作成] をクリックします。

  3. [サービスの作成] ページで、[サービス作成方法の選択][カスタム起動] に設定し、[サービスの種類の選択][プライベートサービス] に設定し、[次へ: 設定の構成] をクリックします。

    image

  4. プロンプトに従って、基本的なサービス情報を入力します。 テンプレートの種類とテンプレートの作成方法を選択し、[デプロイ方法] パラメーターに ROS を選択し、テンプレートの内容を入力します。

    ROS テンプレートで {{ computenest::helmchart::test}}{{ computenest::helm::dockerconfigjson}} を指定します。

    サンプルテンプレート

    説明

    このサンプルテンプレートはテスト専用です。

    ROSTemplateFormatVersion: '2015-09-01'
    Description:
      en: new ack
      zh-cn: 新建ack部署 // 新しい 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> // リソースの購入期間が月の場合、期間の値の範囲は 1 ~ 9、12、24、36、48、または 60 です。<br><b><font color='red'>ECS インスタンスタイプがプリペイドで有効な場合</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: 可用区 //ゾーン ID
      EcsInstanceType:
        Type: String
        Label:
          en: Instance Type
          zh-cn: 实例类型 //インスタンスタイプ
        AssociationProperty: ALIYUN::ECS::Instance::InstanceType
        AssociationPropertyMetadata:
          ZoneId: ${ZoneId}
          InstanceChargeType: ${InstanceChargeType}
      EcsInstancePassword:
        NoEcho: true
        Type: String
        AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
        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,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号) // 長さ 8 ~ 30、3 項目(大文字、小文字、数字、() `~!@#$%^&*_-+=|{}[]:;'<>,.?/ の特殊記号)を含める必要があります。
        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: Server System Disk Category
          zh-cn: Server系统盘磁盘类型 //サーバーシステムディスクの種類
        Default: cloud_essd
      ServerSystemDiskSize:
        Type: Number
        Label:
          en: Server System Disk Size(GB)
          zh-cn: Server节点系统盘大小(GB) //サーバーノードシステムディスクサイズ (GB)
        MinValue: 1
        Default: 500
      VpcCidrBlock:
        Type: String
        Label:
          en: VPC CIDR IPv4 Block
          zh-cn: 专有网络IPv4网段 // VPC CIDR IPv4 ブロック
        Description:
          zh-cn: VPC的ip地址段范围,<br>您可以使用以下的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> // VPC の IP アドレス範囲、<br>次の 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: '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: 交换机子网网段 // VSwitch CIDR ブロック
        Description:
          zh-cn: 必须属于VPC的子网段。 // VPC のサブネットセグメントに属している必要があります。
          en: Must belong to the subnet segment of 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>创建成功后不能修改</b></font> // 有効なプライベートネットワークセグメント、つまり次のネットワークセグメントとそのサブネットを入力してください: 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>作成後に変更することはできません</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 网络 CIDR // Pod ネットワーク 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 内已有 Kubernetes 集群使用的网段重复。 <font color='blue'><b>创建成功后不能修改</b></font> // オプションの範囲: 10.0.0.0/16-24、172.16-31.0.0/16-24、192.168.0.0/16-24<br> VPC および VPC 内の既存の Kubernetes クラスタで使用されているセグメントと重複することはできません。<font color='blue'><b>作成後に変更することはできません</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 // 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: access to the pod network // pod ネットワークへのアクセス
              NicType: intranet
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: all
              SourceCidrIp:
                Ref: VpcCidrBlock
              Description: access to the VPC // VPC へのアクセス
              NicType: intranet
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: icmp
              SourceCidrIp: 0.0.0.0/0
              Description: access to the ICMP 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
    
                # Install the 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
                # When the execution of the code is successful, ROS calls back WaitCondition to stop waiting. // コードの実行が成功すると、ROS は WaitCondition を呼び出して待機を停止します。    
              - PublicAddress: 
                  Fn::Select:
                    - 0
                    - Fn::GetAtt:
                        - CsghubServerInstance
                        - PublicIps
          InstanceIds:
            Fn::GetAtt:
              - CsghubServerInstance
              - InstanceIds
          Timeout: 3600
  5. [デプロイメントパッケージの関連付け] セクションで Helm チャートの関連付けを構成します。 [デプロイメントパッケージの関連付け] をクリックします。 [デプロイメントパッケージの選択] ダイアログボックスで、デプロイメントパッケージとバージョンを選択し、[OK] をクリックして、Helm チャートデプロイメントパッケージをデプロイメントパッケージ識別子に関連付けます。

    image

  6. サービスを保存してテストします。 サービスがテストに合格したら、サービスが Compute Nest のレビュー基準を満たしているかどうかを確認し、サービスをレビューに提出します。 詳細については、「レビュー基準」をご参照ください。

  7. サービスが作成された後、サービス詳細ページでデプロイメントパッケージとの関連付けを表示します。

    image

参照

  • Compute Nest でサービスを作成する方法の詳細については、「サービスを作成する」をご参照ください。

  • デプロイメントパッケージまたはデプロイメントパッケージバージョンが不要になった場合は、削除できます。詳細については、「デプロイメントパッケージを削除する」をご参照ください。

  • コンテンツなど、デプロイメントパッケージを変更する必要がある場合は、新しいバージョンを作成できます。詳細については、「バージョンを作成する」をご参照ください。

  • デプロイメントパッケージの更新設定を構成する方法の詳細については、「サービス更新設定を構成する」をご参照ください。