Artifact Repository
Repository
General
A repository is used to store the Docker images and Chart deployment packages uploaded by users. You can upload your own modified images and Chart deployment packages to a repository, or download the uploaded Docker images and Chart deployment packages from a repository.
Creating a Repository
In the ZStack Zaku main menu, click . On the Repository page, click Create Repository and the Create Repository page is displayed.
- Name: set the name of the repository. Naming rules: the length is limited to 2 to 50 characters, and the input can contain only lowercase letters, digits and the special characters (_) (-) (.). A special character cannot be used at the beginning or the end, and cannot be used consecutively.
- Description: optional. Note the information about the repository.
- Type: set the type of the repository. Two types are
supported, public and private.
- Public: images can be pulled from a public repository without login, and all users on the platform can view the repository.
- Private: login credentials are required to pull images from a private repository, and only the administrators and the users of the project to which the repository belongs can view the repository.
Managing Repositories
In the ZStack Zaku main menu, click to enter the Repository page.
| Operation | Description |
|---|---|
| Create Repository | Create a repository. |
| Edit Repository | Modify the description and the type of the repository. |
| Reset Password | Reset the user password of the repository. With
this password, you can log in to the repository using the
docker/nerdctl login command. Note:
|
| Repository Details | Enter the repository details page to view the basic information of the repository and the image export records, and manage the images and the Chart deployment packages in the repository in a centralized way. |
| Change Project | Change the project to which the repository
belongs. Note: After the project is changed, the members of the
original project can no longer view or manage the repository and
the resources in it. |
| Delete Repository | Delete the repository. Note: To delete a
repository, all the images and the Chart deployment packages in
it must be deleted first. |
Repository Details
Docker Images
Uploading Images
On the repository details page, click Image to enter the Image tab, and click Upload. The Upload Image page is displayed.
- Online upload
- File upload
- Command line upload
Online Upload
- Upload Method: select Online Upload.
- External Image Address: enter the URL of the external image. If the URL does not contain an image tag, the system uses the latest tag by default.
- Architecture: select the architecture of the image to
be uploaded. linux/arm64 and linux/amd64 are available, and multiple choices
are supported.
Note: For a multi-architecture image, if
only one architecture is selected, only the layers of the selected
architecture are uploaded. - Username: enter the username of the repository to which the image belongs. When the image is stored in a private repository, this parameter must be entered for identity verification when the image is pulled.
- Password: enter the password corresponding to the username. When the image is stored in a private repository, this parameter must be entered for identity verification when the image is pulled.
File Upload
- Upload Method: select File Upload.
- Image File: select the image file to be uploaded. Only
the image tarballs exported by container management tools can be
uploaded.
Note: You can generate an image tarball using the docker or nerdctl
command, for example:# docker save -o $OUTPUT_FILENAME $IMAGE:$TAG # $OUTPUT_FILENAME is the name of the generated tarball, and $IMAGE:$TAG is the image and the tag to be compressed. # Note: For a multi-architecture image, this command exports only the single architecture that has been pulled locally (the architecture of the current machine by default, or the architecture of the last pull if the image has been pulled multiple times). Multi-architecture export is not supported. To keep all the architectures, use nerdctl.# nerdctl save -o $OUTPUT_FILENAME $IMAGE:$TAG --platform $PLATFORM # $OUTPUT_FILENAME is the name of the generated tarball, and $IMAGE:$TAG is the image and the tag to be compressed. # Note: For a multi-architecture image, the architecture can be specified by the --platform parameter. $PLATFORM is the specific architecture identifier, such as linux/amd64 or linux/arm64. Multiple architectures can be specified and separated by commas. - Architecture: select the architecture of the image to
be uploaded. linux/arm64 and linux/amd64 are available, and multiple choices
are supported.
Note:
- For a multi-architecture image, if only one architecture is selected, only the layers of the selected architecture are uploaded.
- Make sure that the image in the tarball contains the selected architecture, otherwise the upload fails.
Command Line Upload
- On the Upload Image page, select Command Line Upload as the upload method, and select the command type.
- Copy the command provided at the bottom of the page to a terminal that can connect to the external repository, modify the variable parameters and execute the command to complete the image upload.
Downloading and Pulling Images
Downloading Images
- On the repository details page, enter the Image tab, find the image to be downloaded, and click .
- Enter the Image Export Record tab on the image details
page, find the image exported in step 1, and click to download the image tarball to the local host.
Note:
- An exported image must be downloaded within 24 hours, otherwise the export record becomes invalid and the image needs to be exported again.
- When a large number of large images are exported in a short period of time, the storage space may be full and no more images can be exported. In this case, you can delete the exported images that have been downloaded first.
- (Optional) Execute the
docker loadcommand to import the downloaded image into another repository for use, for example:# docker load -i $IMAGE.TAR # $IMAGE.TAR is the name of the image tarball.
Pulling Images
- On the repository details page, enter the Image tab, find the image to be pulled, and click to view the image address and the docker and nerdctl commands used to log in to the repository and pull the image.
- Copy the commands and use them in the scenarios where the image needs to be pulled.
Chart
Uploading Chart
On the repository details page, click Chart to enter the Chart tab, and click Upload. The Upload Chart page is displayed, where you can upload a local Chart deployment package.
Installing Application
Releasing an application means releasing a Chart deployment package to a cluster and deploying an application instance. ZStack Zaku supports releasing a Chart in a repository with one click.
On the repository details page, enter the Chart tab, find the Chart to be released, and click . The Release Application page is displayed.
- Application Name: set the name of the application. The length is limited to 2 to 20 characters, and the input can contain only lowercase letters, digits and the separator (-). It must start with a lowercase letter and end with a lowercase letter or a digit.
- Version: set the version of the application.
- Description: optional. Note the information about the application.
- Cluster: select the cluster to which the application is released.
- Namespace: select the namespace to which the application is released.
- Chart Version: select the Chart version. The default is the version displayed in the Chart list.
- Application Configuration: modify the content of the values file in the deployment package using YAML. You can click Modified Content to view the comparison before and after the modification.
Note: After the application is released, you can click in the ZStack Zaku main menu to enter the
Application page, where you can view and manage the
application.Artifact Sync
General
Artifact Sync automatically synchronizes OCI artifacts such as container images and Helm Charts to a repository by connecting to an external registry, which achieves unified management of artifact assets.
- External registry: it is the data source of the synchronization. An external registry must be added and its access information must be configured first. Currently, registries of the Harbor type are supported.
- Sync task: it defines which resources are synchronized from which external registry to which repository. Manual and scheduled triggers are supported.
Adding an External Registry
In the ZStack Zaku main menu, click to enter the Artifact Sync page. Click External Registries to enter the External Registries tab, and click Add External Registry to enter the Add External Registry page.
- Name: set the name of the external registry. Naming rules: the length is limited to 1 to 64 characters, and the input can contain only Chinese characters, English letters, digits and the following 7 characters: "-", "_", ".", "(", ")", ":" and "+". The name must be unique on the whole platform.
- Description: optional. Note the related information. The length is limited to 128 characters.
- Type: the type of the external registry, which is fixed to Harbor currently.
- Service URL: enter the access address of the external registry. It must start with http:// or https://, for example, https://192.168.1.1:1003.
- Access Account: enter the account used to access the external registry.
- Access Credential: enter the password or credential used to access the external registry.
- HTTPS Certificate Verification: select whether to verify the HTTPS certificate of the external registry. It is disabled by default.
Note: When you save the configuration, the system tests the
connection to the external registry. If the connection fails, check whether the service URL,
the access account, the access credential and the HTTPS certificate verification are
configured correctly.Managing External Registries
In the ZStack Zaku main menu, click to enter the Artifact Sync page. Click External Registries to enter the External Registries tab.
External registries support the following operations:
| Operation | Description |
|---|---|
| Add External Registry | Add an external registry. |
| Edit External Registry | Modify the configuration of the external registry. Note:
|
| External Registry Details | Enter the external registry details page to view the basic information of the external registry and the list of the associated sync tasks. |
| Delete External Registry | Delete the external registry. Note: An external registry with associated
sync tasks cannot be deleted. Delete the associated sync tasks
first. |
Creating a Sync Task
In the ZStack Zaku main menu, click to enter the Artifact Sync page. On the Sync Task tab, click Create Sync Task to enter the Create Sync Task page.
- Name: set the name of the sync task. Naming rules: the length is limited to 2 to 128 characters, and the input can contain only lowercase letters, digits and the separators "_", "-" and ".". A separator cannot be used at the beginning or the end. The name must be unique on the whole platform.
- Description: optional. Note the related information. The length is limited to 128 characters.
- Sync Method: it is fixed to Sync from External to Local currently, that is, resources are pulled from an external registry to a repository.
- Sync Resource Type: select the type of the resources to be
synchronized. The default is All.
- All: synchronizes all the resources in the repository, including container images, Helm Chart application packages and various artifacts of the OCI specification, such as multi-architecture indexes, image signatures and SBOMs.
- Image: synchronizes only the basic layer data of container images.
- Other OCI artifacts (excluding Charts): synchronizes only the standard OCI artifacts other than images, such as Cosign signature files and independent large model weight artifacts. Helm Charts are not included.
Note: All is recommended. If another
option is selected, Helm Chart application packages, multi-architecture
routing, image signatures and security audit information may be lost, which may
cause application deployment failures. Usually only special scenarios such as
AI and large models, where the transfer of extremely large files needs to be
avoided, require an adjustment. - Source Registry: select the external registry used as the synchronization source from the drawer. If there is no external registry in the current project, you can click Create to add an external registry first.
- Local Target Repository: select the target repository of the synchronization. All the repositories under the current project are available.
- Sync Resource Filter Conditions: set the filter conditions
for synchronizing the resources from the external registry. Only the resources
that meet the conditions are synchronized.
- External Repository Name: specify the top-level path space of the external resources, such as the project name in Harbor. Multiple names can be entered and separated by commas.
- Image/Artifact Name: specify the resource name to be matched. If it is left empty, all the resources are matched by default.
- Tag: specify the resource tag to be matched. If it is left empty, all the tags are matched by default.
Note:
- The image/artifact name and the tag support wildcard rules: "*" matches any characters (excluding the path slash /), "**" matches any characters (including the path slash /), "?" matches any single character, and "{alt1,alt2}" matches any one of the options in the braces.
- Tag filtering mainly takes effect on images and Charts, and may not take effect on some special OCI artifacts that do not carry traditional tags. When such artifacts exist, it is recommended to leave the tag empty.
- Overwrite Resources with the Same Name: it is disabled by default. When a resource with the same name and the same tag already exists in the target repository and the content on the source side is updated, enabling this option forcibly overwrites the resource on the target side. If it is disabled, the synchronization is skipped.
- Trigger Method: select the trigger method of the sync task.
Manual and Scheduled are available, and the default is manual.
When Scheduled is selected, a scheduling rule must be set. The execution
frequency can be by day, by week, by month or custom. For the custom method, a
valid cron expression must be entered.
Note: The custom
crontab rule is based on UTC time. For example, if 0 0 3 * * ? is entered, the
synchronization is triggered automatically at 03:00 UTC every day. - Maximum Bandwidth Limit: set the maximum transfer rate allowed for the sync task. The unit can be Kbps or Mbps. The default is -1, which means no limit.
Managing Sync Tasks
In the ZStack Zaku main menu, click to enter the Artifact Sync page. The Sync Task tab is displayed by default.
Sync tasks support the following operations:
| Operation | Description |
|---|---|
| Create Sync Task | Create a sync task. |
| Execute | Trigger a synchronization immediately according to the
current configuration. Note: A task in the
disabled state cannot be executed. |
| Edit Sync Task | Modify the configuration of the sync task. Note:
|
| Enable | Enable the sync task. After it is enabled, if the trigger method is scheduled, the system runs the task automatically according to the specified rule. |
| Disable | Disable the sync task. After it is disabled, the
scheduling rule becomes invalid and the system no longer synchronizes
automatically. Note: The synchronization
in progress when the task is disabled continues to run and is not
terminated forcibly. |
| Sync Task Details | Enter the sync task details page to view the basic information of the sync task, the sync resource filter conditions and the execution records. |
| Delete Sync Task | Delete the sync task. Note: A sync task with an execution record
in progress cannot be deleted. |
Sync Task Details
- Overview: view the basic information of the sync task and the sync resource filter conditions. You can click the local target repository to go to the details page of the corresponding repository, and click the source registry to go to the details page of the corresponding external registry.
- Execution Record: view all the execution records of the sync task, including
the status, the success percentage, the total number of resources, the start and end
time and the trigger method. The status of an execution record can be In Progress,
Succeeded, Failed or Stopped. For a record in progress, the Stop
Execution operation can be performed.
Note: Stopping the execution terminates the current
synchronization, which cannot be resumed. To synchronize again, trigger the sync
task again. - Execution record details: click the ID of an execution record to enter the execution record details page, where you can view the resource overview of the execution (the total number and the number of resources in each status) and the synchronization details of each resource (the source, the target, the status and the start and end time). You can click View Log to view the synchronization log of a single resource.
YAML Template Repo
General
The YAML Template Repo stores YAML templates written by users, and provides example templates for more than ten common Kubernetes resources such as Deployment, Statefulset, Service, Configmap and PersistentVolumeClaim. You can use the example templates in the YAML Template Repo to quickly write the YAML text you need.
Creating Templates
In the ZStack Zaku main menu, click to enter the YAML Template Repo page. Click Create Template and the Create Template page is displayed.
- Name: set the name of the template. Naming rules: the length is limited to 2 to 50 characters, and the input can contain only lowercase letters, digits and the separator (-). The separator cannot be used at the beginning or the end of the name.
- Description: optional. Note the information about the template.
- Example Template: select an example template of a common resource such as Deployment, Statefulset, Service, Configmap or PersistentVolumeClaim, or select a custom template.
- Template Content: when an example template of a common resource is selected, you can modify it based on the YAML example. When a custom template is selected, you can enter the YAML content yourself. The YAML of multiple resources can be entered and separated by (---).
Managing Templates
In the ZStack Zaku main menu, click to enter the YAML Template Repo page.
| Operation | Description |
|---|---|
| Create Template | Create a template from an example template, or create a custom template. |
| Edit Template | Modify the description and the content of the template. |
| Change Project | Change the project to which the template
belongs. Note: After the change, the members of the original project
can no longer view or manage the template. |
| Delete Template | Delete the template. |
Application Market
General
The application market provides official Chart deployment packages such as nfs, nginx and nginx-ingress-controller, which can be released to a cluster with one click and deployed as application instances.
Installing Application
Releasing an application means releasing a Chart deployment package to a cluster and deploying an application instance. ZStack Zaku supports releasing a Chart package in the application market with one click.
- Application Name: set the name of the application. The length is limited to 2 to 20 characters, and the input can contain only lowercase letters, digits and the separator (-). It must start with a lowercase letter and end with a lowercase letter or a digit.
- Version: set the version of the application.
- Description: optional. Note the information about the application.
- Cluster: select the cluster to which the application is released.
- Namespace: select the namespace to which the application is released.
- Chart Version: displays the default Chart version, which cannot be modified currently.
- Application Configuration: modify the configuration content
of the values file in the deployment package. Two modification methods are
supported, Form Editing and YAML
Editing. You can click Modified Content to
view the comparison before and after the modification.
- Form editing: provides a visual modification method for common configurations, and is mainly used for relatively simple configuration modifications.
- YAML editing: modify the application YAML in the YAML editor. It is mainly used for relatively complex configuration modifications.
Note: After the application is released, you can click in the ZStack Zaku main menu to enter the
Application page, where you can view and manage the
application.