Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

132
Views
Cómo extraer un contenedor privado de AWS ECR a un clúster local

Actualmente tengo problemas para intentar extraer mi imagen acoplable remota alojada a través de AWS ECR. Recibo este error cuando ejecuto una implementación

Paso 1)

correr

 aws ecr get-login-password --region cn-north-1 | docker login --username AWS --password-stdin xxxxxxxxxx.dkr.ecr.cn-north-1.amazonaws.com.cn

Paso 2)

ejecuta kubectl create -f backend.yaml

a partir de aquí pasa lo siguiente:

 ➜ backend git:(kubernetes-fresh) ✗ kubectl get pods NAME READY STATUS RESTARTS AGE backend-89d75f7df-qwqdq 0/1 Pending 0 2s ➜ backend git:(kubernetes-fresh) ✗ kubectl get pods NAME READY STATUS RESTARTS AGE backend-89d75f7df-qwqdq 0/1 ContainerCreating 0 4s ➜ backend git:(kubernetes-fresh) ✗ kubectl get pods NAME READY STATUS RESTARTS AGE backend-89d75f7df-qwqdq 0/1 ErrImagePull 0 6s ➜ backend git:(kubernetes-fresh) ✗ kubectl get pods NAME READY STATUS RESTARTS AGE backend-89d75f7df-qwqdq 0/1 ImagePullBackOff 0 7s

Entonces, ejecuto kubectl describe pod backend y generará:

 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 117s default-scheduler Successfully assigned default/backend-89d75f7df-qwqdq to minikube Normal Pulling 32s (x4 over 114s) kubelet, minikube Pulling image "xxxxxxxxx.dkr.ecr.cn-north-1.amazonaws.com.cn/baopals:latest" Warning Failed 31s (x4 over 114s) kubelet, minikube Failed to pull image "xxxxxxxxx.dkr.ecr.cn-north-1.amazonaws.com.cn/baopals:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://xxxxxxxxx.dkr.ecr.cn-north-1.amazonaws.com.cn/v2/baopals/manifests/latest: no basic auth credentials Warning Failed 31s (x4 over 114s) kubelet, minikube Error: ErrImagePull Warning Failed 19s (x6 over 113s) kubelet, minikube Error: ImagePullBackOff Normal BackOff 4s (x7 over 113s) kubelet, minikube Back-off pulling image "xxxxxxxxx.dkr.ecr.cn-north-1.amazonaws.com.cn/baopals:latest"

el error principal es que no basic auth credentials

Ahora, lo que me confunde es que puedo enviar imágenes a mi ECR bien y también puedo enviarlas a mi clúster EKS remoto. Siento que esencialmente lo único que no puedo hacer en este momento es extraer de mi repositorio privado que está alojado en ECR.

¿Hay algo obvio que me estoy perdiendo aquí que me impide extraer repositorios privados para poder usarlos en mi máquina local?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Para obtener la imagen de ECR localmente, debe iniciar sesión en ECR y obtener la imagen de la ventana acoplable. mientras que si está en Kubernetes, debe usar secret para almacenar los detalles de inicio de sesión de ECR y usarlo cada vez para extraer imágenes de ECR.

Aquí, el script de shell si está en Kubernetes, tomará automáticamente los valores de la configuración de AWS o, de lo contrario, puede actualizar las variables al inicio del script.

 ACCOUNT=$(aws sts get-caller-identity --query 'Account' --output text) #aws account number REGION=ap-south-1 #aws ECR region SECRET_NAME=${REGION}-ecr-registry #secret_name EMAIL=abc@xyz.com #can be anything TOKEN=`aws ecr --region=$REGION get-authorization-token --output text --query authorizationData[].authorizationToken | base64 -d | cut -d: -f2` kubectl delete secret --ignore-not-found $SECRET_NAME kubectl create secret docker-registry $SECRET_NAME \ --docker-server=https://$ACCOUNT.dkr.ecr.${REGION}.amazonaws.com \ --docker-username=AWS \ --docker-password="${TOKEN}" \ --docker-email="${EMAIL}"

imagePullSecret utilizado en el archivo YAML para extraer secretos de almacenamiento para repositorios docker privados.

https://github.com/harsh4870/ECR-Token-automation/blob/master/aws-token.sh

over 4 years ago · Santiago Trujillo Report

0

Cuando un nodo en su clúster lanza un contenedor, necesita las credenciales para acceder al registro privado para extraer la imagen. Incluso si se ha autenticado en su máquina local, el nodo no puede reutilizar el inicio de sesión porque, por diseño, podría estar ejecutándose en otra máquina; por lo que debe proporcionar las credenciales en la plantilla del pod. Siga esta guía para hacerlo:

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

Básicamente, almacena las credenciales de ECR como un secreto y las proporciona en el imagePullSecret de la especificación del contenedor. El pod podrá extraer la imagen cada vez.

Si está desarrollando con su clúster ejecutándose en una máquina local, ni siquiera necesita hacer eso. Puede hacer que el pod reutilice la imagen que descargó en su caché local configurando imagePullPolicy en la especificación del contenedor en IfNotPresent o usando una etiqueta específica en lugar de la latest para su imagen.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!