ECR PublicをEKSから認証して利用できない
解消予定?
https://github.com/kubernetes/cloud-provider-aws/issues/602
https://github.com/kubernetes/cloud-provider-aws/pull/603
https://github.com/kubernetes/cloud-provider-aws/pull/609
https://github.com/awslabs/amazon-eks-ami/pull/1269
/icons/hr.icon
Amazon ECR Public service quotas - Amazon ECR Public
未認証のpullは、1秒あたり1回の制限がある
Kubernetes クラスタが AWS 上でコンテナイメージを pull するときの権限まわりの話 | トリの部屋
Amazon ECR からのトークンはどこで取得しているのか(≒ どこで GetAutorizationToken API を呼んでいるのか)というと、pkg/credentialprovider/aws/aws_credentials.go#L134 がそれに当たります.
→ https://github.com/kubernetes/kubernetes/blob/v1.19.7/pkg/credentialprovider/aws/aws_credentials.go#L134
ザックリまとめると、1) kubelet が Amazon ECR の GetAuthorizationToken API を呼びだしてトークンを取得し、2) dockerd (あるいは CRI ランタイム)に対してトークンを渡しつつ pull を指示している、という流れになります.
aws-sdk-goで、ecrとecrpublicは分かれている
https://scrapbox.io/files/6225a30173cf32001d7bfc28.png
aws_credentials.goで、
"github.com/aws/aws-sdk-go/service/ecr"はimportされているが、
"github.com/aws/aws-sdk-go/service/ecrpublic"はimportされていない
https://github.com/kubernetes/kubernetes/blob/v1.23.4/pkg/credentialprovider/aws/aws_credentials.go#L34
また、credentialproviderでECR PublicをサポートするというIssueは、動きがなく閉じている
Add support for AWS ECR Public credentialprovider · Issue #97488 · kubernetes/kubernetes
#EKS #ECR