티스토리 뷰

반응형

Kubernetes Secret 은 base64로 인코딩된 값을 data로 갖는다.

data 필드의 모든 키(key)에 해당하는 값(value)은 base64로 인코딩된 문자열이어야 한다.

 

그럼 일반적인 string을 base64로 어떻게 인코딩할까?

아주 간단하다. echo, base64 를 사용하면 된다.

$ echo 'want-to-encode-this' | base64
d2FudC10by1lbmNvZGUtdGhpcwo=

 

근데 위와 같이 하는 경우, base64 인코딩 된 값을 비교하거나 할 때 문제가 생길 수 있다. 왜냐하면 echo 는 마지막에 무조건 newline(\n) 을 포함하고 있기 때문이다. 즉, 위의 예제의 경우 want-to-encode-this\n 을 base64로 인코딩하고 있는 것이다.

 

echo에서 newline을 제거하고 싶다면 -n 옵션을 사용하면 된다. 위 예제에서 -n 옵션을 사용하는 경우 base64로 인코딩된 값이 달라지는 것을 확인할 수 있다.

$ echo -n 'want-to-encode-this' | base64
d2FudC10by1lbmNvZGUtdGhpcw==

 

-n 옵션을 사용해 마지막에 newline을 임의적으로 넣어 base64로 인코딩하면 맨 처음의 예제와 같은 인코딩된 문자열이 나오는 것을 확인할 수 있다.

$ echo -n 'want-to-encode-this\n' | base64
d2FudC10by1lbmNvZGUtdGhpcwo=

 

 

결론

  • 보통 프로그래밍 언어들에서 base64 인코딩을 할 때 newline은 포함하지 않은 상태에서 문자열을 인코딩하다보니 echo 로 인코딩한 값과 차이가 있어 문제가 발생할 수 있으므로 유의하자.(인코딩한 값을 비교하는 경우에 유의하자)
  • echo 를 사용해 인코딩할 때는 -n 옵션을 사용하자.
320x100
반응형
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함