NHN Kubernetes Service(NKS)クラスタのバックアップが必要な場合、Veleroプラグインを使用してObject Storageにバックアップできます。 この文書はObject StorageとVeleroを活用してクラスタをバックアップおよび復元する方法について記述します。
Veleroの詳細についてはVelero Docsを参照してください。
Object Storage APIを使用するにはテナントID(tenant ID)およびAPIエンドポイント(endpoint)の確認、APIパスワードの設定、Temporary URL Keyの作成を行う必要があります。
テナントIDとAPIのエンドポイントはObject StorageサービスページのAPI Endpoint設定ボタンをクリックして確認できます。
| 項目 | API Endpoint | 用途 |
|---|---|---|
| Identity | https://api-identity-infrastructure.nhncloudservice.com/v2.0 | 認証トークン発行 |
| Tenant ID | 数字 + 英字で構成された32文字の文字列 | 認証トークン発行 |
APIパスワードはObject StorageサービスページのAPI Endpoint設定ボタンをクリックして設定できます。
Object Storage APIの詳細についてはObject Storage APIガイドを参照してください。
Veleroクライアントでvelero logコマンドを使用するにはObject StorageにTemporary URL Keyを作成する必要があります。
| 名前 | 種類 | 形式 | 必須 | 説明 |
|---|---|---|---|---|
| X-Auth-Token | Header | String | O | トークンID |
| X-Account-Meta-Temp-Url-Key | Header | String | O | Temporary URLに使用されるKey情報 |
$ curl -X POST {Object Store} -H "X-Auth-Token: {tokenId}" -H "X-Account-Meta-Temp-Url-Key: {key}"
Veleroクライアントはクラスタのバックアップおよび復元コマンドを入力するプログラムです。 Velero GithubリポジトリからVeleroクライアントをダウンロードして、クラスタのバックアップおよび復元に活用できます。ダウンロードしたVeleroクライアントコマンドを実行する前にバックアップおよび復元クラスタのkubeconfigファイルをWebコンソールからダウンロードし、KUBECONFIG環境変数を設定してバックアップおよび復元対象クラスタを正確に指定する必要があります。 kubeconfig設定の詳細についてはkubectlインストールを参照してください。
$ wget https://github.com/vmware-tanzu/velero/releases/download/v1.17.0/velero-v1.17.0-linux-amd64.tar.gz
$ tar xzf velero-v1.17.0-linux-amd64.tar.gz
どのパスからでもVeleroクライアントを実行できるように環境変数に指定されたパスに移すか、Veleroがあるパスを環境変数に追加します。
$ sudo mv velero-v1.17.0-linux-amd64/velero /usr/local/bin
$ export PATH=$PATH:$(pwd)
VeleroサーバーはHelmを利用してインストールします。
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
ダウンロードしたファイルは基本的に実行権限がありません。実行権限を追加してください。
$ chmod 700 get_helm.sh
$ ./get_helm.sh
VeleroサーバーをインストールするにはHelm Repositoryを追加する必要があります。
$ helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
Veleroサーバーはバックアップクラスタと復元クラスタにそれぞれインストールする必要があります。同じObject Storageを使用するには2つのクラスタに同じhelmコマンドを使用してインストールすることを推奨します。
$ helm install velero vmware-tanzu/velero \
--namespace velero \
--create-namespace \
--version 11.0.0 \
--set initContainers[0].name=velero-plugin-for-openstack \
--set initContainers[0].image=lirt/velero-plugin-for-openstack:v0.6.1 \
--set initContainers[0].volumeMounts[0].name=plugins \
--set initContainers[0].volumeMounts[0].mountPath=/target \
--set configuration.defaultVolumesToRestic=true \
--set configuration.defaultResticPruneFrequency=1m \
--set configuration.backupStorageLocation[0].name=default \
--set configuration.backupStorageLocation[0].provider=community.openstack.org/openstack \
--set-string configuration.backupStorageLocation[0].bucket={Container} \
--set-string configuration.backupStorageLocation[0].config.region={Region} \
--set-string configuration.backupStorageLocation[0].config.resticRepoPrefix="swift:{Container}:/restic" \
--set configuration.volumeSnapshotLocation[0].name=default \
--set configuration.volumeSnapshotLocation[0].provider=community.openstack.org/openstack-cinder \
--set configuration.volumeSnapshotLocation[0].config.region={Region} \
--set configuration.extraEnvVars[0].name=OS_AUTH_URL \
--set-string configuration.extraEnvVars[0].value="{Identityサービス(Identity)}" \
--set configuration.extraEnvVars[1].name=OS_TENANT_ID \
--set-string configuration.extraEnvVars[1].value="{テナントID}" \
--set configuration.extraEnvVars[2].name=OS_USERNAME \
--set-string configuration.extraEnvVars[2].value="{NHN Cloud ID}" \
--set configuration.extraEnvVars[3].name=OS_PASSWORD \
--set-string configuration.extraEnvVars[3].value="{APIパスワード}" \
--set configuration.extraEnvVars[4].name=OS_REGION_NAME \
--set-string configuration.extraEnvVars[4].value="{Region}" \
--set configuration.extraEnvVars[5].name=OS_DOMAIN_ID \
--set-string configuration.extraEnvVars[5].value="default"
| 項目 | 説明 |
|---|---|
| Container | Object Sotrageで使用するコンテナ名 |
| Region | 韓国(パンギョ)リージョン:KR1韓国(坪村)リージョン: KR2 |
| IDサービス(Identity) | API Endpoint設定のIDサービス(Identity) |
| テナントID | API Endpoint設定のテナントID |
| NHN Cloud ID | NHN Cloud ID |
| APIパスワード | API Endpoint設定に入力したAPIパスワード |
Veleroサーバーはvelero uninstallコマンドで削除できます。
クラスタのバックアップはvelero backup createコマンドで設定できます。
$ export KUBECONFIG={バックアップクラスタのkubeconfigファイル}
$ velero backup create {name} --exclude-namespaces kube-system,velero
[注意]
kube-system、veleroなどのバックアップが必要ないnamespaceは除外する必要があります。 バックアップに含まれると復元時に問題が発生する可能性があります。
クラスタのバックアップ状態はvelero backup getコマンドで確認できます。
$ velero backup get
NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR
my-backup Completed 0 0 2025-10-13 11:01:53 +0900 KST 29d default <none>
クラスタバックアップ/復元はvelero restore createコマンドで設定できます。
$ export KUBECONFIG={復元クラスタのkubeconfigファイル}
$ velero restore create --from-backup {name}
[注意] ストレージクラス(StorageClass)のリソースは、バックアップおよび復元されないため、復元前に
バックアップクラスタに存在するものと同じ名前のストレージクラスを復元クラスタにあらかじめ作成しておく必要があります。 [注意]バックアップクラスタと復元クラスタのバージョンが異なる場合、復元時に問題が発生する可能性があります。
$ velero backup create my-backup --exclude-namespaces kube-system,velero
$ velero backup get
NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR
my-backup Completed 0 0 2025-10-13 11:01:53 +0900 KST 29d default <none>
$ velero restore create --from-backup my-backup
$ kubectl get pod --all-namespaces
velero schedule createコマンドで定期的なバックアップを設定できます。詳細についてはschedule-a-backupを参照してください。
$ velero schedule create my-schedule --schedule="*/10 * * * *" --exclude-namespaces kube-system,velero
$ velero backup get
NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR
my-schedule-20251013055022 Completed 0 0 2025-10-13 14:50:22 +0900 KST 29d default <none>
my-schedule-20251013054022 Completed 0 0 2025-10-13 14:40:22 +0900 KST 29d default <none>
velero schedule deleteコマンドで定期的なバックアップを解除できます。
$ velero schedule get
NAME STATUS CREATED SCHEDULE BACKUP TTL LAST BACKUP SELECTOR PAUSED
my-schedule Enabled 2025-10-13 14:38:11 +0900 KST */10 * * * * 0s 18s ago <none> false
$ velero schedule delete my-schedule
Are you sure you want to continue (Y/N)? y
Schedule deleted: my-schedule