Mirantis Container Cloud (MCC) becomes part of Mirantis OpenStack for Kubernetes (MOSK)!
Starting with MOSK 25.2, the MOSK documentation set covers all product layers, including MOSK management (formerly MCC). This means everything you need is in one place. The separate MCC documentation site will be retired, so please update your bookmarks for continued easy access to the latest content.
Create a local mirror¶
After you prepare an offline copy of artifacts as described in Prepare an offline copy for an air-gapped cluster, proceed to create and configure a local mirror that is a demo CDN for testing purposes and for transfering an offline copy to a private CDN. For more details about demo CDN, see Demo CDN storage size.
Prepare a demo CDN¶
Log in to the node where the offline copy is supposed to be located.
Make sure that the offline copy content is availabe in the
AIRGAPPED_WORKSPACE
directory by either mounting the offline copy volume to theAIRGAPPED_WORKSPACE
mount point, or copying its entire content toAIRGAPPED_WORKSPACE
.Change the directory to
<AIRGAPPED_WORKSPACE>/kaas-bootstrap
.Make sure that the
AIRGAPPED_WORKSPACE
variable inairgapped.env
matches your airgapped workspace path.Import the helper Docker images:
./docker-load.sh
Export the required files and images. For example:
./airgapped.sh export \ --kaas-release kaas-2-29-6 \ --cluster-release mke-16-4-6-3-7-24 \ --cluster-release mosk-17-4-6-25-1-1
Example of system response extract:
... 2025-08-14 11:13:07 [INFO ] Exporting files ... Reading cache 2025-08-14 11:13:19 [INFO ] Exporting filesystem layout ... 2025-08-14 11:13:24 [INFO ] Exporting filesystem layout - done. 2025-08-14 11:13:24 [INFO ] Exporting files - OK. Total files - 43406, failed files - 0. 2025-08-14 11:13:24 [INFO ] Exporting images ... Reading cache 2025-08-14 11:13:24 [INFO ] Exporting images to OCI layout ... 2025-08-14 11:13:25 [INFO ] Exporting images to OCI layout - done. 2025-08-14 11:13:25 [INFO ] Exporting images - OK. Total images - 161, failed images - 0.
Initialize the demo CDN services:
./airgapped.sh demo --init --san-ip <DEMO_CDN_IP>
DEMO_CDN_IP
is an IP address of a system where you run the demo CDN Docker services. It can be either the host IP address of a physical node or a floating IP address of an OpenStack instance.Warning
Run the demo --init command only once as it creates a CA certificate each time unconditionally. Previously created
.crt / .key
files will be backed up, but backup keeps only one most recent version of each file.The CA certificate named
demo-ca.crt
is saved in the${AIRGAPPED_WORKSPACE}/shared/
directory and is available by thehttp://<DEMO_CDN_IP>:8080/demo-ca.crt
link.Start the demo CDN services:
./airgapped.sh demo up -d
Push Docker images. For example:
./airgapped.sh push \ --kaas-release kaas-2-29-6 \ --cluster-release mke-16-4-6-3-7-24 \ --cluster-release mosk-17-4-6-25-1-1 \ --url-map="registry=<DEMO_CDN_IP>" \ --insecure-registry
Example of system response extract:
... 2025-08-14 11:31:14 [INFO ] Pushing images to remote registry ... 2025-08-14 11:32:50 [INFO ] Pushing images done (passed / failed): 161 / 0
Validate the demo CDN. For example:
./airgapped.sh validate \ --kaas-release kaas-2-29-6 \ --cluster-release mke-16-4-6-3-7-24 \ --url-map "binary=https://<DEMO_CDN_IP>:8081" \ --url-map "debian=https://<DEMO_CDN_IP>:8082" \ --url-map "mcr-repo=https://<DEMO_CDN_IP>:8083" \ --url-map "registry=<DEMO_CDN_IP>"
Example of system response extract:
... 2025-08-14 11:48:47 [INFO ] Validating files ... 2025-08-14 11:48:47 [INFO ] Validating remote files ... Total files: 43406, running 75 workers. 2025-08-14 11:57:35 [INFO ] Validating release files ... Total files: 343, running 41 workers. 2025-08-14 11:57:37 [INFO ] Validating release files - OK. Total files: 343, bad files - 0. 2025-08-14 11:57:37 [INFO ] Validating remote files - OK. Total files: 43406, bad files - 0. 2025-08-14 11:57:37 [INFO ] Validating files - OK. 2025-08-14 11:57:37 [INFO ] Validating images ... 2025-08-14 11:57:37 [INFO ] Validating remote images ... Total images 161, running 18 threads. 2025-08-14 11:57:38 [INFO ] Validating remote images - OK. Total images - 161, failed images - 0, errors - 0 2025-08-14 11:57:38 [INFO ] Validating images - OK.
If some artifacts are missing:
Add missing artifacts:
For Docker images, run airgapped.sh push
For files, run airgapped.sh export --files --no-images
Repeat the demo CDN validation.
Transfer artifacts from the demo CDN to private CDN¶
Copy validated artifacts from the demo CDN to the private CDN by keeping the directory structure under each CDN intact. Use your preferred tool, for example, skopeo,
curl
,rsync
, or JFrog CLI.If you need complete lists of files and images available on each type of demo CDN, use the previously prepared
make-artifacts-list.py
script to generate these lists:./make-artifacts-list.py
The lists of files and images are available in the following locations:
binary
resource files –>http://<DEMO_CDN_IP>:8080/binary_files.txt
debian
resource files –>http://<DEMO_CDN_IP>:8080/debian_repo_files.txt
mcr-repo
resource files –>http://<DEMO_CDN_IP>:8080/mcr_repo_files.txt
registry
resource images –>http://<DEMO_CDN_IP>:8080/docker_images.txt
Caution
To keep these lists synchronized with the demo CDN content, run
make-artifacts-list.py
each time after the airgapped.sh export command.Mandatory. Validate the artifacts in the private CDN after transfering. For example:
./airgapped.sh validate \ --kaas-release kaas-2-29-6 \ --cluster-release mke-16-4-6-3-7-24 \ --cluster-release mke-16-4-6-3-7-24 \ --url-map "binary=<MCC_CDN_BINARY>" \ --url-map "debian=<MCC_CDN_DEBIAN>" \ --url-map "mcr-repo=<MCC_CDN_MCR_REPO>" \ --url-map "registry=<MCC_CDN_DOCKER>"
Example of system response extract:
... 2025-08-14 11:48:47 [INFO ] Validating files ... 2025-08-14 11:48:47 [INFO ] Validating remote files ... Total files: 43406, running 75 workers. 2025-08-14 11:57:35 [INFO ] Validating release files ... Total files: 343, running 41 workers. 2025-08-14 11:57:37 [INFO ] Validating release files - OK. Total files: 343, bad files - 0. 2025-08-14 11:57:37 [INFO ] Validating remote files - OK. Total files: 43406, bad files - 0. 2025-08-14 11:57:37 [INFO ] Validating files - OK. 2025-08-14 11:57:37 [INFO ] Validating images ... 2025-08-14 11:57:37 [INFO ] Validating remote images ... Total images 161, running 18 threads. 2025-08-14 11:57:38 [INFO ] Validating remote images - OK. Total images - 161, failed images - 0, errors - 0 2025-08-14 11:57:38 [INFO ] Validating images - OK.
If some artifacts are missing in the offline copy:
Re-run
make-artifacts-list.py
to update the artifacts list.Repeat the artifacts transfering steps.
Repeat the artifacts validation.
Proceed to Deploy an air-gapped management cluster.