Import Docker Image ke OpenShift Internal Registry
Pada lingkungan OpenShift disconnected (air-gapped), cluster tidak dapat melakukan pull image secara langsung dari registry publik seperti Docker Hub. Oleh karena itu, image perlu dipindahkan terlebih dahulu ke OpenShift Internal Registry agar dapat digunakan oleh workload di dalam cluster.
Artikel ini membahas proses export image, transfer ke host tujuan, import image, push ke Internal Registry, hingga deployment menggunakan oc new-app.
Prerequisites
- Memiliki akses ke cluster OpenShift.
- Sudah login menggunakan
oc login. - Podman atau Docker telah terpasang.
- Namespace tujuan telah dibuat.
- Route Internal Registry telah diaktifkan.
Export Docker Image
Simpan image menjadi file .tar agar dapat dipindahkan ke host yang memiliki akses ke cluster.
docker save -o /path/to/your/image.tar \
wbitt/network-multitool:openshift
Transfer Image
Salin file image ke host tujuan menggunakan scp.
scp /path/to/your/image.tar \
user@target-machine:/path/on/target/machine/
Import Image
Setelah file berhasil dipindahkan, import image ke Docker atau Podman.
docker load -i image.tar
atau menggunakan Podman:
podman load -i image.tar
Verifikasi bahwa image berhasil diimport.
docker images
Login ke OpenShift Internal Registry
Ambil hostname Internal Registry OpenShift.
HOST=$(oc get route default-route \
-n openshift-image-registry \
--template='{{ .spec.host }}')
Login menggunakan token OpenShift.
podman login \
-u kubeadmin \
-p $(oc whoami -t) \
--tls-verify=false \
$HOST
Tag Image
Sebelum melakukan push, image harus ditag sesuai format registry OpenShift.
podman tag \
docker.io/wbitt/network-multitool:openshift \
default-route-openshift-image-registry.apps.ocp.dev.co.id/nsdummy/network-multitool:latest
Push Image ke Internal Registry
Push image ke OpenShift Internal Registry.
podman push \
default-route-openshift-image-registry.apps.ocp.dev.co.id/nsdummy/network-multitool:latest
Verifikasi ImageStream
Pastikan ImageStream telah berhasil dibuat.
oc get is
Deploy Aplikasi
Deploy image yang telah tersedia pada Internal Registry menggunakan oc new-app.
oc new-app network-multitool:latest \
--name network-multitool
Verifikasi deployment yang telah dibuat.
oc get pods
oc get deployment
oc get svc
Verifikasi
Jika seluruh proses berhasil, ImageStream akan tersedia pada namespace, deployment berhasil dibuat, dan pod akan berada pada status Running.
oc get is
oc get pods
oc get deployment
Catatan
- Pastikan telah login ke OpenShift menggunakan
oc login. - Namespace tujuan harus memiliki permission untuk melakukan push image.
- Gunakan tag image yang konsisten agar mempermudah proses deployment.
- Pada lingkungan disconnected, seluruh image yang dibutuhkan harus dipush ke Internal Registry sebelum digunakan.
Kesimpulan
OpenShift Internal Registry memungkinkan image dari registry eksternal digunakan pada lingkungan disconnected tanpa memerlukan akses internet. Prosesnya meliputi export image, transfer ke host tujuan, import image, autentikasi ke Internal Registry, push image, kemudian deployment menggunakan oc new-app. Dengan pendekatan ini, image dapat dikelola secara terpusat dan digunakan oleh workload di dalam cluster.