Comment résoudre les problèmes d'Amazon ECR avec Amazon EKS ?

Date de la dernière mise à jour : 27/01/2020

Je ne peux pas extraire d'images d'Amazon Elastic Container Registry (Amazon ECR) lorsque j'utilise Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Vous ne pouvez pas extraire d'images d'Amazon ECR pour l'une des raisons suivantes :

  • Vous ne pouvez pas communiquer avec les points de terminaison Amazon ECR.
  • Vous ne possédez pas les autorisations appropriées dans le profil d'instance joint à votre nœud de travail pour extraire des images d'un référentiel Amazon ECR particulier.

Pour résoudre ces problèmes, suivez les étapes de l'une des sections suivantes :

  • Résolution des problèmes de communication entre les nœuds de travail et les points de terminaison Amazon ECR
  • Mise à jour du profil d'instance de vos nœuds de travail et confirmation que vos stratégies de référentiel sont correctes

Solution

Résolution des problèmes de communication entre les nœuds de travail et les points de terminaison Amazon ECR

Si vos nœuds de travail ne peuvent pas communiquer avec les points de terminaison Amazon ECR, il se peut que vous receviez le message d'erreur suivant :

Failed to pull image "ACCOUNT.dkr.ecr.REGION.amazonaws.com/imagename:tag": rpc error: code = Unknown desc = 
Error response from daemon: Get https://ACCOUNT.dkr.ecr.REGION.amazonaws.com/v2/: net/http: 
request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Pour résoudre cette erreur, confirmez les éléments suivants :

  • Le sous-réseau de votre nœud de travail possède un routage vers Internet. Vérifiez la table de routage associée à votre sous-réseau.
  • Le groupe de sécurité associé à votre nœud de travail autorise le trafic Internet sortant.
  • La stratégie d'entrée et de sortie pour vos listes de contrôle d'accès (ACL) réseau autorise l'accès à Internet.

Mise à jour du profil d'instance de vos nœuds de travail

Si le profil d'instance de votre nœud de travail n'est pas autorisé à extraire des images d'Amazon ECR, il se peut que vous receviez le message d'erreur suivant à partir de votre pod Amazon EKS :

Warning  Failed     14s (x2 over 28s)  kubelet, ip-000-000-000-000.us-west-2.compute.internalFailed to pull image "ACCOUNT.dkr.ecr.REGION.amazonaws.com/imagename:tag": rpc error: code = Unknown desc = Error response from daemon: Get https://ACCOUNT.dkr.ecr.REGION.amazonaws.com/v2/imagename/manifests/tag: no basic auth credentials
Warning  Failed     14s (x2 over 28s)  kubelet, ip-000-000-000-000.us-west-2.compute.internal  Error: ErrImagePull
Normal   BackOff    2s (x2 over 28s)   kubelet, ip-000-000-000-000.us-west-2.compute.internal  Back-off pulling image "ACCOUNT.dkr.ecr.REGION.amazonaws.com/imagename:tag"
Warning  Failed     2s (x2 over 28s)   kubelet, ip-000-000-000-000.us-west-2.compute.internal  Error: ImagePullBackOff

Pour résoudre cette erreur, vérifiez que vos nœuds de travail utilisent la règle gérée AWS Identity and Access Management (IAM) AmazonEC2ContainerRegistryReadOnly. Vous pouvez également mettre à jour le profil d'instance Amazon Elastic Compute Cloud (Amazon EC2) de vos nœuds de travail avec les autorisations IAM suivantes :

"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:GetRepositoryPolicy",
"ecr:DescribeRepositories",
"ecr:ListImages",
"ecr:DescribeImages",
"ecr:BatchGetImage",
"ecr:GetLifecyclePolicy",
"ecr:GetLifecyclePolicyPreview",
"ecr:ListTagsForResource",
"ecr:DescribeImageScanFindings"

Important : une bonne pratique consiste à utiliser la stratégie AmazonEC2ContainerRegistryReadOnly au lieu de créer une stratégie dupliquée.

Le profil d'instance mis à jour donne à vos nœuds de travail les autorisations nécessaires pour accéder à Amazon ECR et extraire des images via le kubelet. Le kubelet est responsable de l'extraction et de l'actualisation périodique des informations d'identification Amazon ECR. Pour plus d'informations, consultez Kubernetes Images (Images Kubernetes).

Confirmez que vos stratégies de référentiel sont correctes

Les stratégies de référentiel sont un sous-ensemble de stratégies IAM qui contrôlent l'accès aux référentiels Amazon ECR individuels. Les stratégies IAM sont généralement utilisées pour appliquer des autorisations pour l'ensemble du service Amazon ECR, mais peuvent également contrôler l'accès à des ressources spécifiques.

1.    Ouvrez la console Amazon ECR pour vous connecter à votre compte principal.

2.    Dans le volet de navigation, choisissez Référentiels, puis choisissez le référentiel que vous souhaitez vérifier.

3.    Dans le volet de navigation, choisissez Autorisations, puis vérifiez si votre référentiel dispose des autorisations appropriées.

L'exemple de stratégie suivant permet à un utilisateur IAM spécifique de décrire le référentiel et les images dans le référentiel :

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "ECR Repository Policy",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/MyUsername"
      },
      "Action": [
        "ecr:DescribeImages",
        "ecr:DescribeRepositories"
      ]
    }
  ]
}

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?