概要
Dockerイメージを作成しAWS ECRにイメージを上げたが、K8Sでプルできなかった。
調べたらしっかり認証情報がわたっていなかった。
環境
- mac Catalina
- docker for mac
- AWS Cli
- これがしっかり使える前提です
解決手順
デスクトップ右上にあるDockerのマークをクリックしてPreferencesを開く。
そうすると「Include VM in Time Machine backups」というものがあるのでこれをクリックするとしたの、「Securely store Docker logins in macOS keychain」がアクティブになるのでクリックして無効化
その後、(vim -/.docker)を以下のように変更
config.json
"credsStore": "desktop" #これを削除
これで以下のようにコマンドを叩くとECRの認証情報が保存されてK8sでもとってこれる状態となる。
aws ecr get-login-password --region リージョン | docker login --username AWS --password-stdin ECRのエンドポイントのURL
その後この認証情報を持ったsecretを以下のコマンドで作れば、ECRからDockerイメージを持ってくることができるようになる。
kubectl create secret generic シークレットの名前 \
--from-file=.dockerconfigjson=$HOME/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
参考資料
- Pull an Image from a Private Registry
- Getting started with Amazon ECR using the AWS CLI
- Cannot unset Preference "Securely store Docker logins in MacOs keychain". Upgrades from previous version fail docker login if preference unset. #3774
- kubernetesでprivateなdocker hubからpullできるようにする
- macOSで~/.docker/config.jsonのauthesに認証文字列がない場合の対処