Hi Ping Wang,
你目前遇到的情況,是 production Kubernetes 環境中非常常見的問題:當 container registry 的 credentials 過期後,新建立的 Pod 無法正常 pull image,最終就會出現 ImagePullBackOff。
在 Kubernetes 中,imagePullSecrets 本身不會自動更新或 refresh registry credentials;它只是儲存建立或更新該 Secret 時所提供的 credentials。
如果使用的是 Harbor,我通常會建議在可行的情況下,優先使用 Robot Account,並妥善管理其 lifecycle,而不是使用生命週期較短的 user token。為了避免人工更新 Kubernetes Secret,許多企業會整合集中式的 secret management solution,例如 External Secrets Operator、Secrets Store CSI Driver,或基於 Vault 的 solution,讓 registry credentials 可以自動同步及 rotation。
這樣可以大幅降低日常維運成本,也能降低因 credentials 過期而導致 production outage 的風險。
至於 Pod 的行為,更新 Secret 並不一定代表已經處於失敗狀態的 Pod 會立即使用新的 credentials 重新執行 image pull。實務上,新建立的 Pod 通常會使用更新後的 Secret;但如果既有 Pod 已經卡在 ImagePullBackOff 狀態,可能仍需要重新建立或 restart Pod,讓 Kubernetes 重新執行一次 image pull operation。
因此,在 production environment 中,我通常會建議將 Secret rotation 與 deployment rollout automation 一起整合,這會是相對安全且穩定的做法。
另外,也建議檢查 ServiceAccount 的設定,並確認所有 workloads 是否可以統一 reference 集中的 imagePullSecret,而不是在不同 namespace 中各自維護獨立的 Secret。這樣可以讓 token rotation、credential management 以及 audit 都更加容易。
如果 Harbor Robot Account 的 token 會定期進行 rotation,建議透過 automation 來協調 Kubernetes Secret 的更新,而不是依賴人工操作。這通常也被視為 production environment 中較佳的 credential management best practice。
希望以上資訊能幫助你釐清問題並找到合適的處理方向。
如果這個回答對你有幫助,請點選 「Accept Answer」,讓我知道這個方法已經解決你的問題。
Jason