Kubernetes 모드 패키지 및 모듈 패치
Kubernetes 환경에서 exemONE 서비스를 패치하는 방법을 안내합니다. 신규 패치 버전 적용 방식에 따라 모듈 패치와 패키지 패치로 구분되며, 각 가이드의 절차를 순서대로 따라 진행해 주세요.
모듈 패치 가이드
신규 패치 버전의 이미지를 로드하고 .env 파일을 수정하여 exemONE 서비스를 패치하는 방법을 안내합니다.
1. 제약조건
exemone-api와 exemone-receiver Pod는 동일한 Node에서 실행되어야 합니다.
[Pod 실행 설정 예시]
1) Pod를 실행할 Worker Node에 라벨 설정
- 명령어 형식:
kubectl label nodes {Worker Node 이름} workload={설정할 Worker Node 라벨 이름}
kubectl label nodes worker-node1 workload=exemone-k8s
2) Deployment에서 Node Selector 사용
- 수정 파일:
exemone-kubernetes/installer/exemone-kubernetes/{SET_NAME}/deployment.yaml SET_NAME은 exemONE 설치 시 생성한 폴더 이름입니다.- 1번 과정에서 설정한 Worker Node 라벨을 적용합니다.
...
spec:
selector:
matchLabels:
app: exemone-receiver
replicas: 1
template:
...
spec:
nodeSelector:
workload: exemone-k8s # 또는 kubernetes.io/hostname: worker-node1
...
2. 이미지 로드
exemONE 서비스를 사용할 모든 Node에 이미지를 로드합니다.
- 이미지 폴더 위치:
exemone-kubernetes/installer/exemone-kubernetes/image/
docker 사용 시
docker load -i <이미지>.tar.gz
# ex) docker load -i bitnami-kafka-3.3.2-debian-11-r5.tar.gz
# 이미지 로드 검증
docker images | grep exemone
containerd 사용 시
namespace의 경우,
k8s.io가 일반적이나 환경에 따라 다를 수 있습니다.
ctr -n <namespace> images import <이미지>.tar.gz
# ex) ctr -n k8s.io images import bitnami-kafka-3.3.2-debian-11-r5.tar.gz
# 이미지 로드 검증
ctr -n k8s.io images ls | grep exemone
containerd 사용 시 ctr: archive/tar: invalid tar header 에러 발생 시 조치 방법
gunzip -k <이미지>.tar.gz # gzip 압축 해제
ctr -n <namespace> images import <이미지>.tar
# 예시
gunzip -k bitnami-kafka-3.3.2-debian-11-r5.tar.gz
ctr -n k8s.io images import bitnami-kafka-3.3.2-debian-11-r5.tar
3. 설치 방법
3-1. .env 파일 수정
- 신규 패치 버전으로 정보를 변경합니다.
- 파일 위치:
exemone-kubernetes/installer/exemone-kubernetes
vi exemone-kubernetes/installer/exemone-kubernetes/.env

