Mirror di immagini e chart
Inventario delle immagini
Sezione intitolata “Inventario delle immagini”Per ogni chart, elenca le immagini prima di mirrorare:
helm pull k8sgpt/k8sgpt-operator --destination ./chartshelm pull robusta/holmes --destination ./chartshelm template x ./charts/k8sgpt-operator-*.tgz | grep -oE 'image: *"?[^" ]+' | awk '{print $2}' | tr -d '"' | sort -uhelm template x ./charts/holmes-*.tgz | grep -oE 'image: *"?[^" ]+' | awk '{print $2}' | tr -d '"' | sort -uL’immagine runtime di k8sgpt (ghcr.io/k8sgpt-ai/k8sgpt:<version>) non compare nel chart: la avvia l’operator in base al CR. Aggiungila a mano.
skopeo (qualsiasi Kubernetes)
Sezione intitolata “skopeo (qualsiasi Kubernetes)”skopeo login registry.internalskopeo copy --all docker://docker.io/ollama/ollama:<tag> docker://registry.internal/ai/ollama:<tag>skopeo copy --all docker://ghcr.io/k8sgpt-ai/k8sgpt:v0.4.1 docker://registry.internal/ai/k8sgpt:v0.4.1skopeo copy --all docker://ghcr.io/k8sgpt-ai/k8sgpt-operator:<tag> docker://registry.internal/ai/k8sgpt-operator:<tag>skopeo copy --all docker://docker.io/vllm/vllm-openai:<tag> docker://registry.internal/ai/vllm-openai:<tag>Mirror di una lista in un colpo (file con una immagine sorgente per riga):
while read -r img; do skopeo copy --all "docker://$img" "docker://registry.internal/ai/${img##*/}"; done < images.txtSenza connettività diretta tra le due reti, passa da un archivio:
skopeo copy --all docker://docker.io/ollama/ollama:<tag> oci-archive:ollama-<tag>.tarskopeo copy --all oci-archive:ollama-<tag>.tar docker://registry.internal/ai/ollama:<tag>Digest per il pinning nei manifest:
skopeo inspect --format '{{.Digest}}' docker://registry.internal/ai/ollama:<tag>Chart nel registry OCI
Sezione intitolata “Chart nel registry OCI”helm registry login registry.internalhelm push ./charts/k8sgpt-operator-*.tgz oci://registry.internal/ai/chartshelm push ./charts/holmes-*.tgz oci://registry.internal/ai/chartshelm show chart oci://registry.internal/ai/charts/k8sgpt-operatoroc-mirror v2 (OpenShift)
Sezione intitolata “oc-mirror v2 (OpenShift)”cat > isc-ai.yaml <<'EOF2'apiVersion: mirror.openshift.io/v2alpha1kind: ImageSetConfigurationmirror: additionalImages: - name: docker.io/ollama/ollama:<tag> - name: docker.io/vllm/vllm-openai:<tag> - name: ghcr.io/k8sgpt-ai/k8sgpt:v0.4.1 helm: repositories: - name: k8sgpt url: https://charts.k8sgpt.ai/ charts: - name: k8sgpt-operator version: <chart-version> - name: robusta url: https://robusta-charts.storage.googleapis.com charts: - name: holmes version: <chart-version>EOF2Lato connesso, su disco:
oc mirror -c isc-ai.yaml file:///data/mirror-ai --v2Lato disconnesso, dal disco al registry:
oc mirror -c isc-ai.yaml --from file:///data/mirror-ai docker://registry.internal/ai --v2ls /data/mirror-ai/working-dir/cluster-resources/oc apply -f /data/mirror-ai/working-dir/cluster-resources/Gli IDMS/ITMS generati reindirizzano i pull verso il registry interno senza cambiare i nomi delle immagini nei manifest.