Cara Mengaktifkan Pembaruan Wadah Podman Otomatis

Podman adalah platform containerisasi yang sesuai dengan OCI yang sering digunakan sebagai pengganti Docker. Model tanpa daemon dan set fitur yang luas menjadikannya pesaing yang hebat untuk digunakan dalam pengembangan dan produksi.

Dalam artikel ini kami akan menunjukkan cara menggunakan sistem pembaruan otomatis Podman untuk memulai ulang container Anda saat gambar baru dirilis. Podman dapat dikonfigurasi untuk memeriksa pembaruan secara berkala, menarik gambar terbaru, dan membuat ulang wadah yang terpengaruh dengan pengaturannya saat ini.

Mengapa Kontainer Pembaruan Otomatis?

Wadah sering berumur pendek tetapi masih perlu dirawat secara teratur. Kerentanan kritis dalam gambar dapat memberi penyerang pijakan pada aplikasi Anda yang dieksploitasi dalam beberapa jam setelah ditemukan.

Teknologi container paling populer mengharuskan Anda memperbarui container secara manual. Hal ini membebani tim operasi untuk berlangganan pengumuman rilis dan membuat alat yang merilis perubahan baru.

Sistem pembaruan kontainer bawaan Podman mengatasi tantangan ini dan terus memperbarui beban kerja. Penampung dapat diperbarui segera setelah Anda mendorong versi gambar baru, memberikan ketenangan pikiran bahwa penerapan Anda menjalankan tambalan terbaru dan perbaikan bug.

Aktifkan Pembaruan Otomatis

Pembaruan otomatis diaktifkan untuk wadah dengan mengatur io.containers.autoupdate label ketika Anda melakukannya.

$ podman run -d -p 8080:80 \
    --name nginx-container \
    --label io.containers.autoupdate=registry \
    docker.io/library/nginx:latest

Label dapat memiliki dua kemungkinan nilai:

  • registry – Selama pemeriksaan pembaruan, Podman akan menghubungi registri gambar untuk memeriksa apakah tag yang digunakan oleh penampung Anda memiliki versi baru yang tersedia. Gambar akan diambil dan penampung Anda akan dimulai ulang saat hal ini terjadi. Pembaruan registri hanya berfungsi saat Anda menggunakan jalur registri yang sepenuhnya memenuhi syarat – the docker.io/library/nginx:latest referensi yang ditunjukkan di atas dimaksudkan, sebagai nginx:latest terlalu kabur.
  • local – Metode pembaruan ini membatasi Podman untuk melihat gambar kontainer yang sudah ada di sistem file host Anda. Penampung akan dimulai ulang jika versi lokal dari tag gambar berbeda dari versi yang berjalan di penampung. Ini dapat berguna saat merekonstruksi gambar selama pengembangan.

Memiliki label memenuhi syarat wadah sampel NGINX ini untuk pembaruan otomatis. Namun lebih banyak pekerjaan diperlukan sebelum pembaruan benar-benar dapat diterapkan.

Membuat Layanan Systemd

Mekanisme pembaruan Podman mengharuskan container Anda berjalan di dalam layanan systemd. Karena Podman tidak memiliki daemon, ia tidak memiliki pengontrol pusat yang dapat memulai dan menghentikan container Anda. Membungkusnya dalam layanan systemd memberikan kemampuan manajemen siklus hidup dan opsi untuk memulai ulang sebagai respons terhadap peristiwa tertentu.

CLI Podman menyertakan perintah yang membuat definisi unit systemd dari sebuah wadah:

$ podman generate systemd --name nginx-container > /etc/systemd/system/nginx-container.service

Perintah di atas membuat wadah NGINX baru dengan layanan systemd di lokasi yang benar.

Selanjutnya muat ulang systemd untuk mendaftarkan definisi layanan, lalu aktifkan dan mulai layanan:

$ systemctl daemon-reload
$ systemctl enable nginx-container.service
$ systemctl start nginx-container.service

Wadah NGINX Anda sekarang menjadi layanan systemd yang dimulai secara otomatis saat host Anda melakukan booting. Anda dapat menggunakannya systemctl perintah untuk memulai dan menghentikan wadah, alih-alih CLI Podman:

$ systemctl start nginx-container.service
$ systemctl stop nginx-container.service

Untuk menghapus penampung di masa mendatang, Anda harus menghentikan, menonaktifkan, dan menghapus file unit layanan. Mulai ulang systemd setelahnya untuk menerapkan perubahan sepenuhnya.

$ systemctl stop nginx-container.service
$ systemctl disable nginx-container.service
$ rm /etc/systemd/system/nginx-container.service
$ systemctl daemon-reload

Melakukan Pembaruan