3-2. apply.sh 스크립트 실행
- 파일 위치:
exemone-kubernetes/installer/exemone-kubernetes
sh exemone-kubernetes/installer/exemone-kubernetes/apply.sh
3-3. exemONE 서비스 정상 구동 확인
- 스크립트 실행 완료 후, exemONE 서비스가 정상적으로 구동되는지 확인합니다.
4. 주의사항 및 참고
- exemone-api와 exemone-receiver Pod는 반드시 동일한 Node에서 실행되어야 하므로, Worker Node 라벨 및 Node Selector 설정을 사전에 적용해 주세요.
- 이미지 로드는 exemONE 서비스를 사용할 모든 Node에서 수행해야 합니다.
- containerd 사용 시
ctr: archive/tar: invalid tar header에러가 발생하면,gunzip으로 압축 해제 후.tar파일을 import 해주세요. - containerd의 namespace는 일반적으로
k8s.io를 사용하나, 환경에 따라 다를 수 있으므로 사용 환경에 맞춰 설정해 주세요.
패키지 패치 가이드
신규 패치 버전에서 template 또는 script 파일이 변경된 경우, 패키지를 교체하여 패치하는 방법을 안내합니다.
1. 패키지 패치 개요
- 신규 패치 버전에서 template이나 script 파일이 변경된 경우, 아래 절차에 따라 패키지를 변경한 후 패치를 진행합니다.
2. 설치 방법
2-1. 사전 설정
- 기존 exemONE 홈 디렉토리를 백업합니다.
mv exemone-kubernetes exemone-kubernetes.bak
2-2. 패키지 압축 해제
tar -xzvf exemone-kubernetes-pkg-v3.0.508.21.tar.gz
2-3. 디렉토리 이동
cd exemone-kubernetes
2-4. exemONE 이미지 로드
exemONE 서비스를 사용할 모든 Node에 이미지를 로드합니다.
- 이미지 폴더 위치:
exemone-kubernetes/image/
docker 사용 시
docker load -i <이미지>.tar.gz
# ex) docker load -i bitnami-kafka-3.3.2-debian-11-r5.tar.gz
# 이미지 로드 검증
docker images | grep exemone
containerd 사용 시
namespace의 경우,
k8s.io가 일반적이나 환경에 따라 다를 수 있습니다.
ctr -n <namespace> images import <이미지>.tar.gz
# ex) ctr -n k8s.io images import bitnami-kafka-3.3.2-debian-11-r5.tar.gz
# 이미지 로드 검증
ctr -n k8s.io images ls | grep exemone
containerd 사용 시 ctr: archive/tar: invalid tar header 에러 발생 시 조치 방법
gunzip -k <이미지>.tar.gz # gzip 압축 해제
ctr -n <namespace> images import <이미지>.tar
# 예시
gunzip -k bitnami-kafka-3.3.2-debian-11-r5.tar.gz
ctr -n k8s.io images import bitnami-kafka-3.3.2-debian-11-r5.tar
2-5. 디렉토리 이동
cd exemone-kubernetes/installer/
2-6. 압축 해제
tar -xzvf exemone-kubernetes.tar.gz
2-7. 기존 디렉토리로 이동
- 사전 설정 단계에서 백업한 디렉토리로 이동합니다.
# cd <기존 디렉토리 경로>
cd exemone-kubernetes.bak/installer/exemone-kubernetes
2-8. Storage Class 확인
- 기존에 사용하던
storageClassName을generate.sh실행 시 사용합니다.
cat exemone/pvc.yaml | grep -m 1 storageClassName
2-9. 새로운 패키지 디렉토리로 이동
- 패키지 압축 해제 단계에서 풀어둔 새 패키지 폴더로 이동합니다.
# cd <새로운 패키지 디렉토리>
cd ../../../exemone-kubernetes/installer/exemone-kubernetes
2-10. generate.sh 실행 전 확인
기존 exemONE 서비스 실행 정보 확인
- namespace: exemONE 서비스가 실행 중인 Namespace
- cluster domain: 일반적으로
cluster.local사용 - storage class name: 2-8 과정에서 확인한 값
기존 YAML 파일에서 사용자가 수정한 부분을 신규 YAML 파일에 반영
NodeSelector, 리소스 제한 등
- 수정 대상:
exemone-kubernetes/installer/exemone-kubernetes/templates폴더 내 YAML 파일
2-11. generate.sh 실행
- 동작:
templates폴더 내 YAML 파일을 사용하여 exemONE 수집 모듈 생성을 위한 YAML 파일을 신규로 생성합니다.
./generate.sh
2-12. apply.sh 실행
- 동작:
SET_NAME폴더 이름에 있는 YAML 파일들을apply합니다.
./apply.sh
3. 주의사항 및 참고
- 패치 작업을 시작하기 전, 반드시 기존
exemone-kubernetes디렉토리를 백업해야 합니다. generate.sh실행 전, 기존 YAML 파일에서 사용자가 수정했던 항목(NodeSelector, 리소스 제한 등)을 신규 YAML 파일에 반드시 반영해 주세요.- 이미지 로드는 exemONE 서비스를 사용할 모든 Node에서 수행해야 합니다.
storageClassName은 기존 환경에서 사용 중이던 값을 그대로 사용해야 하며,generate.sh실행 시 반영됩니다.- containerd의 namespace는 일반적으로
k8s.io를 사용하나, 환경에 따라 다를 수 있으므로 사용 환경에 맞춰 설정해 주세요. cluster domain은 일반적으로cluster.local을 사용하지만, 환경에 따라 다를 수 있습니다.