- Dockerfile içinde
:latest, CD'nin en önemli gereksinimi olan "yeniden üretilebilir idempotent build" ilkesini bozar
→ Yalnızca build'in başarısız olmasına yol açmakla kalmaz, production hatalarına da neden olabilir
- Kubernetes Pod Manifest'te
latest belirtmek daha da kötüdür
→ Dockerfile'da en azından rollback mümkündür, ancak bunu dağıtım manifest'inde yaparsanız yeni Pod'ların rollout edildiği herhangi bir anda uyumluluğun bozulma riski doğar
- PIP,
package.json, Terraform vb. içinde de belirli bir sürümün üzerini belirtmek veya sürümü hiç açıkça yazmamak, latest kullanmakla aynı etkiyi yaratır
- Framework'lerin sunduğu lockfile benzeri özellikleri mutlaka kullanın
- Lock dosyasını source control'e commit edin
- Yeni özellik uygulama/bug fix/güvenlik düzeltmesi gibi durumlarda
terraform init -upgrade gibi komutları çalıştırıp lock dosyasını commit edin
- CI sırasında lock dosyasını güncellemeyin
- Lock dosyası türleri
- Terraform :
.terraform.lock.hcl
- Python : Pipenv kullanan
Pipfile
- Node/Yarn :
yarn.lock
- Go :
go.sum ve go.mod
- Mümkünse runtime sırasında bağımlılık çekmeyin
→ Bağımlılıkları dağıtılabilir artifact'lere dönüştürün ve sürümleyin
- Twistlock / Grype gibi servislerle güvenlik açığı taraması yapın
Henüz yorum yok.