[.note]#Note: Arkプロジェクトの名前がVeleroに変更され、v0.11.0で複数の変更が導入されました。 このガイドは、これらの変更を組み込むためにまもなく更新されます。 ご理解のほどよろしくお願いいたします。
#
前書き
Heptio Arkは、Kubernetesオブジェクトを圧縮してオブジェクトストレージにバックアップする、Kubernetesクラスターの便利なバックアップツールです。 また、クラウドプロバイダーのブロックストレージスナップショット機能を使用してクラスターの永続ボリュームのスナップショットを取得し、クラスターのオブジェクトと永続ボリュームを以前の状態に復元できます。
StackPointCloudのDigitalOcean Ark Pluginを使用すると、DigitalOceanブロックストレージを使用して永続ボリュームのスナップショットを作成し、スペースを使用してKubernetesオブジェクトをバックアップできます。 DigitalOceanでKubernetesクラスターを実行する場合、これにより、クラスターの状態をすばやくバックアップし、災害が発生した場合にそれを復元できます。
このチュートリアルでは、ローカルマシンでArkクライアントをセットアップおよび構成し、ArkサーバーをKubernetesクラスターにデプロイします。 次に、ログに永続ボリュームを使用するサンプルNginxアプリをデプロイし、災害復旧シナリオをシミュレートします。
前提条件
このチュートリアルを始める前に、次のものが利用可能である必要があります。
ローカルコンピュータで
-
クラスターに接続するように構成された
kubectl
コマンドラインツール。 official Kubernetes documentationにkubectl
をインストールして構成する方法の詳細を読むことができます。 -
git
コマンドラインユーティリティ。 Getting Started with Gitにgit
をインストールする方法を学ぶことができます。
DigitalOceanアカウントで:
-
DigitalOcean Droplets上のDigitalOcean KubernetesクラスターまたはKubernetesクラスター(バージョン
1.7.5
以降) -
クラスター内で実行されているDNSサーバー。 DigitalOcean Kubernetesを使用している場合、これはデフォルトで実行されています。 Kubernetes DNSサービスの設定の詳細については、Kuberentesの公式ドキュメントのCustomizing DNS Serviceを参照してください。
-
バックアップされたKubernetesオブジェクトを保存するDigitalOcean Space。 スペースの作成方法については、the Spaces product documentationを参照してください。
-
DigitalOcean Spaceのアクセスキーペア。 アクセスキーのセットを作成する方法については、How to Manage Administrative Access to Spacesを参照してください。
-
DigitalOcean APIで使用する個人アクセストークン。 パーソナルアクセストークンを作成する方法については、How to Create a Personal Access Tokenを参照してください。
このすべてを設定したら、このガイドから始める準備ができました。
[[step-1 -—- installing-the-ark-client]] ==ステップ1—Arkクライアントのインストール
Heptio Arkバックアップツールは、ローカルコンピューターにインストールされたクライアントとKubernetesクラスターで実行されるサーバーで構成されます。 まず、ローカルのArkクライアントをインストールします。
Webブラウザーで、Ark / Velero GitHubリポジトリreleases pageに移動し、OSとシステムアーキテクチャに対応するリリースを見つけて、リンクアドレスをコピーします。 このガイドでは、ローカルマシンとしてx86-64(またはAMD64)プロセッサ上のUbuntu 18.04サーバーを使用し、Arkv0.10.0
リリースを使用します。
[.note]#Note:このガイドに従うには、Arkクライアントのv0.10.0をダウンロードしてインストールする必要があります。
#
次に、ローカルコンピューターのコマンドラインから、一時的な/tmp
ディレクトリとcd
に移動します。
cd /tmp
wget
と前にコピーしたリンクを使用して、リリースtarballをダウンロードします。
wget https://link_copied_from_release_page
ダウンロードが完了したら、tar
を使用してtarballを抽出します(ファイル名はリリースバージョンとOSによって異なる場合があることに注意してください)。
tar -xvzf ark-v0.10.0-linux-amd64.tar.gz
/tmp
ディレクトリには、抽出されたark
バイナリと、ダウンロードしたtarballが含まれているはずです。
バイナリを実行して、ark
クライアントを実行できることを確認します。
./ark --help
次のヘルプ出力が表示されます。
OutputHeptio Ark is a tool for managing disaster recovery, specifically for Kubernetes
cluster resources. It provides a simple, configurable, and operationally robust
way to back up your application state and associated data.
If you're familiar with kubectl, Ark supports a similar model, allowing you to
execute commands such as 'ark get backup' and 'ark create schedule'. The same
operations can also be performed as 'ark backup get' and 'ark schedule create'.
Usage:
ark [command]
Available Commands:
backup Work with backups
client Ark client related commands
completion Output shell completion code for the specified shell (bash or zsh)
create Create ark resources
delete Delete ark resources
describe Describe ark resources
get Get ark resources
help Help about any command
plugin Work with plugins
restic Work with restic
restore Work with restores
schedule Work with schedules
server Run the ark server
version Print the ark version and associated image
. . .
この時点で、ark
実行可能ファイルを一時的な/tmp
ディレクトリから移動し、PATH
に追加する必要があります。 UbuntuシステムのPATH
に追加するには、/usr/local/bin
にコピーするだけです。
sudo mv ark /usr/local/bin/ark
これで、Arkサーバーを構成してKubernetesクラスターに展開する準備が整いました。
[[step-2 -—- installing-and-configuring-the-ark-server]] ==ステップ2—Arkサーバーのインストールと構成
ArkをKubernetesクラスターにデプロイする前に、まずArkの前提条件オブジェクトを作成します。 Arkの前提条件は次のとおりです。
-
heptio-ark
名前空間 -
ark
サービスアカウント -
ark
サービスアカウントにアクセス許可を付与するための役割ベースのアクセス制御(RBAC)ルール -
箱舟固有のリソースのカスタムリソース(CRD):
Backup
、Schedule
、Restore
、Config
上記のKubernetesオブジェクトの定義を含むYAMLマニフェストファイルは、Ark source codeにあります。 まだ/tmp
ディレクトリにある間に、以前にダウンロードしたクライアントリリースバージョンに対応するソースコードtarballをダウンロードします。 このチュートリアルでは、これはv0.10.0
です。
wget https://github.com/heptio/velero/archive/v0.10.0.tar.gz
ここで、tar
を使用してtarballを抽出します(ファイル名はリリースバージョンによって異なる場合があることに注意してください)。
tar -xvzf v0.10.0.tar.gz
ダウンロードしたら、velero-0.10.0
ディレクトリに移動します。
cd velero-0.10.0
上記の前提条件のリソースは、examples/common/00-prereqs.yaml
YAMLファイルにあります。 kubectl apply
を使用してファイルを渡すことにより、Kubernetesクラスターでこれらのリソースを作成します。
kubectl apply -f examples/common/00-prereqs.yaml
次のような出力が表示されるはずです。
Outputcustomresourcedefinition.apiextensions.k8s.io/backups.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/schedules.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/restores.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/downloadrequests.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/deletebackuprequests.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/podvolumebackups.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/podvolumerestores.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/resticrepositories.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/backupstoragelocations.ark.heptio.com created
customresourcedefinition.apiextensions.k8s.io/volumesnapshotlocations.ark.heptio.com created
namespace/heptio-ark created
serviceaccount/ark created
clusterrolebinding.rbac.authorization.k8s.io/ark created
クラスタに必要なArkKubernetesオブジェクトを作成したので、Ark DigitalOcean Pluginをダウンロードしてインストールできます。これにより、DigitalOcean SpacesをbackupStorageProvider
(Kubernetesオブジェクトの場合)およびDigitalOceanとして使用できるようになります。ストレージをpersistentVolumeProvider
としてブロックします(永続ボリュームバックアップの場合)。
velero-0.10.0
ディレクトリから戻り、プラグインのバージョンv0.10.0
をダウンロードします。 プラグインのリリースバージョンは、StackPointCloud DigitalOceanプラグインreleases pageにあります。
cd ..
wget https://github.com/StackPointCloud/ark-plugin-digitalocean/archive/v0.10.0.tar.gz
ここで、tar
を使用してtarballを抽出します(ファイル名はリリースバージョンによって異なる場合があり、Veleroを含む以前のv0.10.0.tar.gz
tarballを削除しなかった場合は.1
で終わる場合があります)クライアント/サーバーのソースコード):
tar -xvzf v0.10.0.tar.gz.1
プラグインディレクトリに移動します。
cd ark-plugin-digitalocean-0.10.0
DigitalOcean SpaceのアクセスキーをKubernetesSecretとして保存します。 まず、お気に入りのエディターを使用してexamples/credentials-ark
ファイルを開きます。
nano examples/credentials-ark
<AWS_ACCESS_KEY_ID>
と<AWS_SECRET_ACCESS_KEY>
をスペースアクセスキーと秘密キーに置き換えます。
examples/credentials-ark
[default]
aws_access_key_id=your_spaces_access_key_here
aws_secret_access_key=your_spaces_secret_key_here
ファイルを保存して閉じます。
次に、kubectl
を使用してcloud-credentials
シークレットを作成し、digitalocean_token
パラメータを使用してAPIパーソナルアクセストークンを挿入します。
kubectl create secret generic cloud-credentials \
--namespace heptio-ark \
--from-file cloud=examples/credentials-ark \
--from-literal digitalocean_token=your_personal_access_token
次のような出力が表示されるはずです。
Outputsecret/cloud-credentials created
cloud-credentials
シークレットが正常に作成されたことを確認するには、kubectl
を使用してdescribe
シークレットを作成します。
kubectl describe secrets/cloud-credentials --namespace heptio-ark
cloud-credentials
シークレットを説明する次の出力が表示されます。
OutputName: cloud-credentials
Namespace: heptio-ark
Labels:
Annotations:
Type: Opaque
Data
====
cloud: 115 bytes
digitalocean_token: 64 bytes
これで、プラグインのオブジェクトストレージバックエンドを構成するdefault
という名前のArkBackupStorageLocation
オブジェクトの作成に進むことができます。 これを行うには、YAMLマニフェストファイルを編集してから、Kubernetesクラスターにオブジェクトを作成します。
お気に入りのエディターでexamples/05-ark-backupstoragelocation.yaml
を開きます。
nano examples/05-ark-backupstoragelocation.yaml
強調表示されたフィールドにスペースの名前と地域を挿入します。
examples/05-ark-backupstoragelocation.yaml
. . .
---
apiVersion: ark.heptio.com/v1
kind: BackupStorageLocation
metadata:
name: default
namespace: heptio-ark
spec:
provider: aws
objectStorage:
bucket: space_name_here
config:
s3Url: https://space_region_here.digitaloceanspaces.com
region: space_region_here
完了したら、ファイルを保存して閉じます。
kubectl apply
を使用してクラスター内にオブジェクトを作成します。
kubectl apply -f examples/05-ark-backupstoragelocation.yaml
次のような出力が表示されるはずです。
Outputbackupstoragelocation.ark.heptio.com/default created
ブロックストレージバックエンドを構成するVolumeSnapshotLocation
オブジェクトに対して、この手順を繰り返す必要はありません。 適切なパラメータがすでに事前設定されています。 これらを調べるには、エディターでexamples/06-ark-volumesnapshotlocation.yaml
を開きます。
nano examples/06-ark-volumesnapshotlocation.yaml
examples/06-ark-volumesnapshotlocation.yaml
. . .
---
apiVersion: ark.heptio.com/v1
kind: VolumeSnapshotLocation
metadata:
name: default
namespace: heptio-ark
spec:
provider: digitalocean-blockstore
完了したら、ファイルを閉じます。
kubectl apply
を使用してクラスター内にオブジェクトを作成します。
kubectl apply -f examples/06-ark-volumesnapshotlocation.yaml
Outputvolumesnapshotlocation.ark.heptio.com/default created
この時点で、Arkサーバーの構成が完了し、examples/10-deployment.yaml
構成ファイルにあるKubernetesデプロイメントを作成できます。 このファイルを簡単に見てみましょう。
cat examples/10-deployment.yaml
次のテキストが表示されます。
examples/10-deployment.yaml
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
namespace: heptio-ark
name: ark
spec:
replicas: 1
template:
metadata:
labels:
component: ark
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8085"
prometheus.io/path: "/metrics"
spec:
restartPolicy: Always
serviceAccountName: ark
containers:
- name: ark
image: gcr.io/heptio-images/ark:latest
command:
- /ark
args:
- server
- --default-volume-snapshot-locations=digitalocean-blockstore:default
volumeMounts:
- name: cloud-credentials
mountPath: /credentials
- name: plugins
mountPath: /plugins
- name: scratch
mountPath: /scratch
env:
- name: AWS_SHARED_CREDENTIALS_FILE
value: /credentials/cloud
- name: ARK_SCRATCH_DIR
value: /scratch
- name: DIGITALOCEAN_TOKEN
valueFrom:
secretKeyRef:
key: digitalocean_token
name: cloud-credentials
volumes:
- name: cloud-credentials
secret:
secretName: cloud-credentials
- name: plugins
emptyDir: {}
- name: scratch
emptyDir: {}
ここでは、gcr.io/heptio-images/ark:latest
コンテナの単一のレプリカで構成されるark
というデプロイメントを作成していることがわかります。 ポッドは、前に作成したcloud-credentials
シークレットを使用して構成されます。
kubectl apply
を使用してデプロイメントを作成します。
kubectl apply -f examples/10-deployment.yaml
次のような出力が表示されるはずです。
Outputdeployment.apps/ark created
heptio-ark
名前空間でkubectl get
を使用して、デプロイメントが正常に作成されたことを再確認できます。
kubectl get deployments --namespace=heptio-ark
次のような出力が表示されるはずです。
OutputNAME READY UP-TO-DATE AVAILABLE AGE
ark 1/1 1 1 7s
Arkサーバーポッドは、Ark DigitalOceanプラグインをインストールするまで正しく起動しない場合があります。 ark-blockstore-digitalocean
プラグインをインストールするには、前にインストールしたark
クライアントを使用します。
ark plugin add quay.io/stackpoint/ark-blockstore-digitalocean:v0.10.0
--kubeconfig
フラグで使用するkubeconfig
を指定できます。 このフラグを使用しない場合、ark
はKUBECONFIG
環境変数をチェックしてから、kubectl
のデフォルト(~/.kube/config
)にフォールバックします。
この時点で、Arkは実行され、完全に構成されており、Kubernetesクラスターオブジェクトと永続ボリュームをDigitalOcean SpacesとBlock Storageにバックアップおよび復元する準備ができています。
次のセクションでは、簡単なテストを実行して、バックアップおよび復元機能が期待どおりに機能することを確認します。
[[step-3 -—- testing-backup-and-restore-procedure]] ==ステップ3—バックアップと復元の手順のテスト
Arkのインストールと設定が正常に完了したので、テストNginx Deployment、Persistent Volume、およびServiceを作成し、バックアップと復元のドリルを実行して、すべてが正常に機能することを確認します。
ark-plugin-digitalocean
リポジトリには、nginx-pv.yaml
と呼ばれるサンプルのNginxマニフェストが含まれています。
選択したエディターを使用してこのファイルを開きます。
nano examples/nginx-pv.yaml
次のテキストが表示されます。
Output---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nginx-logs
namespace: nginx-example
labels:
app: nginx
spec:
storageClassName: do-block-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
namespace: nginx-example
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
volumes:
- name: nginx-logs
persistentVolumeClaim:
claimName: nginx-logs
containers:
- image: nginx:1.7.9
name: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/log/nginx"
name: nginx-logs
readOnly: false
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: my-nginx
namespace: nginx-example
spec:
ports:
- port: 80
targetPort: 80
selector:
app: nginx
type: LoadBalancer
このファイルでは、次の仕様を確認します。
-
nginx:1.7.9
コンテナイメージの単一のレプリカで構成されるNginxデプロイメント -
do-block-storage
StorageClassを使用した5Gi永続ボリュームクレーム(nginx-logs
と呼ばれる) -
ポート
80
を公開するLoadBalancer
サービス
nginx
イメージバージョンを1.14.2
に更新します。
Output. . .
containers:
- image: nginx:1.14.2
name: nginx
ports:
- containerPort: 80
volumeMounts:
. . .
完了したら、ファイルを保存して閉じます。
kubectl apply
を使用してオブジェクトを作成します。
kubectl apply -f examples/nginx-pv.yml
次のような出力が表示されるはずです。
Outputnamespace/nginx-example created
persistentvolumeclaim/nginx-logs created
deployment.apps/nginx-deployment created
service/my-nginx created
展開が成功したことを確認します。
kubectl get deployments --namespace=nginx-example
次のような出力が表示されるはずです。
OutputNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx-deployment 1 1 1 1 1h
Available
が1に達すると、kubectl get
を使用してNginxロードバランサーの外部IPをフェッチします。
kubectl get services --namespace=nginx-example
my-nginx
サービスの内部CLUSTER-IP
とEXTERNAL-IP
の両方が表示されます。
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-nginx LoadBalancer 10.32.27.0 203.0.113.0 80:30754/TCP 3m
EXTERNAL-IP
をメモし、Webブラウザを使用してそこに移動します。
次のNGINXウェルカムページが表示されます。
これは、Nginxの展開とサービスが稼働中であることを示しています。
災害シナリオをシミュレートする前に、まずNginxアクセスログ(Nginxポッドに接続された永続ボリュームに保存されている)を確認しましょう。
kubectl get
を使用してポッドの名前を取得します。
kubectl get pods --namespace nginx-example
OutputNAME READY STATUS RESTARTS AGE
nginx-deployment-77d8f78fcb-zt4wr 1/1 Running 0 29m
ここで、exec
を実行中のNginxコンテナーに入れて、その中にシェルを取得します。
kubectl exec -it nginx-deployment-77d8f78fcb-zt4wr --namespace nginx-example -- /bin/bash
Nginxコンテナ内に入ると、cat
はNginxアクセスログになります。
cat /var/log/nginx/access.log
Nginxアクセスエントリがいくつか表示されます。
Output10.244.17.1 - - [01/Oct/2018:21:47:01 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/203.0.113.11 Safari/537.36" "-"
10.244.17.1 - - [01/Oct/2018:21:47:01 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://203.0.113.0/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/203.0.113.11 Safari/537.36" "-"
これらを使用して復元手順の成功を確認するため、これら(特にタイムスタンプ)を書き留めます。
これで、バックアップ手順を実行して、すべてのnginx
KubernetesオブジェクトをSpacesにコピーし、Nginxのデプロイ時に作成した永続ボリュームのスナップショットを取得できます。
ark
クライアントを使用してnginx-backup
というバックアップを作成します。
ark backup create nginx-backup --selector app=nginx
--selector app=nginx
は、app=nginx
ラベルセレクタを使用してKubernetesオブジェクトのみをバックアップするようにArkサーバーに指示します。
次のような出力が表示されるはずです。
OutputBackup request "nginx-backup" submitted successfully.
Run `ark backup describe nginx-backup` for more details.
ark backup describe nginx-backup
を実行すると、少し遅れて次の出力が得られます。
OutputName: nginx-backup
Namespace: heptio-ark
Labels:
Annotations:
Phase: Completed
Namespaces:
Included: *
Excluded:
Resources:
Included: *
Excluded:
Cluster-scoped: auto
Label selector: app=nginx
Snapshot PVs: auto
TTL: 720h0m0s
Hooks:
Backup Format Version: 1
Started: 2018-09-26 00:14:30 -0400 EDT
Completed: 2018-09-26 00:14:34 -0400 EDT
Expiration: 2018-10-26 00:14:30 -0400 EDT
Validation errors:
Persistent Volumes:
pvc-e4862eac-c2d2-11e8-920b-92c754237aeb:
Snapshot ID: 2eb66366-c2d3-11e8-963b-0a58ac14428b
Type: ext4
Availability Zone:
IOPS:
この出力は、nginx-backup
が正常に完了したことを示しています。
DigitalOcean Cloudコントロールパネルから、Kubernetesバックアップファイルを含むスペースに移動します。
Arkバックアップファイルを含むnginx-backup
という新しいディレクトリが表示されます。
左側のナビゲーションバーを使用して、Imagesに移動し、次にSnapshotsに移動します。 Snapshots内で、Volumesに移動します。 上記の出力にリストされているPVCに対応するスナップショットが表示されます。
これで、復元手順をテストできます。
まず、nginx-example
名前空間を削除しましょう。 これにより、ロードバランサーや永続ボリュームなど、ネームスペース内のすべてが削除されます。
kubectl delete namespace nginx-example
ロードバランサーエンドポイントでNginxにアクセスできなくなったこと、およびnginx-example
デプロイメントが実行されていないことを確認します。
kubectl get deployments --namespace=nginx-example
OutputNo resources found.
これで、もう一度ark
クライアントを使用して復元手順を実行できます。
ark restore create --from-backup nginx-backup
ここでは、create
を使用して、nginx-backup
オブジェクトからArkRestore
オブジェクトを作成します。
次のような出力が表示されるはずです。
OutputRestore request "nginx-backup-20180926143828" submitted successfully.
Run `ark restore describe nginx-backup-20180926143828` for more details.
復元された展開のステータスを確認します。
kubectl get deployments --namespace=nginx-example
OutputNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx-deployment 1 1 1 1 1m
永続ボリュームの作成を確認します。
kubectl get pvc --namespace=nginx-example
OutputNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nginx-logs Bound pvc-e4862eac-c2d2-11e8-920b-92c754237aeb 5Gi RWO do-block-storage 3m
Nginxサービスの外部IPに再度移動して、Nginxが稼働していることを確認します。
最後に、復元された永続ボリュームのログをチェックして、復元後にログ履歴が保持されていることを確認します。
これを行うには、kubectl get
を使用してポッドの名前をもう一度フェッチします。
kubectl get pods --namespace nginx-example
OutputNAME READY STATUS RESTARTS AGE
nginx-deployment-77d8f78fcb-zt4wr 1/1 Running 0 29m
次に、exec
をその中に入れます。
kubectl exec -it nginx-deployment-77d8f78fcb-zt4wr --namespace nginx-example -- /bin/bash
Nginxコンテナ内に入ると、cat
はNginxアクセスログになります。
cat /var/log/nginx/access.log
Output10.244.17.1 - - [01/Oct/2018:21:47:01 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/203.0.113.11 Safari/537.36" "-"
10.244.17.1 - - [01/Oct/2018:21:47:01 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "http://203.0.113.0/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/203.0.113.11 Safari/537.36" "-"
バックアップ前と同じアクセス試行(タイムスタンプに注意)が表示され、永続ボリュームの復元が成功したことが確認されます。 復元を実行した後にNginxのランディングページにアクセスした場合、ログに追加の試行がある場合があることに注意してください。
この時点で、KubernetesオブジェクトをDigitalOcean Spacesにバックアップし、ブロックストレージボリュームスナップショットを使用して永続ボリュームを正常にバックアップしました。 災害シナリオをシミュレートし、テストNginxアプリケーションにサービスを復元しました。
結論
このガイドでは、Ark KubernetesバックアップツールをDigitalOceanベースのKubernetesクラスターにインストールして構成しました。 KubernetesオブジェクトをDigitalOcean Spacesにバックアップし、ブロックストレージボリュームスナップショットを使用して永続ボリュームをバックアップするようにツールを構成しました。
Arkは、Kubernetesクラスターの定期的なバックアップのスケジュールにも使用できます。 これを行うには、ark schedule
コマンドを使用できます。 また、あるクラスターから別のクラスターにリソースを移行するためにも使用できます。 これら2つの使用例の詳細については、official Ark documentationを参照してください。
DigitalOcean Spacesの詳細については、official Spaces documentationを参照してください。 ブロックストレージボリュームの詳細については、Block Storage Volume documentationを参照してください。
このチュートリアルは、StackPointCloudのark-plugin-digitalocean
GitHub repoにあるREADMEに基づいています。