Helm Chartを使用してAirflowをデプロイする際に遭遇した問題とその解決策についての備忘録です。
問題は、Dockerfileを変更しても全く反映されないというものでした。
問題の原因
問題の原因は、Helm Chart内で指定されたDockerイメージのpullPolicyがIfNotPresentに設定されていたことでした。
これは、Kubernetesがローカルのコンテナイメージキャッシュをチェックし、キャッシュ内に指定されたタグのコンテナイメージが存在する場合、そのイメージを再ダウンロードせずにそのまま使用することを意味します。
そのため、Dockerfileを更新しても、イメージのタグがlatestのまま変わらないため、古いイメージが続けて使用されていました。
以下が、問題のHelm Chartの一部です。
# Helm
# Images
images:
airflow:
repository: ${repository_name}
tag: latest
# Specifying digest takes precedence over tag.
# digest: ~
pullPolicy: IfNotPresent
解決策
問題を解決するためには、pullPolicyをAlwaysに変更することが必要です。
これにより、指定したタグのコンテナイメージを常に新しいものに置き換えるようにKubernetesに指示されます。
この場合、ローカルのキャッシュが存在していても、常に最新のコンテナイメージを取得し直すことができます。
参考情報
問題の原因と解決策について詳しく理解するには、Kubernetesの公式ドキュメントにある以下のリンクを参考にしてみてください。
[Kubernetes Documentation}(https://kubernetes.io/docs/concepts/containers/images/#updating-images)
pullPolicyの設定に注意してください。