티스토리 뷰

반응형

Helm Chart 를 통해 배포할 이미지를 구성했고, 편의를 위해 도커 이미지의 TAG 이름의 정책은 날짜를 사용했다.

그런데, TAG 가 latest 일때는 문제가 안되었는데, 20240530 과 같이 날짜로 했을때만 배포가 실패했다.

결과부터 말하면, 날짜와 같이 숫자로만 존재하는 값이 float64 타입으로 인지되어 잘못된 값이 바인딩되었던 문제였다.

 

원인찾기

우선 배포를 해보니 아래와 같이 오류가 나고 있었다. 

이미지를 찾을수 없다는 상태였고, describe pods 를 햇 더 상세한 메시지를 찾아보니 희안하게 엉뚱한 태그값이 보였다.

 

helm chart 에서 아래와 같은 형식으로 이미지 태그를 values 에서 관리했고 해당 값을 확인했는데

의도한 값과 다르게 지수형 표현으로 바인딩이 되었다.

image: "PRIVATE_DOCKER_REGISTRY/myImage/sample:{{ .Values.image.tag }}"

 

  • 의도한 값 : PRIVATE_DOCKER_REGISTRY/myImage/sample:20240530
  • 실제 값 : PRIVATE_DOCKER_REGISTRY/myImage/sample:2.024053e+07

helm chart float64 라는 검색어로 검색해보니, 몇몇 결과가 나왔고 버그라는 말이 있었다. 

% kubectl get pods
NAME                       READY   STATUS             RESTARTS   AGE
my-pod-8445675b55-xtb5p    0/1     InvalidImageName   0          8s

% kubectl describe pods my-pod-8445675b55-xtb5p
...생략...
      Reason:   Error
      Message:  exit status 1 (stderr: '2024-06-03 11:22:22.943 [FATA] failed to execute deploy step: installation kerberos failed: [Pending:InvalidImageName] my-pod-8445675b55-xtb5p: Failed to apply default image tag "PRIVATE_DOCKER_REGISTRY/myImage/sample:2.024053e+07": couldn't parse image reference "PRIVATE_DOCKER_REGISTRY/myImage/sample:2.024053e+07": invalid reference format; [Pending:InvalidImageName] my-pod-8445675b55-xtb5p: Failed to apply default image tag "PRIVATE_DOCKER_REGISTRY/myImage/sample:2.024053e+07": couldn't parse image reference "PRIVATE_DOCKER_REGISTRY/myImage/sample:2.024053e+07": invalid reference format; ready timeout 10m0s exceeded
')
      Exit Code:    1

 

해결방법

가장 손쉬운 방법은 숫자만으로 구성될 경우 잘못된 값이 바인딩 되는것이니 string 타입으로 인지될 수 있도록 v20240530 과 같은 형태로 태그명을 정하는것이 가장 손쉬운 해결책 이었다.

 

그래서 도커 이미지의 태그명 정하는 정책에 v{날짜} 형태로 문자열 하나를 추가하는 형태로 해결했다.

% helm template --name "sample" -f values.yaml --set image.tag="20240530" . | grep "PRIVATE_DOCKER_REGISTRY/myImage/sample"
          image: "PRIVATE_DOCKER_REGISTRY/myImage/sample:2.024053e+07"
          image: "PRIVATE_DOCKER_REGISTRY/myImage/sample:2.024053e+07"

% helm template --name "sample" -f values.yaml --set image.tag="v20240530" . | grep "PRIVATE_DOCKER_REGISTRY/myImage/sample"       
          image: "PRIVATE_DOCKER_REGISTRY/myImage/sample:v20240530"
          image: "PRIVATE_DOCKER_REGISTRY/myImage/sample:v20240530"
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함