Salta ai contenuti

Mirror di immagini e chart

Per ogni chart, elenca le immagini prima di mirrorare:

Finestra del terminale
helm pull k8sgpt/k8sgpt-operator --destination ./charts
Finestra del terminale
helm pull robusta/holmes --destination ./charts
Finestra del terminale
helm template x ./charts/k8sgpt-operator-*.tgz | grep -oE 'image: *"?[^" ]+' | awk '{print $2}' | tr -d '"' | sort -u
Finestra del terminale
helm template x ./charts/holmes-*.tgz | grep -oE 'image: *"?[^" ]+' | awk '{print $2}' | tr -d '"' | sort -u

L’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.

Finestra del terminale
skopeo login registry.internal
Finestra del terminale
skopeo copy --all docker://docker.io/ollama/ollama:<tag> docker://registry.internal/ai/ollama:<tag>
Finestra del terminale
skopeo copy --all docker://ghcr.io/k8sgpt-ai/k8sgpt:v0.4.1 docker://registry.internal/ai/k8sgpt:v0.4.1
Finestra del terminale
skopeo copy --all docker://ghcr.io/k8sgpt-ai/k8sgpt-operator:<tag> docker://registry.internal/ai/k8sgpt-operator:<tag>
Finestra del terminale
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):

Finestra del terminale
while read -r img; do skopeo copy --all "docker://$img" "docker://registry.internal/ai/${img##*/}"; done < images.txt

Senza connettività diretta tra le due reti, passa da un archivio:

Finestra del terminale
skopeo copy --all docker://docker.io/ollama/ollama:<tag> oci-archive:ollama-<tag>.tar
Finestra del terminale
skopeo copy --all oci-archive:ollama-<tag>.tar docker://registry.internal/ai/ollama:<tag>

Digest per il pinning nei manifest:

Finestra del terminale
skopeo inspect --format '{{.Digest}}' docker://registry.internal/ai/ollama:<tag>
Finestra del terminale
helm registry login registry.internal
Finestra del terminale
helm push ./charts/k8sgpt-operator-*.tgz oci://registry.internal/ai/charts
Finestra del terminale
helm push ./charts/holmes-*.tgz oci://registry.internal/ai/charts
Finestra del terminale
helm show chart oci://registry.internal/ai/charts/k8sgpt-operator
Finestra del terminale
cat > isc-ai.yaml <<'EOF2'
apiVersion: mirror.openshift.io/v2alpha1
kind: ImageSetConfiguration
mirror:
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>
EOF2

Lato connesso, su disco:

Finestra del terminale
oc mirror -c isc-ai.yaml file:///data/mirror-ai --v2

Lato disconnesso, dal disco al registry:

Finestra del terminale
oc mirror -c isc-ai.yaml --from file:///data/mirror-ai docker://registry.internal/ai --v2
Finestra del terminale
ls /data/mirror-ai/working-dir/cluster-resources/
Finestra del terminale
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.