inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 CI/CD 입문·실전

이미지 pull중 no basic auth credentials 문제입니다.

113

이수현

작성한 질문수 11

0

msa 프로젝트 중 각 마이크로 서비스의 이미지를 pull 하는 곳에서 문제가 생깁니다.

err: ERROR: for seat-service Head "https://139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/v2/seat-service/manifests/1.0": no basic auth credentials

이렇게 에러가 나오게 되네요...

 

IAM 사용자 생성했고 권한 정책에 AmazonEC2ContainerRegistryFullAccess를 추가해줬습니다. 또한 이 사용자를 EC2에 연결까지 했습니다. 추가적으로 helper 설정을 위해 ./docker 폴더를 만들고 config.json에 "credsStore":"ecr-login"도 추가해주어 강의랑 매우 똑같이 만들었습니다.

 

이 deploy.yml 은 github action 코드입니다. 7번에서 이 오류가 발생하게 됩니다.

======선을 기준으로 아래는 docker-compose.yml파일입니다. 이 문제를 어떻게 해결해야할까요? 또한 각 마이크로 서비스에 연결된 데이터베이스가 모두 maraiDB라면 이걸 docker-compose.yml로 이미지화 시켜야하는것이 맞을까요?

# 6. EC2로 Compose 파일 전송
- name: Copy docker-compose.yml to EC2
  uses: appleboy/scp-action@v0.1.7
  with:
    host: ${{ secrets.EC2_HOST }}
    username: ${{ secrets.EC2_USERNAME }}
    key: ${{ secrets.EC2_PRIVATE_KEY }}
    source: "docker-compose.yml"
    target: "/home/ubuntu/movie-project/"
    strip_components: 0
    overwrite: true


# 7. EC2에서 Compose 실행
- name: SSH into EC2 and deploy
  uses: appleboy/ssh-action@v0.1.7
  with:
    host: ${{ secrets.EC2_HOST }}
    username: ${{ secrets.EC2_USERNAME }}
    key: ${{ secrets.EC2_PRIVATE_KEY }}
    script: |
      cd /home/ubuntu/movie-project
                  
      sudo docker-compose down
      sudo docker-compose pull
      sudo docker-compose up -d
================================================
  movie-service:
    image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/movie-service:1.0
    depends_on:
      - redis

  book-service:
    image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/book-service:1.0
    depends_on:
      - kafka

  payment-service:
    image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/payment-service:1.0
    depends_on:
      - kafka

  seat-service:
    image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/seat-service:1.0
    depends_on:
      - kafka

aws docker ci/cd github-actions aws-code-deploy infrastructure aws-ec2

답변 2

0

JSCODE 박재성

안녕하세요 수현님! 질문 잘 해주셨어요 !

보내주신 내용들 토대로 디버깅 도와드려볼게요 ~

아래 과정들을 통해 디버깅 해보시는걸 추천드려요 :)

 

"이미지를 pull 하는 곳에서 문제가 생깁니다. no basic auth credentials 이렇게 에러가 나오게 되네요…"

-> 현재 스크립트에서 ECR 로그인 부분에 문제가 있는것 같아요 !

아래와 같이 실제 ECR 주소로 변경하시고, sudo 명령어를 제거한 뒤 시도해보시는 걸 추천드려요 !

script: |
  cd /home/ubuntu/movie-project
  aws ecr get-login-password —region ap-northeast-2 | docker login —username AWS —password-stdin 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com
  docker-compose down
  docker-compose pull
  docker-compose up -d

 

"Docker 권한 문제"

-> EC2에서 ubuntu 사용자가 docker 그룹에 포함되어 있는지 확인해보시는걸 추천드려요 !

sudo usermod -aG docker ubuntu
newgrp docker

 

" 각 마이크로 서비스에 연결된 데이터베이스가 모두 maraiDB라면 이걸 docker-compose.yml로 이미지화 시켜야하는것이 맞을까요?"

-> 실제 운영 환경에서는 docker-compose로 한 번에 띄우지 않고 별도의 서버에 DB를 띄우지만

개발 및 테스트를 위해 docker-compose를 활용해 한 번에 모든 DB를 띄우고 싶으시다면

