- Dockerfile में
:latestCD की सबसे महत्वपूर्ण आवश्यकता, "पुनरुत्पादनीय और idempotent build", को तोड़ देता है
→ यह सिर्फ build fail ही नहीं कराता, बल्कि production errors भी पैदा कर सकता है - Kubernetes Pod Manifest में
latestनिर्दिष्ट करना इससे भी बुरा है
→ Dockerfile में तो कम से कम rollback संभव है, लेकिन deployment manifest में ऐसा करने पर किसी भी समय जब नया Pod rollout हो, compatibility टूटने का जोखिम बन जाता है - PIP, Package.json, Terraform आदि में भी यदि किसी dependency को किसी specific version से ऊपर के रूप में निर्दिष्ट किया जाए या version ही न लिखा जाए, तो उसका प्रभाव
latestउपयोग करने जैसा ही होता है - frameworks द्वारा दिए गए lockfile जैसे फीचर्स का ज़रूर उपयोग करें
- lock file को source control में commit करें
- नई feature, bug fix, security fix आदि लागू करते समय
terraform init -upgradeजैसी कमांड चलाएँ और lock file commit करें - CI के दौरान lock file अपडेट न करें
- lock file के प्रकार
- Terraform :
.terraform.lock.hcl - Python :
Pipfileusing Pipenv - Node/Yarn :
yarn.lock - Go :
go.sumऔरgo.mod
- Terraform :
- जहाँ संभव हो, runtime में dependencies pulling न करें
→ dependencies को deployable artifact के रूप में बनाएं और उनका versioning करें - Twistlock / Grype जैसी सेवाओं से vulnerability scanning करें
अभी कोई टिप्पणी नहीं है.