Todos os produtos
Search
Central de documentação

Compute Nest:Pacote de Helm chart

Última atualização: Jun 28, 2026

Este tópico descreve os casos de uso e os princípios de um pacote de implantação de Helm chart e explica como criá-lo e usá-lo.

Casos de uso

  • Se você precisar manter seus Helm charts privados durante a implantação de serviços, recomendamos usar pacotes de implantação de Helm chart no Compute Nest. O Compute Nest armazena esses pacotes em um repositório ACR e os obtém com segurança por meio de uma chave temporária.

    Importante

    Para Helm charts com acesso público, implante-os especificando a URL pública no modelo ROS do serviço. Nenhuma configuração adicional é necessária.

  • Helm charts são geralmente usados em serviços com estruturas complexas e diversos arquivos de implantação YAML para gerenciar esses arquivos de forma organizada. No Compute Nest, os pacotes de implantação de Helm chart ficam hospedados em um repositório ACR. Para mais informações sobre o mecanismo de upload e pull, consulte artefato de imagem de contêiner.

Como funciona

Para usar um pacote de implantação de Helm chart em um modelo de serviço, defina os dois placeholders a seguir. O sistema substitui esses placeholders pelos valores reais durante a implantação:

  • {{computenest::helmchart::test}}: placeholder do pacote de implantação. O sistema o substitui pela URL completa do Helm chart, por exemplo, oci://compute-nest-chart-registry.cn-hangzhou.cr.aliyuncs.com/${aliUid}/wordpress:15.4.1.

  • {{computenest::helm::dockerconfigjson}}: segredo de pull do repositório, usado para obter Helm charts hospedados no repositório ACR do Compute Nest.

A implantação de Helm chart usa o módulo público MODULE::ACS::ComputeNest::FluxOciHelmDeploy definido pelo Compute Nest. Esse módulo usa o componente open source FluxCD e atualmente oferece suporte apenas a repositórios de charts no formato OCI. O repositório para pacotes de implantação de Helm chart do Compute Nest usa o formato OCI. O modelo de exemplo abaixo mostra como implantar um pacote de Helm chart usando MODULE::ACS::ComputeNest::FluxOciHelmDeploy:

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

Criação e uso

Pré-requisitos

Verifique se a CLI do Helm está instalada e se você tem um Helm chart empacotado. Caso contrário, consulte Enviar e obter Helm charts.

Criar um pacote de Helm chart

  1. Configure as informações básicas do pacote de implantação.

    1. Faça login no console do Compute Nest. No painel de navegação à esquerda, escolha Service Deployment Package. Na aba Packages, clique em Create Deployment Package.

    2. Na seção Basic Information, configure os parâmetros a seguir.

      Parâmetro

      Descrição

      Deployment Package Name

      O nome pode conter caracteres chineses, letras, dígitos e sublinhados (_). Deve ter entre 3 e 128 caracteres, considerando que cada caractere chinês conta como dois. Não é possível alterar o nome do pacote de implantação após a criação.

      Version Name

      O nome pode conter caracteres chineses, letras, dígitos e sublinhados (_). Deve ter entre 3 e 50 caracteres, considerando que cada caractere chinês conta como dois.

      Description

      A descrição deve ter entre 10 e 500 caracteres. Cada caractere chinês conta como dois.

      Resource Group

      Selecione o grupo de recursos ao qual o pacote de implantação pertence.

      Os grupos de recursos permitem organizar seus recursos em nuvem por uso, permissões ou propriedade, viabilizando o gerenciamento hierárquico de recursos para múltiplos usuários e projetos dentro de uma organização. Para mais informações, consulte grupos de recursos.

      Tag Settings

      Selecione ou insira uma chave de tag e um valor de tag completos para adicionar uma tag ao pacote de implantação. É possível vincular até 20 tags a um recurso. Se não houver chaves ou valores disponíveis, crie uma tag personalizada. Para mais informações, consulte Criar e vincular uma tag personalizada.

  2. Configure o pacote de implantação de Helm chart.

    1. Na seção Deployment Package Content, defina Deployment Package Type como Helm chart.

    2. Clique em Obtain Access Credential para obter uma chave temporária para o namespace. Em seguida, execute os comandos fornecidos no terminal.

      Na aba Helm chart, a página exibe um processo de três etapas. Etapa 1: faça login no repositório de imagens executando o comando helm registry login. Etapa 2: aplique a tag ao chart e envie-o para o repositório de imagens. Etapa 3: insira o nome do chart, por exemplo, chart-name, e execute o comando helm push chart-name.tgz oci://xxx para concluir o envio.

    3. Após enviar o Helm chart para o repositório ACR do Compute Nest, selecione o chart recém-enviado e clique em Publish Deployment Package.

  3. Visualize o pacote de implantação.

    1. Retorne à página Service Deployment Package. Clique no nome do seu pacote de implantação para abrir a página Deployment Package Details e verificar o progresso da criação.

    2. Quando o status mudar para Available, o pacote de implantação estará pronto para uso.

