Info

25년 7월 작업 중 발견한 내용을 간략하게 정리한 내용입니다.

문제 상황

Harbor 로봇 계정을 사용하여 Kubernetes에서 Docker registry secret을 생성할 때 인증 오류가 발생하는 문제가 있었고, 이를 팀원들과 같이 조사하였습니다.

원인

기본 설정이라는 가정 하에, Harbor 로봇 계정의 사용자명에는 $ 같은 특수문자가 포함되어 있습니다. (예: robot$project+dev-cluster)
이러한 특수문자들이 명령줄에서 처리될 때 문제를 일으켜 Secret 생성에 실패하거나 인증 오류를 발생시킵니다.

이 문제는 Kubernetes Secret뿐 아니라 커맨드 라인 등 다른 곳에서도 발생할 수 있습니다.

해결 방법

kubectl create secret 명령어 사용 시 사용자명을 따옴표로 감싸거나 이스케이프 처리합니다.
다른 곳에서도 비슷하게 해결할 수 있습니다.

kubectl create secret docker-registry harbor-registry-secret \
  --docker-server=<HARBOR-URL> \
  --docker-username='robot$project+dev-cluster' \
  --docker-password=<ROBOT-TOKEN> \
  --docker-email=<EMAIL> \
  -n default

참고 자료