Upload Packages

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

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

  • Operator
  • 集群插件
  • Helm Chart

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

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

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

目录

下载工具

登录 Custom 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 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 push

以下示例展示了常见的使用场景。
在深入示例前,以下是命令中常用的一些可选参数:

--platform-address <platform access URL>     # 平台访问地址,例如 "https://example.com"
--platform-username <platform user>          # 平台用户的用户名
--platform-password <platform password>      # 平台用户的密码
--clusters <cluster names>                   # 指定目标集群,多个集群用逗号分隔(例如 region1,region2)

--dest-repo <image repository URL>           # 指定目标镜像仓库地址。上传扩展到备用集群时必须指定。
                                                 当指定 `--dest-repo` 时,必须提供镜像仓库的认证信息或使用 `--no-auth`。
--username <registry user>                   # 指定镜像仓库的用户名。
--password <registry password>               # 指定镜像仓库的密码。
--no-auth                                    # 指定镜像仓库无需认证。
--plain                                      # 指定镜像仓库使用 HTTP 而非 HTTPS。

--skip-crs                                   # 跳过创建 `Artifact` 和 `ArtifactVersion` 资源,仅推送镜像。
                                                 这样可以避免 Operator 或集群插件在 <Term name="productShort" /> 升级过程中被提前更新。
--skip-push                                  # 仅创建 `Artifact` 和 `ArtifactVersion` 资源,不推送镜像。

上传 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,Operator 默认上传到 global 集群。\

上传 Operator 到备用 global 集群

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

上传集群插件

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> \
  --skip-crs \
  --platform-address "https://example.com" \
  --platform-username "<platform_user>" \
  --platform-password "<platform_password>"

仅创建目录中所有软件包的 CR 资源

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

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