Usar um pacote de Helm chart****

Esta seção explica como usar um pacote de implantação de Helm chart, tomando como exemplo a criação de um serviço privado.

  1. Faça login no console do Compute Nest.

  2. No painel de navegação à esquerda, clique em My Services. Na aba Created Services da página My Services, clique em Create Service.

  3. Na página Create New Service, selecione Custom launch como método de criação, escolha Private Service como tipo de serviço e clique em Next: Configure Settings.

  4. Insira as informações básicas do serviço e forneça um modelo ROS.

    No modelo ROS do serviço, adicione o placeholder do pacote de implantação de Helm chart {{ computenest::helmchart::test}} e o placeholder do segredo de pull {{ computenest::helm::dockerconfigjson}}.

    Modelo de exemplo

    Nota

    Este modelo de exemplo destina-se apenas a fins de teste.

    ROSTemplateFormatVersion: '2015-09-01'
    Description:
      en: new ack deployment
      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 subscription duration is measured in months, valid values for Period are 1 to 9, 12, 24, 36, 48, and 60. <br><b><font color='red'>This parameter is valid only when ECS instances are subscription-based.</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: 可用区
      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: The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
          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: Server System Disk Category
          zh-cn: Server系统盘磁盘类型
        Default: cloud_essd
      ServerSystemDiskSize:
        Type: Number
        Label:
          en: Server System Disk Size(GB)
          zh-cn: Server节点系统盘大小(GB)
        MinValue: 1
        Default: 500
      VpcCidrBlock:
        Type: String
        Label:
          en: VPC CIDR IPv4 Block
          zh-cn: 专有网络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>
          en: 'The IP address range of the VPC in CIDR block format. <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: 交换机子网网段
        Description:
          zh-cn: 必须属于VPC的子网段。
          en: The CIDR block must be a subnet of the VPC's CIDR block.
        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>
          en: 'Specify a valid private CIDR block from the following ranges or their subnets: 10.0.0.0/8, 172.16.0.0/12-16, and 192.168.0.0/16.<br>The CIDR block cannot overlap with the CIDR block of the VPC or those of existing Kubernetes clusters in the VPC. <font color=''blue''><b>This cannot be changed after creation.</b></font>'
        Label:
          zh-cn: 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>
          en: 'Supported ranges: 10.0.0.0/16-24, 172.16.0.0/16-24, and 192.168.0.0/16-24.<br>The CIDR block cannot overlap with the CIDR block of the VPC or those of existing Kubernetes clusters in the VPC. <font color=''blue''><b>This cannot be changed after 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: Allow access from the pod network.
              NicType: intranet
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: all
              SourceCidrIp:
                Ref: VpcCidrBlock
              Description: Allow access from the VPC network.
              NicType: intranet
            - PortRange: '-1/-1'
              Priority: 1
              IpProtocol: icmp
              SourceCidrIp: 0.0.0.0/0
              Description: Allow access over 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 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
                # The successful execution of the command signals the WaitCondition to complete its wait.
              - PublicAddress: 
                  Fn::Select:
                    - 0
                    - Fn::GetAtt:
                        - CsghubServerInstance
                        - PublicIps
          InstanceIds:
            Fn::GetAtt:
              - CsghubServerInstance
              - InstanceIds
          Timeout: 3600
  5. Na seção Deployment Package Association, configure o campo Associate Helm. Clique em Select Deployment Package, escolha o pacote de implantação e a versão desejados na caixa de diálogo e clique em OK para associá-lo ao placeholder.

    A caixa de diálogo exibe o Association identifier em um formato como {{ computenest::helmchart::wordpress }}. Apenas pacotes de implantação de Helm chart podem ser selecionados. Após concluir a associação, a seção Helm Association na parte inferior da página exibirá o mapeamento entre o identificador de associação e o pacote de implantação associado.

  6. Depois de criar e testar o serviço com êxito, verifique-o conforme os critérios de revisão do Compute Nest e envie-o para aprovação. Para mais detalhes sobre os critérios, consulte Critérios de revisão.

  7. Após a criação do serviço, visualize a associação do pacote de implantação na página de detalhes do serviço.

    Na página de detalhes do serviço, clique na aba Deployment Association e, em seguida, na subaba Helm Association. Visualize o identificador de associação (por exemplo, {{ computenest::helmchart::wordpress }}), bem como as informações do pacote de implantação correspondente e o número da versão.

Documentos relacionados