Upload Packages

平台提供了一个命令行工具 violet,用于将从 Marketplace 中 Customer Portal 下载的软件包上传到平台。

violet 支持上传以下类型的软件包:

  • Operator
  • 集群插件
  • Helm Chart

Cluster PluginsOperatorHub 中的软件包状态显示为 Absent 时,需要使用该工具上传对应的软件包。

violet 的上传流程主要包括以下步骤:

  1. 解包并提取软件包信息
  2. 将镜像推送到镜像仓库
  3. 在平台上创建 ArtifactArtifactVersion 资源

下载工具

登录 Customer Portal,进入 Downloads 页面,点击 CLI Tools,下载与您的操作系统和架构匹配的二进制文件。

下载完成后,将工具安装到服务器或 PC 上。

Linux 或 macOS

非 root 用户:

# Linux x86
sudo mv -f violet_linux_amd64 /usr/local/bin/violet && sudo chmod +x /usr/local/bin/violet
# Linux ARM
sudo mv -f violet_linux_arm64 /usr/local/bin/violet && sudo chmod +x /usr/local/bin/violet
# macOS x86
sudo mv -f violet_darwin_amd64 /usr/local/bin/violet && sudo chmod +x /usr/local/bin/violet
# macOS ARM
sudo mv -f violet_darwin_arm64 /usr/local/bin/violet && sudo chmod +x /usr/local/bin/violet

root 用户:

# Linux x86
mv -f violet_linux_amd64 /usr/bin/violet && chmod +x /usr/bin/violet
# Linux ARM
mv -f violet_linux_arm64 /usr/bin/violet && chmod +x /usr/bin/violet
# macOS x86
mv -f violet_darwin_amd64 /usr/bin/violet && chmod +x /usr/bin/violet
# macOS ARM
mv -f violet_darwin_arm64 /usr/bin/violet && chmod +x /usr/bin/violet

Windows

  1. 下载文件并重命名为 violet.exe,或者使用 PowerShell 重命名:

    # Windows x86
    mv -Force violet_windows_amd64.exe violet.exe
  2. 在 PowerShell 中运行该工具。

注意:如果工具路径未添加到环境变量,运行命令时必须指定完整路径。

前提条件

权限要求

  • 必须提供有效的平台用户账号(用户名和密码)。
  • 账号的 role 属性必须设置为 System,且角色名称必须为 platform-admin-system

注意: 如果账号的 role 属性设置为 Custom,则无法使用该工具。

使用方法

通用参数

多个 violet 命令支持以下参数,具体用法请参见各命令章节。

平台连接参数

--platform-address <平台访问 URL>     # 平台访问地址,例如 "https://example.com"
--platform-username <平台用户名>       # 平台用户的用户名
--platform-password <平台密码>         # 平台用户的密码

镜像仓库参数

--dest-repo <镜像仓库地址>             # 指定目标镜像仓库地址,例如 "harbor.demo.io"
--username <仓库用户名>                # 指定镜像仓库的用户名
--password <仓库密码>                  # 指定镜像仓库的密码
--no-auth                            # 指定镜像仓库不需要认证
--plain                              # 指定镜像仓库使用 HTTP 而非 HTTPS
WARNING

IPv6 地址限制

对于 --platform-address--dest-repo 参数:

  • 如果使用 IP 地址(非域名),不支持 IPv6 格式
  • 仅支持 IPv4 地址或域名

violet show

上传软件包前,可以使用 violet show 命令预览软件包详情。

violet show topolvm-operator.v2.3.0.tgz
Name: NativeStor
Type: bundle
Arch: [linux/amd64]
Version: 2.3.0

violet show topolvm-operator.v2.3.0.tgz --all
Name: NativeStor
Type: bundle
Arch: []
Version: 2.3.0
Artifact: harbor.demo.io/acp/topolvm-operator-bundle:v3.11.0
RelateImages: [harbor.demo.io/acp/topolvm-operator:v3.11.0 harbor.demo.io/acp/topolvm:v3.11.0 harbor.demo.io/3rdparty/k8scsi/csi-provisioner:v3.00 ...]

violet list

