- Trong Dockerfile,
:latest phá 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
latest trong 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ùng latest
- 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 -upgrade rồ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 :
Pipfile using Pipenv
- Node/Yarn :
yarn.lock
- Go :
go.sum và go.mod
- 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.