:latest を使わないでください
(platformers.dev)- Dockerfile で
:latestを使うと、CD の最も重要な要件である「再現可能で冪等なビルド」を壊してしまう
→ ビルドを失敗させるだけでなく、本番障害の原因にもなる - Kubernetes の Pod Manifest で
latestを指定するのはさらに良くない
→ Dockerfile であればロールバックの余地はあるが、デプロイ manifest でやってしまうと、新しい Pod がロールアウトされるどの時点でも互換性を壊すおそれがある - PIP、
package.json、Terraform などでも、特定バージョン以上を指定したり、バージョンを明記しなかったりすると、latestを使うのと同じ効果になる - フレームワークが提供する lockfile のような機能は必ず使うこと
- ソース管理にロックファイルをコミットする
- 新機能の適用、バグ修正、セキュリティ修正などを行う際は
terraform init -upgradeのようなものを実行し、ロックファイルをコミットすること - CI の途中でロックファイルを更新しないこと
- ロックファイルの種類
- Terraform :
.terraform.lock.hcl - Python : Pipfile using Pipenv
- Node/Yarn :
yarn.lock - Go :
go.sumとgo.mod
- Terraform :
- 可能であればランタイムで依存関係をプルしないこと
→ 依存関係をデプロイ可能なアーティファクトにして、バージョニングすること - Twistlock / Grype のようなサービスで脆弱性スキャンを行うこと
まだコメントはありません。