Issue
Found issue on timezone error. Cron expression on CronJob yaml file and pod can have different timezone.
Solution
- Add tzdata on alphine linux docker image
- Add environment variable
TZ
in cronjob’s yaml file
dockerfile example
FROM golang:1.22-alpine3.19 as builder
WORKDIR /src
COPY . /src
RUN go build -C cmd/app -o app
FROM golang:1.22-alpine3.19
RUN apk add --no-cache tzdata
COPY --from=builder /src/cmd/app /bin/app
CMD ["/bin/app"]
cronjob yaml example
apiVersion: batch/v1
kind: CronJob
metadata:
namespace: service
name: connector
labels:
app: connector
spec:
schedule: "0 7 * * 1-5"
jobTemplate:
metadata:
labels:
app: connector
spec:
template:
spec:
containers:
- name: connector
image: connector:v1
# imagePullPolicy: Always
env:
- name: TZ
value: Asia/Seoul
command: ["/bin/sh"]
args:
- -c
- 'app --partition=$(($(date +%u) - 1))'
restartPolicy: OnFailure
docker run example
$ docker run -e TZ=Asia/Seoul connector:v1