Sekarang semuanya sudah diatur untuk secara otomatis memperbarui wadah NGINX Anda dengan sukses. Anda dapat menjalankan pemeriksaan pembaruan sesuai permintaan dengan Podman’s auto-update memerintah:

$ podman auto-update
Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
...
UNIT                     CONTAINER      IMAGE                               POLICY      UPDATED
nginx-container.service  2de4ba96b09    docker.io/library/nginx:latest      registry    true

Ini memperbarui wadah dalam layanan systemd yang dapat diakses oleh pengguna yang menjalankan perintah. Anda mungkin perlu menggunakan sudo ikuti contoh di atas; jika demikian, jalankan auto-update perintah sebagai root juga:

$ sudo podman auto-update

Itu registry pendekatan pembaruan digunakan dalam contoh ini sehingga Podman terhubung ke registri gambar, memeriksa perubahan, dan kemudian menarik gambar baru jika sesuai. Keluaran perintah menunjukkan apakah wadah setiap layanan telah diperbarui.

Karena container dikelola oleh systemd, Podman dapat menentukan apakah container baru telah berhasil dijalankan. Podman akan secara otomatis mengembalikan ke versi gambar sebelumnya jika kegagalan pembaruan terdeteksi. Agar ini berfungsi dengan andal, aplikasi di dalam wadah harus memberi tahu systemd ketika telah berhasil dimulai. Hal ini dapat dilakukan dengan menjalankan systemd-notify --ready.

Memeriksa Pembaruan

Terkadang, Anda mungkin perlu memeriksa apakah armada kontainer Anda memiliki pembaruan yang tersedia tanpa segera menerapkannya. Menggunakan auto-update perintah dengan --dry-run tandai untuk mendapatkan daftar layanan tempat gambar yang diperbarui telah diterbitkan:

$ podman auto-update --dry-run
...
UNIT                     CONTAINER      IMAGE                               POLICY      UPDATED
nginx-container.service  2de4ba96b09    docker.io/library/nginx:latest      registry    pending

Layanan ditampilkan sebagai pending pembaruan tersedia.

Menerapkan Pembaruan pada Jadwal

Sekarang kami telah berhasil menyiapkan pembaruan penampung sesuai permintaan. Anda tidak perlu mengambil gambar baru secara manual atau memulai ulang wadah Anda. Langkah terakhir adalah mengatur jadwal agar Podman menerapkan pembaruan secara berkala, tanpa Anda menjalankan auto-update memesan

Sebagian besar distribusi Podman menyertakan timer systemd untuk tujuan ini. Anda dapat mengaktifkan timer menggunakan systemctl:

$ systemctl enable podman-auto-update.timer

Timer dikonfigurasi untuk memeriksa pembaruan setiap hari. Anda dapat menyesuaikan jadwal dengan membuka file pengatur waktu dengan systemctl edit dan mengubah nilai OnCalendar bidang:

$ systemctl edit podman-auto-update.timer

[Timer]
OnCalendar=Fri *-*-* 18:00

Ekspresi waktu yang ditunjukkan di atas akan menjalankan tes pembaruan setiap hari Jumat pukul 6 sore. Sintaks didokumentasikan dalam manual systemd.

Sekarang penghitung waktu diaktifkan, Anda dapat mulai menggunakan wadah Anda dengan io.containers.autoupdate label. Mereka akan memperbarui dan memulai ulang secara berkala, mengotomatiskan prosedur pemeliharaan Anda.

Anda tidak perlu menggunakan pengatur waktu systemd Podman untuk membuat jadwal pembaruan. Anda bisa lari podman auto-update dalam perkakas Anda yang ada atau penjadwal pekerjaan lain seperti: cron.

Ringkasan

Pembaruan otomatis Podman memungkinkan Anda memindahkan wadah ke versi gambar baru tanpa memulai ulang secara manual atau menggunakan alat eksternal. Ini akan membantu Anda mempertahankan armada kontainer Anda saat gambar merilis perbaikan bug dan patch keamanan.

Meskipun pembaruan otomatis adalah alat yang berguna, pembaruan tidak boleh digunakan secara sembarangan. Mengizinkan pembaruan otomatis dapat menimbulkan masalah sendiri jika gambar yang rusak dilepaskan secara tidak sengaja. Kontainer yang memulai ulang sendiri juga dapat menyebabkan waktu henti atau mengganggu layanan yang bergantung.

Karena itu, Anda harus memeriksa kesesuaian aplikasi Anda sendiri sebelum menerapkan solusi ini. Strategi perantara adalah menjalankan auto-update --dry-run secara berkala dan mengirimkan hasilnya ke layanan pelacakan. Ini memberi tahu Anda tentang pembaruan yang tersedia tanpa menjalankan risiko menerapkannya tanpa persetujuan.

Leave a Comment

Your email address will not be published. Required fields are marked *