説明
latest タグやタグを省略したイメージ参照では、実行する内容を明確に固定できません。latest は有効なタグですが、常に最新または検証済みのイメージを意味するわけではありません。バージョンタグも変更できるため、正確な内容の固定にはダイジェストが必要です。
想定される影響
- 予期しないイメージの変更で、アプリケーションの動作が変わる場合があります。
- 障害時に実行バージョンを特定したり、同じデプロイを再現したりしにくくなります。
対処方法
- 保守されている検証済みのイメージバージョンを選んでください。同じ内容を再現する必要があれば、実際のイメージのダイジェストで固定してください。
- 修正や機能変更を試してから参照を更新してください。特定バージョンに固定したままセキュリティ更新を見落とさないよう管理してください。
例
既存の nginx:latest と nginx:1.21 を比較します。1.21 は過去の例であり、実際のデプロイに推奨するバージョンではありません。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: private-image-test
spec:
containers:
- name: app
image: nginx:latest
imagePullPolicy: Always
latest が指す内容が変わると、次の開始時に別のイメージを取得する場合があります。
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: private-image-test
spec:
containers:
- name: app
image: nginx:1.21
imagePullPolicy: Always
1.21 というバージョンを明示しますが、タグ自体が変更されない保証はありません。