k3s 에서 dnszi 유동아이피 연동 스케쥴 추가하기

2025. 11. 30. 07:08·인프라/Kubernetes
반응형

기존에 서버에서는 crontab 을 사용해서 내가 사용하던 서버중 하나를 이용해 crontab 작업을 했다.

k3s 로 옮기면서 이 작업을 변경할 필요가 있었는데 k3s 를 사용하니까 역시 pod로 만들 방법을 gpt 에 물어보니 깔끔하게 잘된다.

 

설정

/k8s/common/dnszi 디렉토리를 만들고 안에 다음 두 파일을 만들었다.

 

1. URL 들을 저장하는 yaml

2. 이것을 반복해서 스케쥴 돌려주는 conjob 용 yaml

gglabadmin@k3s-node1:/k8s/common/dnszi$ ll
total 16
drwxr-xr-x 2 root root 4096 Nov 29 21:51 ./
drwxr-xr-x 5 root root 4096 Nov 29 21:46 ../
-rw-r--r-- 1 root root 1363 Nov 29 21:44 dnszi-updater-cronjob.yaml
-rw-r--r-- 1 root root  372 Nov 29 21:51 dnszi-urls-config.yaml
gglabadmin@k3s-node1:/k8s/common/dnszi$
gglabadmin@k3s-node1:/k8s/common/dnszi$ cat dnszi-urls-config.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: dnszi-url-list
data:
  urls: |
    https://ddns.dnszi.com/set.html?user=[dnszi의 id]&auth=[dnszi의 연동키]=gglab.app&record=docs
    https://ddns.dnszi.com/set.html?user=[dnszi의 id]&auth=[dnszi의 연동키]&domain=gglab.app&record=dev
    https://ddns.dnszi.com/set.html?user=[dnszi의 id]&auth=[dnszi의 연동키]&domain=gglab.app&record=money-dev
gglabadmin@k3s-node1:/k8s/common/dnszi$
gglabadmin@k3s-node1:/k8s/common/dnszi$ cat dnszi-updater-cronjob.yaml 
apiVersion: batch/v1
kind: CronJob
metadata:
  name: dnszi-ip-updater
spec:
  schedule: "*/5 * * * *" 
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: curl-updater
            image: curlimages/curl:latest
            command: ["/bin/sh", "-c"]
            args:
            - |
              echo "Reading URLs from ConfigMap..."
              # ConfigMap에서 마운트된 파일(urls)을 줄 단위로 읽어 반복 실행
              while IFS= read -r URL
              do
                if [ -n "$URL" ]; then
                  echo "Attempting to update: $URL"
                  curl -s "$URL"
                  if [ $? -eq 0 ]; then
                    echo "SUCCESS: $URL"
                  else
                    echo "FAILURE: $URL"
                  fi
                fi
              done < /etc/config/urls  # 마운트된 ConfigMap 파일 경로
              echo "All updates finished."
            
            volumeMounts:
            - name: url-config-volume
              mountPath: /etc/config/  # ConfigMap이 마운트될 경로
          
          # ConfigMap을 볼륨으로 정의
          volumes:
          - name: url-config-volume
            configMap:
              name: dnszi-url-list # 위에서 생성한 ConfigMap 이름
          
          restartPolicy: OnFailure
gglabadmin@k3s-node1:/k8s/common/dnszi$

실행확인

sudo kubectl get jobs | grep dnszi-ip-updater
dnszi-ip-updater-29407555   Complete   1/1           5s         10m
dnszi-ip-updater-29407560   Complete   1/1           5s         5m27s
dnszi-ip-updater-29407565   Complete   1/1           5s         27s
gglabadmin@k3s-node1:/k8s/common/dnszi$ sudo kubectl logs $(sudo kubectl get pods --selector=job-name=dnszi-ip-updater-29407560 -o jsonpath='{.items[0].metadata.name}')
Reading URLs from ConfigMap...
Attempting to update: https://ddns.dnszi.com/set.html?user=&auth=&domain=gglab.app&record=docs
SUCCESS: https://ddns.dnszi.com/set.html?user=&auth=&domain=gglab.app&record=docs
Attempting to update: https://ddns.dnszi.com/set.html?user=&auth=&domain=gglab.app&record=dev
SUCCESS: https://ddns.dnszi.com/set.html?user=&auth=&domain=gglab.app&record=dev
Attempting to update: https://ddns.dnszi.com/set.html?user=&auth=&domain=gglab.app&record=money-dev
SUCCESS: https://ddns.dnszi.com/set.html?user=&auth=&domain=gglab.app&record=money-dev
All updates finished.

 

잘 실행되는것을 확인했다.

그런데 실행이 끝나면 pods 에 기록이 쌓이는 구조라고 한다.

최종 1개만 남기도록 셋팅을 추가 했다.

 

gglabadmin@k3s-node1:/k8s/common/dnszi$ cat dnszi-updater-cronjob.yaml 
apiVersion: batch/v1
kind: CronJob
metadata:
  name: dnszi-ip-updater
spec:
  schedule: "*/5 * * * *" 
  successfulJobsHistoryLimit: 1 # 성공한 Job의 기록을 1개만 보존
  failedJobsHistoryLimit: 3     # 실패한 Job의 기록은 3개 보존
  jobTemplate:
    spec:
      template:
      
      ~~~~ 아래는 동일 ~~~~
반응형

'인프라 > Kubernetes' 카테고리의 다른 글

k3s Cert-Manager 에서 외부 서비스로 Proxy  (0) 2025.11.30
pfSense 와 CertManager 연동 오류  (0) 2025.11.29
(실전) k8s 설치부터 https 서비스 포팅까지  (0) 2025.11.23
(연습) k3s HA 구성 트래픽 흐름 구조  (0) 2025.11.21
(연습) k3s VIP 설정 (MetalLB)  (0) 2025.11.20
'인프라/Kubernetes' 카테고리의 다른 글
  • k3s Cert-Manager 에서 외부 서비스로 Proxy
  • pfSense 와 CertManager 연동 오류
  • (실전) k8s 설치부터 https 서비스 포팅까지
  • (연습) k3s HA 구성 트래픽 흐름 구조
GG.Lab
GG.Lab
GG.Lab
    반응형
  • GG.Lab
    GG.Lab
    GG.Lab
  • 전체
    오늘
    어제
    • 분류 전체보기 (45) N
      • APP (25)
        • 함쓰가계부 (22)
        • 랭킹구구단 (3)
      • 인프라 (15) N
        • Docker (1)
        • Proxmox (4)
        • Kubernetes (7) N
        • Network (3)
      • DB (5)
        • Postgresql (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 함쓰 메뉴얼
    • 함쓰 카페
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    함께쓰는가계부
    플러터
    Flutter
    external-svc
    함쓰가계부
    Kubernetes
    해외통화지원
    sms인식가계부
    연인가계부
    부부가계부
    pfsense
    traefik
    문자자동인식가계부
    푸시인식가계부
    함쓰
    k3s외부서비스
    k3s
    해외통화가계부
    구구단
    쿠버네티스
    커플가계부
    푸시인식
    앱출시
    자작앱
    K8s
    sms자동등록
    Proxmox
    공유가계부
    문자자동인식
    가계부편의기능
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
GG.Lab
k3s 에서 dnszi 유동아이피 연동 스케쥴 추가하기
상단으로

티스토리툴바