Violet Tool User Guide
Using the violet tool, you can package Operators, Charts, and cluster plugins, and then upload the corresponding artifacts to the platform’s app store through the packaged files.
Tool Usage Process
-
Download the violet tool and install it in the deployment execution environment (this step is required only once).
-
Execute the
violet createcommand to initialize the application (ensure that the necessary artifacts such as images related to the application are prepared in advance). -
Execute the
violet packagecommand to package the application. -
Execute the
violet pushcommand to unzip and upload the application to the platform’s app store with one click.
Download and Install the Tool
The violet tool supports use on Linux, MacOS, and Windows operating systems, with both x86 and ARM architectures. Platform administrators can download the violet tool from the Platform Management -> Catalog -> Application Listing page.
After downloading the binary file according to your current system environment, proceed with the installation:
-
For Linux or macOS Systems, refer to the following commands:
# For Linux x86 mv -f violet_linux_amd64 /usr/bin/violet # For Linux ARM mv -f violet_linux_arm64 /usr/bin/violet # For macOS x86 mv -f violet_darwin_amd64 /usr/bin/violet # For macOS ARM mv -f violet_darwin_arm64 /usr/bin/violet -
For Windows Systems, refer to the following command:
# For Windows x86 mv -Force violet_windows_amd64.exe violet.exe
For Windows system, rename the downloaded file to violet.exe. Then, navigate to the directory where violet.exe is located and run the tool through the PowerShell command line.
Notes
When you wish to publish your application to the image repository used by the deployment platform (Global Cluster) for management, depending on the type of application you intend to publish, simply follow the instructions in one of the following sections: Packaging and Publishing Operators, Packaging and Publishing Charts, or Packaging and Publishing Cluster Plugins.
If you want to publish your application to an image repository used by business applications (not the one used by the deployment platform) for management, please read List the application to non-platform repository first, and then proceed with the appropriate sections below to complete the application publishing process.
Packaging and Listing Operators
Packaging
Description
The artifacts required for exporting an Operator consist of:
- An operator bundle image (container image)
- Related container images required by the operator
Example: A custom operator named opensearch-operator with an OCI path in the harbor repository: harbor.demo.io/middleware/opensearchproject/opensearch-operator-bundle:v3.14.2
The container images used by this operator are:
harbor.demo.io/middleware/opensearchproject/busybox:1.27.2harbor.demo.io/middleware/opensearchproject/opensearch-operator:v3.14.2harbor.demo.io/middleware/opensearchproject/opensearch-dashboards:v1.0.0-17a23e1aharbor.demo.io/middleware/opensearchproject/opensearch:v1.0.0-17a23e1a
During packaging, the operator bundle image and container images need to be exported together and packaged into a single file for easy transmission.
Steps
Taking opensearch-operator as an example, the packaging steps are as follows:
Note:
- The
violet createcommand currently only supports specifying an OCI chart address through the--artifactparameter as the source for packaging the chart. - The values specified by
--usernameand--passwordare the username and password for authentication when the image repository specified by the--artifactparameter has basic authentication enabled. - The
violet createcommand will record the type of the current operator in thetargetCatalogSourcefield based on thecsvannotation[provider-type]field in the current operator bundle, supporting: “platform” or “system”. It will not be recorded if it is empty or other fields.
- Initialization
Initialize a specific Operator to be packaged using the violet create command.
-
violet create
violet create opensearch-operator --artifact harbor.demo.io/middleware/opensearchproject/opensearch-operator-bundle:v3.14.2 --username <user> --password <password> --platforms linux/amd64 --platforms linux/arm64
Parameters Explanation:
args[0]: The first parameter after theviolet createcommand, indicating a directory to be packaged (which should not exist and will be created automatically).--artifact: Specifies the OCI address of the artifact to be packaged, which in this example is the operator bundle image address ofopensearch-operator.--plain: Specify this parameter when the artifact’s image repository is accessed via HTTP (not used in this example sinceharbor.demo.iorequires HTTPS access).--no-auth: Specify this parameter when the artifact’s image repository does not have basic authentication enabled (not used in this example sinceharbor.demo.iorequires username and password authentication).--username: Specify this parameter to set the username when the artifact’s image repository has basic authentication enabled.--password: Specify this parameter to set the password when the artifact’s image repository has basic authentication enabled.--platforms: Specifies the supported system architectures for the container images to be exported.linux/amd64represents x86, andlinux/arm64represents ARM. If not specified, it defaults to the current system architecture.--skip-package-images: Indicates that any OCI artifacts and container images will be ignored during packaging (for scenarios where image migration is not required, only configuration files are generated, and only corresponding CR resources are created during listing).--debug: Prints debug log information.
- Packaging
Package a specific Operator using the violet package command. The packaging command will package the Operator bundle image, all related container images, and the manifest.yaml file into a .tgz file.
-
violet package
violet package opensearch-operator --username <user> --password <password>
Parameters Explanation:
args[0]: The first parameter after theviolet packagecommand, specifying the directory to be packaged that was initialized byviolet create.--plain: Specify this parameter when the image repository is accessed via HTTP (should be the same as theviolet createcommand).--no-auth: Specify this parameter when the image repository does not have basic authentication enabled (should be the same as theviolet createcommand).--username: Specify this parameter to set the username when the image repository has basic authentication enabled (should be the same as theviolet createcommand).--password: Specify this parameter to set the password when the image repository has basic authentication enabled (should be the same as theviolet createcommand).--output: Specifies the file name to be generated after successful packaging (do not include the.tgzsuffix when specifying the name). When this parameter is not specified, the tool’s default naming convention is<Operator Name>.<Operator version>.tgz.--debug: Prints debug log information.
Listing
Description
Preparations before listing:
- Install the violet tool following the steps above.
- Obtain the
.tgzpackage created through the packaging steps and store it in any directory with the violet tool environment installed. - Ensure that the current environment can access the container platform address to be listed.
Steps
Use the violet push command to automatically unpack the .tgz package, upload all artifacts and images to the platform’s global registry image repository, and list the operator in the operatorhub.
Note:
- When violet performs listing, it needs to specify the platform address and user information, and it will automatically verify whether the current user has platform administrator permissions after authentication.
- Performing listing operations through violet includes pushing artifacts, creating necessary CR resources, and after completion, the newly listed operator can be seen on the platform’s operatorhub page.
- When violet pushes artifacts and images, it will check whether the corresponding image exists in the image repository. If it exists, it will prompt that the current image already exists (unless the
--forceparameter is added, which will forcibly overwrite the current artifacts in the image repository). - Supports specifying a file directory to process and list multiple
.tgzpackages in a loop. - Supports specifying third-party image repository addresses, usernames, and passwords to push images to the specified repository.
- During listing, the
targetCatalogSourcefield in the configuration file is read, and the Operator is automatically listed in the platform or system catalogsource. Otherwise, it is listed in the custom catalogsource by default.
Scenario for listing to the platform’s default image repository (recommended):
-
violet push
violet push opensearch-operator.v3.14.2.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> or violet push opensearch-operator.v3.14.2.tgz --platform-address https://192.168.0.1 --platform-token <token>
Scenario for custom image repository address:
-
violet push
violet push opensearch-operator.v3.14.2.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> --dst-repo 10.10.1.1:11443 --username <user> --password <password> or violet push opensearch-operator.v3.14.2.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> --dst-repo 10.10.1.1:11443 --no-auth --plain
Parameter Explanations:
- arg[0] The tgz file packaged by violet package, supporting directories containing tgz packages (batch publishing).
--platform-addressAccess address of the container platform environment.--platform-usernameUsername for logging in to the container platform environment using basicAuth.--platform-passwordPassword for logging in to the container platform environment using basicAuth.--platform-tokenToken content for logging in to the container platform environment using token.--skip-pushIndicates to ignore pushing artifacts and related images, defaults to false.--forceIndicates to forcibly overwrite existing artifacts and related images, and forcibly update existing CR resources, defaults to false.--dest-repoTarget image repository address, specified in scenarios with custom image repository addresses.--plainSpecifies this parameter when accessing the custom image repository via http.--no-authSpecifies this parameter when the custom image repository does not enable basic authentication.--usernameSpecifies this parameter to set the username when the custom image repository enables basic authentication.--passwordSpecifies this parameter to set the password when the custom image repository enables basic authentication.--image-pull-secretThe secret name for pulling images from the custom image repository, typically stored in the global system namespace. If it does not exist, it needs to be created manually (refer to the example below for creation commands).--target-chartrepoIndicates which catalogsource the operator is expected to be published to. If this parameter is not specified, if the targetCatalogSource value recorded during violet packaging exists, it will be used; otherwise, it will default to being published to the custom catalogsource. Specifying this parameter will use the specified parameter value.--clustersIndicates which clusters in the current environment the operator is expected to be published to. Cluster names are comma-separated strings, e.g., gloabl,cluster1,cluster2. By default, it is only published to the gloabl cluster.--debugPrints debug log information.
imagePullSecret Creation Reference Example:
-
image pull secret create
kubectl create secret docker-registry <secretName> -n cpaas-system --docker-server=<registryAddress> --docker-username=<username> --docker-password=<password> --docker-email=<email>
After successfully executing the violet push command, go to the platform’s Platform Management -> Catalog -> Operators -> OperatorHub page to check if the operator is displayed in the interface.
Packaging and Listing Charts
Packaging
Description
Helm charts require the following artifacts to be exported:
- OCI Chart stored in the image repository
- Relevant container images required by the chart
Example: For a chart named chartmuseum to be packaged, its OCI path stored in the harbor repository is: harbor.demo.io/3rdparty/chart-chartmuseum:v3.16.1.
The container image used by this chart is: harbor.demo.io/3rdparty/chartmuseum:v3.16.0.
During packaging, the OCI Chart and container image must be exported together and packaged into a single file for easy transmission.
Operation
Taking the chartmuseum chart as an example, the packaging steps are as follows:
Note:
- The
violet createcommand currently only supports specifying an OCI chart address through the--artifactparameter as the source for packaging the chart. - The values specified by
--usernameand--passwordare the username and password for authentication when the image repository specified by the--artifactparameter has basic authentication enabled.
- Initialization
Initialize a chart to be packaged using the violet create command.
-
violet create
violet create chartmuseum --artifact harbor.demo.io/3rdparty/chart-chartmuseum:v3.16.1 --username <user> --password <password> --platforms linux/amd64 --platforms linux/arm64
Parameter Explanation:
args[0]: The first argument after theviolet createcommand, indicating a directory to be packaged (it should not exist, and it will be created automatically).--artifact: Specifies the OCI address of the artifact to be packaged. In the example, it represents the OCI chart address ofchart-chartmuseum.--plain: Specify this parameter when the artifact’s image repository is accessible via HTTP. Since the example’s image repositoryharbor.demo.iorequires HTTPS access, this parameter is not specified.--no-auth: Specify this parameter when the artifact’s image repository does not have basic authentication enabled. Since the example’s image repositoryharbor.demo.iorequires username and password authentication, this parameter is not specified.--username: Specify this parameter to set the username when the artifact’s image repository has basic authentication enabled.--password: Specify this parameter to set the password when the artifact’s image repository has basic authentication enabled.--platforms: Specifies the supported system architectures for the desired container images.linux/amd64represents x86, andlinux/arm64represents ARM. If not specified, it defaults to the current system architecture.--skip-package-images: Indicates that any OCI artifacts and container images will be ignored during packaging (for scenarios where image migration is not required, and only configuration files need to be generated to create corresponding CR resources during listing).--debug: Prints debug log information.
- Packaging
Package a chart using the violet package command. The packaging command will package the OCI chart artifact, all related container images, and the manifest.yaml file into a .tgz file.
-
violet package
violet package chartmuseum --username <user> --password <password>
Parameter Explanation:
args[0]: The first argument after theviolet packagecommand, specifying the directory to be packaged that was initialized byviolet create.--plain: Specify this parameter when the image repository is accessible via HTTP (keep it the same as theviolet createcommand).--no-auth: Specify this parameter when the image repository does not have basic authentication enabled (keep it the same as theviolet createcommand).--username: Specify this parameter to set the username when the image repository has basic authentication enabled (keep it the same as theviolet createcommand).--password: Specify this parameter to set the password when the image repository has basic authentication enabled (keep it the same as theviolet createcommand).--output: Specifies the file name to be generated after successful packaging (do not include the.tgzsuffix when specifying the name). When this parameter is not specified, the tool’s default naming convention is:<Chart Name>.<Chart version>.tgz.--debug: Prints debug log information.
Publish
Description
Preparations before publishing:
- Install the violet tool by following the steps above
- Obtain the tgz package created through the packaging steps and store it in any directory where the violet tool environment is installed
- Ensure that the current environment can access the container platform address to be published
Using the violet push command, the tgz package will be automatically decompressed, and all artifacts and images will be uploaded to the platform’s global registry image repository, with automatic synchronization to the target template repository (currently only supports public-charts).
Tips:
- When violet executes publishing, it needs to specify the platform address and user information. After authentication, it will automatically check whether the current user has platform administrator permissions
- Executing the publishing operation through violet, including pushing artifacts and creating necessary CR resources, can be seen in the platform’s template repository details page after completion
- When violet pushes artifacts and images, it will check whether the corresponding image exists in the image repository. If it exists, it will prompt that the current image already exists (unless the
--forceparameter is added, which will forcibly overwrite the current artifact in the image repository) - Supports specifying a file directory to process and publish multiple tgz packages in a loop
- Supports specifying third-party image repository addresses, usernames, and passwords to push images to the specified repository
Scenario for publishing to the platform’s default image repository (recommended):
-
violet push
violet push chartmuseum-v3.16.1.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> or violet push chartmuseum-v3.16.1.tgz --platform-address https://192.168.0.1 --platform-token <token>
Scenario for custom image repository address:
-
violet push
violet push chartmuseum-v3.16.1.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> --dst-repo 10.10.1.1:11443 --username <user> --password <password> or violet push chartmuseum-v3.16.1.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> --dst-repo 10.10.1.1:11443 --no-auth --plain
Parameter Description:
- arg[0] The tgz package packaged by violet package, supporting directories containing tgz packages (batch publishing)
--platform-addressThe access address of the container platform environment--platform-usernameThe username for logging in to the container platform environment using basicAuth--platform-passwordThe password for logging in to the container platform environment using basicAuth--platform-tokenThe token content for logging in to the container platform environment using token--skip-pushIndicates to ignore pushing artifacts and related images, default is false--forceIndicates to forcibly overwrite existing artifacts and related images, and forcibly update existing CR resources, default is false--dest-repoThe target image repository address, specify this parameter in the scenario of a custom image repository address--plainSpecify this parameter when accessing a custom image repository via http--no-authSpecify this parameter when the custom image repository does not enable basic authentication--usernameSpecify this parameter to set the username when the custom image repository enables basic authentication--passwordSpecify this parameter to set the password when the custom image repository enables basic authentication--image-pull-secretThe name of the secret for pulling images from the custom image repository, generally stored in the global system namespace. If it does not exist, it needs to be created manually (refer to the example below for the creation command)--target-chartrepoIndicates which template repository the chart is expected to be published to, default is public-charts (this parameter is not currently used, only the public-charts template repository is supported)--debugPrint debug log information
Reference example for creating imagePullSecret:
-
image pull secret create
kubectl create secret docker-registry <secretName> -n cpaas-system --docker-server=<registryAddress> --docker-username=<username> --docker-password=<password> --docker-email=<email>
After the violet push command is executed successfully, go to the platform’s Platform Management -> Catalog -> Chart Repositories and check the details page of the public-charts repository to verify whether the chart is displayed in the interface.
Packaging and Deploying Cluster Plugins
Packaging
Description
A cluster plugin is a specific Helm chart that, compared to a regular chart, includes a ModulePlugin resource recognized by the platform as a cluster plugin. The artifacts that need to be exported include:
- The plugin OCI Chart stored in the image repository
- Related container images required by the chart
- A
ModulePluginresource describing the plugin information
Example: For a plugin named cloudedge, the OCI path stored in the harbor repository is: harbor.demo.io/acp/chart-cloudedge:v3.16.2
The container images used by this plugin are:
harbor.demo.io/acp/artifact-upload-processor:v3.16.2harbor.demo.io/acp/nubes:v3.16.55
The content of the ModulePlugin describing this plugin is referenced as:
-
ModulePlugin yaml
kind: ModulePlugin metadata: annotations: cpaas.io/module-name: 'cloudedge' cpaas.io/display-name: '{"en": "Cloud Edge", "zh": "Yun bian xie tong"}' cpaas.io/built-in-plugin: 'true' labels: cpaas.io/module-catalog: "application" cpaas.io/module-type: 'plugin' cpaas.io/module-name: 'cloudedge' name: cloudedge spec: affinity: clusterAffinity: matchLabels: is-global: "true" matchExpressions: - key: cpaas.io/protocol-stack operator: NotIn values: - IPv6 name: cloudedge logo: "" description: en: "Realize distribution of helm chart to multiple edge clusters in batches" zh: "Shi xian jiang Helm chart pi liang fen fa zhi duo ge bian yuan ji qun" deleteable: true labelCluster: "false" crossClusterDependencies: [] appReleases: - name: cloudedge chartVersions: - name: acp/chart-cloudedge releaseName: cloudedge version: v3.16.2 mainChart: acp/chart-cloudedge upgradeRiskLevel: low upgradeRiskDescription: "Dui yi jing fen fa dao bian yuan ji qun de ying yong wu ying xiang." upgradeRiskDescriptionEn: "No impact on applications already distributed to edge clusters." deleteRiskDescription: "Xie zai hou, wu fa fang wen he shi yong yun bian xie tong xiang guan ye mian he gong neng." deleteRiskDescriptionEn: "Uninstallation prevents access and use of cloudedge collaboration related pages and features."
When packaging, the plugin OCI Chart, container images, and ModulePlugin resource need to be exported together and packaged into a single file for easy transmission.
Tips
- The
ModulePluginyaml resource can be carried in the chart or specified through parameters during packaging. - The packaging tool distinguishes between a Helm chart as a cluster plugin and a user-defined chart based on the presence of the
ModulePluginresource.
Operation
Taking the cloudedge plugin as an example, the packaging steps are as follows:
Note:
- The
violet createcommand currently only supports specifying an OCI chart address through the--artifactparameter as the source of the packaging chart. - The values specified by
--usernameand--passwordare the authenticated username and password when the image repository specified by the--artifactparameter has basic authentication enabled.
- Initialization
Initialize a plugin to be packaged using the violet create command.
-
violet create
violet create cloudedge-plugin --artifact registry.demo.io:60080/acp/chart-cloudedge:v3.16.2 --plain --no-auth --module-plugin cloudedge-module-plugin.yaml --platforms linux/amd64 --platforms linux/arm64
Parameters Explanation:
args[0]: The first parameter after theviolet createcommand, indicating the directory to be packaged (it should not exist and will be created automatically).--artifact: Specifies the OCI address of the artifact to be packaged. In the example, it represents the OCI chart address of chart-cloudedge.--plain: Specify this parameter when the image repository hosting the artifact is accessed via HTTP. In the example, the image repositoryregistry.demo.io:60080requires HTTP access, otherwise, this parameter is not required.--no-auth: Specify this parameter when the image repository hosting the artifact does not have basic authentication enabled. In the example, the image repositoryregistry.demo.io:60080does not require username and password authentication, so this parameter is not required.--username: Specify this parameter to set the username when the image repository hosting the artifact has basic authentication enabled. In the example, the--no-authparameter is specified, indicating that authentication is not required, so this parameter is not needed.--password: Specify this parameter to set the password when the image repository hosting the artifact has basic authentication enabled. In the example, the--no-authparameter is specified, indicating that authentication is not required, so this parameter is not needed.--platforms: Specifies the system architectures supported by the desired exported container images.linux/amd64represents x86, andlinux/arm64represents ARM. If this parameter is not specified, it defaults to the current system architecture.--module-plugin: Specifies the ModulePlugin yaml file of the plugin to be packaged. When specifying a ModulePlugin through this parameter, it will override the ModulePlugin carried in the chart (if it exists).--skip-package-images: Indicates that any OCI artifacts and container images will be ignored during packaging (for scenarios where image migration is not required, only configuration files are generated, and only corresponding CR resources are created during deployment).--debug: Prints debug log information.
- Packaging
Package a plugin using the violet package command. The packaging command will package the OCI chart artifact, all related container images, manifest.yaml file, and moduleplugin.yaml into a tgz file.
-
violet package
violet package cloudedge-plugin --no-auth --plain
Parameters Explanation:
args[0]: The first parameter after theviolet packagecommand, specifying the directory to be packaged that was initialized usingviolet create.--plain: Specify this parameter when the image repository is accessed via HTTP (keep it consistent with theviolet createcommand).--no-auth: Specify this parameter when the image repository does not have basic authentication enabled (keep it consistent with theviolet createcommand).--username: Specify this parameter to set the username when the image repository has basic authentication enabled (keep it consistent with theviolet createcommand).--password: Specify this parameter to set the password when the image repository has basic authentication enabled (keep it consistent with theviolet createcommand).--output: Specifies the filename to be generated upon successful packaging (do not include the.tgzsuffix when specifying a name). When this parameter is not specified, the tool’s default naming convention is<Chart Name>.<Chart version>.tgz.--debug: Prints debug log information.
Publishing
Instructions
Preparations before publishing:
- Install the violet tool by following the steps mentioned above.
- Obtain the tgz package created through the packaging steps mentioned above and store it in any directory with the violet tool environment installed.
- Ensure that the current environment can access the container platform address to be published to.
Operation
The violet push command automatically extracts the tgz package, uploads all artifacts and images to the platform’s global registry image repository, and automatically creates the ModulePlugin resources carried in the tgz package.
Tips:
- When violet executes publishing, it needs to specify the platform address and user information. After authentication, it will automatically check whether the current user has platform administrator privileges.
- Executing the publishing operation through violet, including pushing artifacts and creating necessary CR resources, allows you to see the newly published plugin on the platform’s cluster plugin page after completion.
- When violet pushes artifacts and images, it will check whether the corresponding image exists in the image repository. If it exists, it will prompt that the current image already exists (unless the
--forceparameter is added, which will forcibly overwrite the current artifact in the image repository). - Supports specifying a file directory to process and publish multiple tgz packages in a loop.
- Supports specifying a third-party image repository address, username, and password to push images to the specified repository.
Scenario for publishing to the platform’s default image repository (recommended):
-
violet push
violet push plugins-cloudedge-v0.3.16-hybrid.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> or violet push plugins-cloudedge-v0.3.16-hybrid.tgz --platform-address https://192.168.0.1 --platform-token <token>
Scenario for custom image repository address:
-
violet push
violet push plugins-cloudedge-v0.3.16-hybrid.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> --dst-repo 10.10.1.1:11443 --username <user> --password <password> or violet push plugins-cloudedge-v0.3.16-hybrid.tgz --platform-address https://192.168.0.1 --platform-username <user> --platform-password <password> --dst-repo 10.10.1.1:11443 --no-auth --plain
Parameter Explanations:
- arg[0] The tgz package packaged by violet package, supporting directories containing tgz packages (for batch publishing).
--platform-addressThe access address of the container platform environment.--platform-usernameThe username for logging in to the container platform environment via basicAuth.--platform-passwordThe password for logging in to the container platform environment via basicAuth.--platform-tokenThe token content for logging in to the container platform environment via token.--skip-pushIndicates to ignore pushing artifacts and related images, defaults to false.--forceIndicates to forcibly overwrite existing artifacts and related images and forcibly update existing CR resources, defaults to false.--dest-repoThe target image repository address, specified in scenarios with custom image repository addresses.--plainWhen accessing the custom image repository via http, specify this parameter.--no-authWhen the custom image repository does not enable basic authentication, specify this parameter.--usernameWhen the custom image repository enables basic authentication, specify this parameter to set the username.--passwordWhen the custom image repository enables basic authentication, specify this parameter to set the password.--image-pull-secretThe name of the secret for pulling images from the custom image repository, typically stored in the global system namespace. If it does not exist, it needs to be manually created (see the example below for the creation command).--debugPrints debug log information.
Reference example for creating imagePullSecret:
-
image pull secret create
kubectl create secret docker-registry <secretName> -n cpaas-system --docker-server=<registryAddress> --docker-username=<username> --docker-password=<password> --docker-email=<email>
After the violet push command executes successfully, enter the platform’s Platform Management -> Catalog -> Cluster Plugins page to verify whether the plugin is displayed on the interface.
Auxiliary Operations
Preview Application Package
After obtaining an application package, before preparing it for listing, the platform administrator may want to confirm whether there are any issues with the content in the package. They can use the violet show command to view the application package and choose to list it on the platform after confirming that everything is in order.
-
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.0.0 harbor.demo.io/3rdparty/k8scsi/csi-provisioner:v2.1.1 harbor.demo.io/3rdparty/k8scsi/csi-resizer:v1.3.0 harbor.demo.io/3rdparty/k8scsi/csi-attacher:v3.3.0 harbor.demo.io/3rdparty/k8scsi/csi-snapshotter:v3.0.2 harbor.demo.io/3rdparty/k8scsi/csi-node-driver-registrar:v2.3.0 harbor.demo.io/3rdparty/k8scsi/livenessprobe:v2.4.0]