맞게 구성하신겁니다!

 

위에 말씀드린 방식으로 디버깅 해보시고 여전히 에러가 발생하시면

질문 다시 한 번만 남겨주세요~!!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 이수현님.

Docker에서 이미지를 ECR에서 pull할 때 발생하는 “no basic auth credentials” 오류는 주로 인증 문제로 인해 발생합니다. 아래에 문제를 해결하기 위한 몇 가지 조언을 드리겠습니다.

문제 요약

  • no basic auth credentials 오류는 Docker가 ECR에서 이미지를 가져오기 위해 필요한 인증 정보를 찾을 수 없기 때문에 발생합니다.

해결 방법

  1. ECR 로그인 명령어 실행 확인:

    • deploy.yml의 7번 단계에서 ECR에 로그인하는 명령어가 올바르지 않을 가능성이 있습니다. 명령어를 실행할 때, 실제 AWS 계정 ID와 올바른 리전을 사용해 주시기 바랍니다.
    aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin [AWS 계정 ID].dkr.ecr.ap-northeast-2.amazonaws.com
    
    • EC2 환경에서 직접 실행하여 인증이 제대로 되는지 확인해보세요.
  2. Docker 설정 확인:

    • EC2 인스턴스에 있는 ~/.docker/config.json 파일을 확인하여 올바른 크리덴셜 스토어 설정이 되었는지 확인합니다. "credsStore": "ecr-login" 설정이 .docker/config.json 파일에 정확히 기재되어 있어야 합니다.
  3. IAM 권한 확인:

    • EC2 인스턴스에 부여된 IAM 역할이 AmazonEC2ContainerRegistryReadOnly 또는 AmazonEC2ContainerRegistryFullAccess 권한을 포함하는지 확인하세요.
  4. GitHub Secrets 설정 확인:

    • AWS_ACCESS_KEY_ID 및 AWS_SECRET_ACCESS_KEY 환경변수가 GitHub에 올바르게 설정되어 있는지 확인하세요. 이들은 반드시 ECR에 접근 권한이 있는 IAM 사용자나 역할의 키여야 합니다.
  5. 실행 문맥 확인:

    • sudo docker-compose 명령어가 제대로 된 권한으로 실행되는지 확인해 보세요. Docker는 일반적으로 루트 권한이 필요합니다.

기존 비슷한 질문과 해결 링크

이 방법들을 통해 문제를 해결할 수 있기를 바랍니다. 만약 문제가 지속된다면 추가적인 정보를 제공해 주시면 더 도와드릴 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

무중단 배포

0

56

2

workflows/deploy.yml 궁금증

0

52

2

.git-credentials 파일이 없이 배포가 성공한 이유가 궁금

0

56

1

(해결 - 정보공유) /home/runner/work/_temp/6be6e~0.sh: line 1: ./gradlew: Permission denied 오류

1

63

2

(확인 완료) git config --global creadential.helper store 후에도 비밀번호 물어보는 현상

1

71

2

질문_ 강의 순서 및 그외

0

70

2

섹션 4 - Docker + 백엔드(Spring Boot)

0

63

2

deploy.yml작성후 원격에 push불가

0

62

2

CodeDeploy 사용시 registration 요구

0

104

3

스프링 종료 명령어

0

68

2

RAM & 스왑메모리 폭증하는 문제

0

102

2

섹션 4, 5와 6, 7은 유사한가요?

0

66

1

code deploy 배포입니다.

0

98

3

사용자 삭제가 안되는 이유

0

86

2

Docker Compose파일을 작성했을때 CI CD와의 연동

0

96

2

보안그룹 생성 오류

0

84

3

AWS 5월에 탈퇴해서 그러는데....

0

81

1

배포 오류

0

80

2

node.js 설치시 에러

0

148

2

appspec.yml, 스크립트 파일 수정요청

0

82

2

appleboy/ssh-action stop_script 대체

1

179

2

Vue.js 파일 배포

0

60

2

aws를완강하고 ci/cd로 넘어왔습니다.

0

85

1

vue.js 를 cloudfront+s3+Route53를 적용하여 배포

0

111

2