Cloud Computing & MSA

Container Image Timezone 설정

99lover·2020년 5월 19일·조회 88,085

Docker container의 경우 timezone은 UTC(협정세계표준시,Coordinated Universal Time)를 따라간다. (왜 CUT가 아닌 UTC일까..)

Kubernetes 상에 container를기동할 경우 timezone을 한국표준시에 맞추어 달라는 요구사항에 직면하게된다.(ex.DB와 시간이 맞아야해요..)


세가지 방법을 생각해볼 수 있다.

  1. Base Image에 Timezone정보를 가지고 있다면 설정을 변경한다.(Ubuntu 등 무거운 Base Image의경우 가능하다.)
  2. Base Image에 Timezone정보가 없는 경우.Dockerfile을 이용하여 timezone정보를 복사하여 넣고 설정을 변경한다.(Alpine 등의 이미지는 /usr/share/zoneinfo 하위 내용이 없다.) 
  3. K8S에 배포시 사용하는 yaml파일을 이용해 Worker Node의 Timezone정보를 mount하여 설정한다.

1. 방식

Dockerfile에서 설정하여 사용한다.

FROM ubuntu //버전등은 자유
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

2. 방식

Dockerfile에서 설정하여 사용하나 alpine 등의 경량화된 이미지엔 /usr/share/zoneinfo하위정보가 없어 파일을 넣어주어야한다.

FROM alpine
COPY /usr/share/zoneinfo/Asia/Seoul /etc/localtime

3. 방식

deploymentstatefulset, pod를 만드는 yaml파일에 굵게 표시된 부분을 삽입한다.

pod가 기동되는 worker node의 /usr/share/zoneinfo 하위 지역을 pod에 mount하여 사용하는 방식이다.

apiVersion: v1
kind: Deployment
...
spec:
  containers:
    ...
    volumeMounts:
    - name: tz-config
      mountPath: /etc/localtime
  volumes:
    - name: tz-config
      hostPath:
        path: /usr/share/zoneinfo/Asia/Seoul
===================================================
 
1,2의 경우 Docker Image에 Layer가 쌓여 Docker Image 사이즈가 커질 수 있고,
3의 경우 yaml파일의 길이가 늘어나 복잡해 질 수 있다.

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.