GCR(Google Cloud Registry)은 Cloud Storage 버킷에 이미지를 저장합니다.

gcr.io 레지스트리에 이미지를 푸시하면 자동으로 버킷을 생성하는데요, 이 버킷의 위치는 기본적으로 us입니다.

asia.gcr.io 레지스트리는 버킷 위치가 asia 라서 아시아 서버인 경우 더 빨리 pull 받을 수 있습니다.

 

아무튼 그래서 github actions 워크플로에서 asia.gcr.io 레지스트리에 푸시를 하는데 계속 401 에러가 나왔습니다.

왜..? 권한도 문서에 있는대로 잘 준 것 같은데?

괜히 IAM Role만 계속 추가했다 뺐다.. 삽질을 반복했습니다

 

      - name: Login to GCR
        uses: docker/login-action@v2
        with:
          registry: asia.gcr.io
          username: _json_key
          password: ${{ secrets.GCR_JSON_KEY }}

      - name: Build and push
        uses: docker/build-push-action@v3
        with:
          context: open-market-server-app
          push: true
          tags: asia.gcr.io/${{ secrets.GCP_PROJECT_ID }}/server:latest
          cache-from: type=gha
          cache-to: type=gha,mode=max

결국 원인을 찾았는데, asia 리전의 registry로 푸시를 하면 docker login도 asia.gcr.io로 동일하게 해줘야 하는 것이었습니다.

저의 경우는 로그인은 gcr.io, 이미지 태그는 asia.gcr.io/...로 만들었더니 문제였네요 😞

 

참고

 

IAM으로 액세스 제어  |  Container Registry 문서  |  Google Cloud

의견 보내기 IAM으로 액세스 제어 알림 이 페이지를 개발자 프로필에 저장하여 중요 업데이트에 대한 알림을 받으세요. 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분

cloud.google.com

반응형

'Cloud platform > Google Cloud Platform' 카테고리의 다른 글

[GCP] GKE 클러스터 버전업  (0) 2022.10.01
[GCP] 프로젝트 이름 변경 방법  (0) 2022.08.27