# Kubernetes Native Sidecar Containers: Panduan Praktis

> Native sidecar container adalah init container dengan restartPolicy Always. Inilah cara mereka memperbaiki urutan startup, penyelesaian Job, dan shutdown bersih — stabil di v1.33.

URL: https://www.matthewswong.com/id/blog/kubernetes-native-sidecar-containers/

- Author: Matthews Wong (https://www.matthewswong.com/id/about/)
- Published: 2026-07-31
- Updated: 2026-07-31
- Category: DevOps

> **Key takeaway:** Kubernetes native sidecar container adalah init container yang dideklarasikan dengan restartPolicy bernilai Always. Kubelet menjalankannya sebelum aplikasi utama, menjaganya tetap berjalan sepanjang umur Pod, lalu mematikannya setelah aplikasi keluar. Ini memperbaiki urutan startup yang rusak dan Job yang tidak pernah selesai. Fitur ini stabil sejak Kubernetes v1.33.

Selama bertahun-tahun sidecar hanyalah sebuah pola, bukan fitur. Anda menambahkan container kedua ke sebuah Pod — pengirim log, proxy service mesh, eksportir metrik — lalu berharap ia berperilaku baik. Kubernetes tidak punya konsep sidecar, jadi container kedua itu diperlakukan persis seperti aplikasi utama Anda. Perlakuan setara itulah sumber masalahnya, dan itulah yang akhirnya dihilangkan oleh fitur native sidecar.

Saya pernah mengalami kedua mode kegagalan klasik di produksi: proxy yang belum siap saat aplikasi melakukan panggilan keluar pertamanya, dan Job batch yang berjalan selamanya karena sidecar logging-nya tidak pernah berhenti. Native sidecar container mengatasi keduanya dengan memberi container tambahan siklus hidup yang teratur, alih-alih berpura-pura mereka hanyalah container aplikasi biasa.

## Mengapa pola sidecar lama menyakitkan

Pola ad-hoc tidak punya urutan maupun kesadaran siklus hidup. Semua container dalam sebuah Pod mulai kira-kira secara paralel dan diperlakukan setara, yang menghasilkan tiga masalah berulang.

- Balapan startup: container utama bisa mulai sebelum proxy mesh atau agen autentikasi siap, sehingga permintaan awal gagal sampai sidecar menyusul. Tim menutupinya dengan loop retry dan skrip init.
- Job yang tidak pernah selesai: sebuah Job dianggap selesai ketika container-nya berhenti, tetapi sidecar logging atau proxy dirancang berjalan selamanya. Tugas utama selesai, sidecar tetap berjalan, dan Job menggantung tanpa henti — masalah nyata untuk beban kerja batch dan AI/ML.
- Shutdown berantakan: saat terminasi tidak ada jaminan aplikasi berhenti sebelum proxy. Jika proxy mati lebih dulu, permintaan yang sedang berjalan dan baris log terakhir hilang selama jendela graceful shutdown.

## Cara kerja fitur native

Wawasan di balik KEP-753 adalah bahwa sidecar sebenarnya init container yang istimewa. Init container sudah punya urutan startup sekuensial yang jelas, jadi membangun sidecar di atasnya memberi urutan secara gratis. Anda menambahkan satu field — restartPolicy bernilai Always — ke sebuah entri di daftar initContainers Pod, dan container itu menjadi sidecar.

Satu field itu mengubah tiga perilaku. Kubelet menandai init container sebagai started lalu lanjut ke berikutnya alih-alih menunggunya keluar, sehingga container aplikasi Anda mulai hanya setelah sidecar aktif. Sidecar kemudian tetap berjalan sepanjang umur Pod dan di-restart sendiri jika crash. Saat terminasi, kubelet menghentikan container utama lebih dulu, lalu mematikan sidecar dalam urutan terbalik dari deklarasinya.

> Saat ini hanya Always yang valid sebagai restartPolicy init container. Nilai tunggal itulah saklar yang mengubah init container biasa menjadi sidecar yang berumur panjang — tidak ada jenis sidecar terpisah atau objek API baru yang perlu dipelajari.

## Contoh YAML

Berikut sebuah Deployment dengan sidecar log-shipper. Ia berada di bawah initContainers, tetapi restartPolicy Always membuatnya tetap berjalan berdampingan dengan aplikasi. Sebuah startupProbe membuat kubelet menahan container utama sampai shipper benar-benar siap, bukan sekadar dibuat.

Blok yang sama bekerja pada sebuah Job. Karena sidecar adalah init container dengan restartPolicy Always, terminasi Pod kini hanya bergantung pada container utama — ketika tugas batch selesai, Job selesai dan sidecar dimatikan otomatis. Tidak ada lagi Job yang macet dalam keadaan running menunggu sidecar yang tidak pernah keluar.

## Probe, sumber daya, dan sinyal shutdown

Native sidecar mendukung probe startup, readiness, dan liveness, yang tidak dimiliki init container biasa. readinessProbe sebuah sidecar memengaruhi status ready Pod, sehingga proxy mesh yang tidak sehat membuat Pod tetap di luar endpoint sebuah Service. Permintaan sumber daya dijumlahkan dengan container aplikasi alih-alih dibandingkan, dan penanganan skor OOM disejajarkan dengan container utama sehingga sidecar tidak dibunuh lebih dulu saat tekanan memori.

> Selama shutdown, sidecar bisa menerima SIGTERM lalu SIGKILL jika container utama menghabiskan seluruh periode grace. Kode keluar bukan-nol dari sidecar saat terminasi Pod adalah hal wajar dan umumnya harus diabaikan oleh tooling eksternal — jangan buat alert untuknya.

## Hack lama versus native sidecar

Perbedaannya bukan sekadar kosmetik. Pendekatan native memindahkan urutan, siklus hidup, dan shutdown dari solusi tingkat aplikasi ke dalam kubelet, tempat yang semestinya. Tabel ini merangkum apa yang sebenarnya berubah.

| Aspek | Sidecar ad-hoc lama | Native sidecar container |
| --- | --- | --- |
| Tempat dideklarasikan | Entri kedua di containers | Sebuah initContainer dengan restartPolicy Always |
| Urutan startup | Tidak ada — mulai paralel dengan aplikasi | Dijamin mulai sebelum container aplikasi |
| Penyelesaian Job | Job menggantung — sidecar tak pernah keluar | Job selesai begitu tugas utama rampung |
| Urutan shutdown | Tidak jelas — proxy bisa mati lebih dulu | Aplikasi berhenti dulu, sidecar urutan terbalik |
| Probe kesehatan | Hanya lewat plumbing container aplikasi penuh | Startup, readiness, dan liveness didukung |

## Linimasa kematangan dan kapan mengadopsi

Fitur ini punya jalur graduasi yang jelas. Ia hadir sebagai alpha di Kubernetes v1.28 pada Agustus 2023 di balik feature gate SidecarContainers, naik ke beta dan aktif secara default di v1.29, lalu graduasi menjadi stabil di v1.33 yang rilis pada 23 April 2025. Sejak v1.29 Anda dapat memakainya tanpa menyentuh feature gate di sebagian besar cluster.

Saran saya: jika cluster Anda pada v1.29 atau lebih baru, pindahkan proxy mesh, pengirim log, dan agen metrik ke native sidecar sekarang — Anda mendapat urutan yang benar dan shutdown bersih dengan perubahan satu baris. Untuk Job batch dan AI/ML keuntungannya lebih besar lagi, karena menghapus kelas bug Job-tidak-pernah-selesai sepenuhnya. Mulailah dengan satu beban kerja non-kritis, pastikan Pod menjadi ready hanya setelah sidecar aktif, lalu perluas dari sana.

## Sources

- Sidecar Containers — dokumentasi Kubernetes
- Kubernetes v1.28: Memperkenalkan native sidecar containers (blog Kubernetes)
- Pengumuman rilis Kubernetes v1.33 — Sidecar container stabil (blog Kubernetes)
- KEP-753: Sidecar Containers (Kubernetes Enhancement Proposal)

## Source links

- https://kubernetes.io/docs/concepts/workloads/pods/sidecar-containers/
- https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/
- https://kubernetes.io/blog/2025/04/23/kubernetes-v1-33-release/
- https://kep.k8s.io/753

## FAQ

### Apa itu Kubernetes native sidecar container?

Ini adalah init container yang dideklarasikan dengan restartPolicy bernilai Always. Berbeda dari init container biasa yang berjalan sampai selesai, sidecar mulai sebelum aplikasi utama, tetap berjalan sepanjang umur Pod, dan dimatikan setelah aplikasi keluar. Ini pengganti bawaan untuk pola ad-hoc lama yang menambahkan container aplikasi kedua.

### Bagaimana cara mengubah init container menjadi sidecar?

Tambahkan restartPolicy bernilai Always ke sebuah entri di daftar initContainers Pod. Satu field itulah saklarnya — kubelet lalu menandainya started, lanjut ke container berikutnya, dan menjaga sidecar tetap berjalan. Saat ini Always adalah satu-satunya nilai yang valid untuk restartPolicy init container.

### Di versi Kubernetes mana native sidecar container menjadi stabil?

Native sidecar container menjadi stabil (GA) di Kubernetes v1.33 yang rilis pada 23 April 2025. Fitur ini pertama muncul sebagai alpha di v1.28 di balik feature gate SidecarContainers pada Agustus 2023, lalu menjadi beta dan aktif default di v1.29. Sejak v1.29 sebagian besar cluster tidak perlu mengubah feature gate.

### Mengapa pola sidecar lama membuat Job menggantung selamanya?

Sebuah Job selesai ketika container-nya berhenti, tetapi sidecar logging atau proxy dirancang berjalan tanpa henti. Pada pola lama sidecar itu adalah container aplikasi biasa, sehingga tugas utama selesai sementara sidecar tetap berjalan dan Job tidak pernah rampung. Native sidecar memperbaikinya karena terminasi Pod kini hanya bergantung pada container utama.

### Apakah native sidecar container mendukung health probe?

Ya. Berbeda dari init container biasa, native sidecar mendukung probe startup, readiness, dan liveness. readinessProbe sebuah sidecar memengaruhi status ready Pod, sehingga proxy mesh yang tidak sehat menahan Pod di luar endpoint Service sampai pulih.

---

- HTML version: https://www.matthewswong.com/id/blog/kubernetes-native-sidecar-containers/
- English: https://www.matthewswong.com/en/blog/kubernetes-native-sidecar-containers/
- Site index for agents: https://www.matthewswong.com/llms.txt
- Sitemap: https://www.matthewswong.com/sitemap.xml
- API description (OpenAPI): https://www.matthewswong.com/openapi.json
