- Di Dockerfile,
:latest merusak persyaratan terpenting dari CD, yaitu "build idempoten yang dapat direproduksi"
→ Bukan hanya membuat build gagal, tetapi juga bisa menyebabkan error di production
- Menentukan
latest di Kubernetes Pod Manifest bahkan lebih buruk
→ Di Dockerfile setidaknya masih bisa rollback, tetapi jika dilakukan di deployment manifest, ada risiko kompatibilitas rusak kapan saja saat Pod baru di-rollout
- Di PIP,
package.json, Terraform, dan lainnya, jika Anda menentukan versi minimum saja atau tidak mencantumkan versi, efeknya sama seperti menggunakan latest
- Pastikan menggunakan fitur seperti lockfile yang disediakan framework
- Commit lockfile ke source control
- Saat menerapkan fitur baru/bug fix/security fix, jalankan hal seperti
terraform init -upgrade lalu commit lockfile
- Jangan memperbarui lockfile di tengah proses CI
- Jenis-jenis lockfile
- Terraform :
.terraform.lock.hcl
- Python :
Pipfile using Pipenv
- Node/Yarn :
yarn.lock
- Go :
go.sum dan go.mod
- Sebisa mungkin jangan lakukan dependency pulling saat runtime
→ Jadikan dependency sebagai artifact yang siap di-deploy, lalu beri versi
- Lakukan vulnerability scanning dengan layanan seperti Twistlock / Grype
Belum ada komentar.