在升级平台时,可以列出所有已上传到平台的插件,并将结果导出到文件。 生成的文件可上传至 Alauda Cloud,以便下载所需的插件包。

可选标志

--output-file <输出文件路径>            # 输出插件列表文件的路径

平台连接参数(--platform-address--platform-username--platform-password)详见通用参数

violet verify

使用 violet verify 命令在上传前验证一个或多个软件包的签名。 支持两种验证方式:checksumGPG。 软件包(.tgz)及其对应的签名文件必须位于同一目录。

violet verify example.tgz
# 或验证目录内所有软件包
violet verify packages_dir_name

示例输出:

verify path: /path/to/packages
====== Verification Summary ======
Verified successfully with GPG: 2 file(s)
  - /path/to/packages/redis-operator.tgz
  - /path/to/packages/mysql-operator.tgz

Verified successfully with checksum: 1 file(s)
  - /path/to/packages/nginx-controller.tgz

Verification failed: 1 file(s)
  - /path/to/packages/etcd-operator.tgz

No verification file found: 1 file(s)
  - /path/to/packages/demo-plugin.tgz

说明:

  • Verified successfully with GPG — 列出的文件已通过 GPG 签名文件.sig 后缀)成功验证。
  • Verified successfully with checksum — 通过校验和文件(如 .sha256)验证通过。
  • Verification failed — 列出的文件因签名不匹配或无效验证失败。
  • No verification file found — 目录中未找到对应的 .sig(GPG)或校验和文件。

可选标志

--debug       使用调试日志级别。
-h, --help    显示 verify 命令的帮助信息。

violet push

以下示例展示常见使用场景。

平台连接和镜像仓库参数详见通用参数

可选标志

--clusters <集群名称列表>               # 指定目标集群,多个集群用逗号分隔(如 region1,region2)

当指定了 --dest-repo,必须提供镜像仓库的认证信息或使用 --no-auth

上传 Operator 到多个集群

violet push opensearch-operator.v3.14.2.tgz \
  --platform-address "https://example.com" \
  --platform-username "<platform_user>" \
  --platform-password "<platform_password>" \
  --clusters region1,region2
INFO
  • 如果未指定 --clusters,默认上传到 global 集群。\

上传 Operator 到备用 global 集群

violet push opensearch-operator.v3.14.2.tgz \
  --platform-address "https://<standby-platform-address>" \
  --platform-username "<platform_user>" \
  --platform-password "<platform_password>" \
  --dest-repo "<standby-cluster-VIP>:11443" --username "<registry-username>" --password "<registry-password>"
WARNING

使用 violet 上传软件包到备用集群时:

  • 必须指定参数 --dest-repo <备用集群 VIP 地址>
  • 参数 --platform-address 必须设置为 备用集群 的平台访问地址
  • 必须提供备用集群镜像仓库的认证信息,或使用 --no-auth

否则,软件包将上传到 主集群 的镜像仓库,导致备用集群无法安装或升级扩展。

上传集群插件

violet push plugins-cloudedge-v0.3.16-hybrid.tgz \
  --platform-address "https://example.com" \
  --platform-username "<platform_user>" \
  --platform-password "<platform_password>"
INFO
  • 上传集群插件时无需指定 --clusters 参数,平台会根据亲和性配置自动分发。 如果指定了 --clusters,该参数将被忽略。\

上传 Helm Chart 到 chart 仓库

violet push plugins-cloudedge-v0.3.16-hybrid.tgz \
  --platform-address "https://example.com" \
  --platform-username "<platform_user>" \
  --platform-password "<platform_password>"
INFO
  • Helm Chart 只能上传到平台提供的默认 public-charts 仓库。\

一次性上传所有软件包

当从 Marketplace 下载多个软件包时,可以将它们放在同一目录下,一次性上传:

violet push <packages_dir_name> \
  --platform-address "https://example.com" \
  --platform-username "<platform_user>" \
  --platform-password "<platform_password>" \
  --clusters "<cluster_name>"
WARNING

当升级目标为 global 集群 时,可以省略 --clusters 参数,默认上传到 global 集群。

但当升级目标为业务集群时,必须指定 --clusters <workload_cluster_name> 参数。