Ringkasan eksekutif

Podman merilis v6.2.0-RC1, release candidate yang mengumpulkan banyak fitur kecil tapi berguna di podman push, kube play, Quadlet, dan API, sekaligus puluhan bugfix lintas platform. Yang menarik perhatian saya adalah beberapa sinyal deprecation yang jelas: ini RC yang perlu dibaca, bukan cuma diupgrade begitu saja, karena ada perilaku lama yang akan hilang di Podman 7.0.

Masalah yang diselesaikan

Beberapa hal yang selama ini ganjil di Podman dibenahi di sini. Push image multi-arch selalu mendorong seluruh manifest list, padahal kadang kita cuma mau push satu platform spesifik ke registry yang tidak expect manifest list. kube play juga kurang kontrol: tidak ada cara resmi menolak field YAML yang tidak dikenal, tidak bisa set label custom ke resource yang dibuat, dan kalau Deployment punya replicas lebih dari 1, Podman cuma akan membuat satu pod. Di sisi Quadlet, konfigurasi umask container dan strategi dependency terhadap mount path (RequiresMountsFor vs WantsMountsFor) belum bisa diatur per-unit. Dan secara umum, kompatibilitas API dengan Docker masih punya celah kecil, seperti healthcheck {} yang salah diinterpretasikan, atau endpoint Compat yang belum mengikuti field yang Docker expect.

Fitur utama dan contoh kode

Yang paling langsung kepakai buat saya:

  • podman push --platform — push satu manifest platform-specific saja, bukan seluruh manifest list.
  • podman kube play --validate (#18332) — mengatur bagaimana field YAML yang tidak dikenal ditangani.
  • podman kube play --label (#26450) — set label ke container/pod/volume/secret yang dibuat dari manifest.
  • podman kube play --multiple-pods (#26769) — bikin banyak pod kalau Deployment minta replicas > 1.
  • podman kube play --build sekarang bisa build dari subdirectory context (#28148).
  • Quadlet .container punya key baru Umask (#25278), dan semua Quadlet file punya key SetMountsDependency (#29946) untuk pilih RequiresMountsFor, WantsMountsFor, atau tanpa dependency sama sekali.
  • podman farm list --quiet / --noheading, dan podman artifact ls --format=json / --quiet.
  • podman create --passwd — sekarang paritas dengan podman run untuk menambah entry ke /etc/passwd.
  • podman events --filter network= (#29387) untuk filter event per network.
  • podman auto-update sekarang jalan di remote client, plus opsi baru --filter untuk update container yang match filter tertentu saja.
  • StartInterval di healthcheck image sekarang benar-benar dihormati (#27724), jadi startup healthcheck interval dari image metadata ikut dipakai.
  • podman image scp --compression-format / --compression-level (#23192) untuk compress saat transfer image antar host.
  • podman ps --sort sekarang bisa sort by pod, dan --filter status!= (#21398) untuk exclude status tertentu.

Ilustrasi penggunaan kube play dengan label dan multiple pods (contoh pemakaian, bukan dari source):

podman kube play \
  --validate=strict \
  --label app=myservice \
  --multiple-pods \
  deployment.yaml

Dan contoh Quadlet .container dengan Umask serta SetMountsDependency:

[Container]
Image=docker.io/library/nginx:latest
Umask=0027
SetMountsDependency=wants

Dampak dan catatan upgrade

Beberapa hal yang wajib dicatat sebelum upgrade:

  • Build requirement naik: Podman sekarang butuh Go v1.26 atau lebih baru untuk di-build dari source.
  • Seccomp config via annotation di kube play resmi deprecated — gantinya pakai securityContext.seccompProfile di YAML Kubernetes. Dukungan annotation lama akan dihapus total di Podman 7.0.
  • --cpu-rt-period dan --cpu-rt-runtime di create/run/update/container clone sekarang disembunyikan dari dokumentasi (sudah tidak fungsional sejak cgroups v1 dihapus) dan akan dihapus sepenuhnya di v7.
  • --health-startup-interval sekarang punya alias --health-start-interval.
  • Event driver journald tidak lagi menyertakan timestamp sendiri di log event (#29835), karena journald sudah punya timestamp bawaan — bisa berdampak kalau ada tooling yang parsing timestamp dari field itu.
  • --image-volume=bind sekarang mengeluarkan warning karena deprecated; default baru yang didokumentasikan adalah anonymous.
  • Inspect container membawa field baru (DNSNames, IsInitCtr, InitContainerType, #29811) dan Aliases sekarang cuma berisi DNS alias yang ditambahkan user (bukan semua alias) — kalau ada script yang baca Aliases mentah-mentah, perlu dicek ulang.
  • Di sisi API, ada endpoint baru POST /libpod/autoupdate dan GET /distribution/{name}/json (#17726), plus field HostConfig.Mounts.TmpfsOptions.Options di Compat Create — relevan buat yang integrasi langsung ke REST API daripada lewat CLI.

Karena ini masih RC, saya pribadi akan nunggu bugfix list-nya (lumayan panjang, termasuk soal podman machine di Windows dan --userns=keep-id) settle dulu sebelum pakai di production.

---

Pertama diumumkan di Podman releases. Baca sumber aslinya untuk detail lengkap.

Baca juga