Author: Amanda Jennewein
Updated: June 2024
Audience: Self-hosted Airgap Replicated - KOTS
Summary
In an air-gapped installation, the kURL registry stores the application images. The registry add-on can remove unused images, and KOTS triggers this functionality in specific scenarios.
For example, when upgrading to an application version that does not use specific images anymore, those images will be removed from the registry if:
1- The application does not support rollbacks.
2- The images are not listed in the additionalImages section of the KOTS application spec.
3- The garbage collection for images was not manually disabled.
There is a known bug in the registry add-on where if an image is garbage collected, it can no longer be used even if it is pushed again.
Solution
1- Restart the registry pods:
kubectl rollout restart deploy/registry -n kurl
2- Re-push the image(s) from the airgap bundle using the CLI:
kubectl kots admin-console push-images \
</path/to/bundle.airgap> \
$(kubectl get svc registry -n kurl -o jsonpath='{.spec.clusterIP}')/<app-slug> \
--registry-username kurl \
--registry-password $(kubectl get secret registry-creds -o=jsonpath='{.data.\.dockerconfigjson}' | base64 -d | grep -Po '"password"\s*:\s*"\K[^"]+')
Replace </path/to/bundle.airgap>
with the path to the airgap bundle.
Replace <app-slug>
with the application slug.
Prevention
Now, to prevent the issue from happening in the future, you can do one of the following:
- Add the images to additionalImages 2 in the KOTS application spec so they will not be part of the image garbage collection.
- Disable image garbage collection. Reference: Image Registry for Embedded kURL Clusters | Replicated Docs 7
- Enable rollback 1 so that image garbage collection never runs.
Replicated Documentation
kURL - pods fail to pull images from the kURL registry even though images were pushed from the airgap bundle
Please feel free to leave feedback in the comments below.
Related to
Comments
0 comments
Article is closed for comments.