Đừng dùng `:latest`
(platformers.dev)- Trong Dockerfile,
:latestphá vỡ yêu cầu quan trọng nhất của CD là "bản dựng có thể tái lập và idempotent"
→ Không chỉ khiến bản dựng thất bại mà còn có thể gây ra lỗi production - Chỉ định
latesttrong Kubernetes Pod Manifest còn tệ hơn
→ Trong Dockerfile thì ít ra còn có thể rollback, nhưng nếu làm trong deployment manifest thì có nguy cơ phá vỡ tính tương thích ở bất kỳ thời điểm nào khi Pod mới được rollout - Trong PIP,
package.json, Terraform... nếu chỉ định từ một phiên bản nhất định trở lên hoặc không ghi rõ phiên bản thì hiệu ứng cũng giống hệt việc dùnglatest - Hãy обязательно dùng các cơ chế như lockfile mà framework cung cấp
- Commit file lock vào source control
- Khi áp dụng tính năng mới / sửa bug / vá bảo mật..., hãy gọi những thứ như
terraform init -upgraderồi commit file lock - Không cập nhật file lock trong lúc CI đang chạy
- Các loại lockfile
- Terraform :
.terraform.lock.hcl - Python :
Pipfileusing Pipenv - Node/Yarn :
yarn.lock - Go :
go.sumvàgo.mod
- Terraform :
- Nếu có thể, đừng kéo dependency ở runtime
→ Hãy biến dependency thành artifact có thể triển khai và quản lý version cho nó - Hãy quét lỗ hổng bằng các dịch vụ như Twistlock / Grype
Chưa có bình luận nào.