15 ポイント 投稿者 xguru 2022-03-07 | まだコメントはありません。 | WhatsAppで共有
  • 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.sumgo.mod
  • 可能であればランタイムで依存関係をプルしないこと
    → 依存関係をデプロイ可能なアーティファクトにして、バージョニングすること
  • Twistlock / Grype のようなサービスで脆弱性スキャンを行うこと

まだコメントはありません。

まだコメントはありません。