メインコンテンツまでスキップ

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 を使用しますが、環境により異なる場合があります。