Upload Packages
平台提供了一个命令行工具 violet
,用于将从 Custom Portal 的 Marketplace 下载的软件包上传到平台。
violet
支持上传以下类型的软件包:
当 Cluster Plugins 或 OperatorHub 中的软件包状态显示为 Absent
时,您需要使用该工具上传对应的软件包。
violet
的上传流程主要包括以下步骤:
- 解包并提取软件包信息
- 将镜像推送到镜像仓库
- 在平台上创建 Artifact 和 ArtifactVersion 资源
目录
下载工具
登录 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
-
下载文件并重命名为 violet.exe
,或者使用 PowerShell 重命名:
# Windows x86
mv -Force violet_windows_amd64.exe violet.exe
-
在 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>"