More Related Content Similar to JAZUG #26 AKS backup with Velero (20) More from Tetsuya Sodo (9) JAZUG #26 AKS backup with Velero2. Who am I ?
2
名前: 惣道 哲也 (そうどう てつや)
Twitter: @tetsuyasd
所属: 日本ヒューレット・パッカード株式会社 Pointnext事業統括
職務: オープンソース関連いろいろ(調査、検証、構築、提案)
- Cloud / Container / Data Analytics / etc…
17. 検証環境の構成
17
Product Version Note
AKS 1.16.7 東日本(japaneast)リージョン
azure-cli 2.1.0
kubectl 1.16.0
velero 1.3.1 2020/03/22時点のlatest version
velero plugins for Microsoft Azure 1.0.1 2020/03/22時点のlatest version
19. 導入・利用の手順概要
19
1-1. AKSクラスタの作成 (3ノード構成)
$ az aks create ¥
--resource-group $AZURE_AKS_RESOURCE_GROUP ¥
--name $AKS_NAME ¥
--network-plugin azure ¥
--vnet-subnet-id ${VNET_SUBNET_ID} ¥
--docker-bridge-address 172.17.0.1/16 ¥
--dns-service-ip 10.0.0.10 ¥
--service-cidr 10.0.0.0/16 ¥
--node-count 3 ¥
--kubernetes-version 1.16.7 ¥
--generate-ssh-keys
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool1-18086731-vmss000000 Ready agent 146m v1.16.7
aks-nodepool1-18086731-vmss000001 Ready agent 146m v1.16.7
aks-nodepool1-18086731-vmss000002 Ready agent 146m v1.16.7
※事前のResourceGroupやVNetの作成手順は省略しています。
また、環境変数の指定は適宜行う必要があります。
詳細な手順は最後に紹介するブログからご確認いただけます。
事前準備
20. 導入・利用の手順概要
20
1-2. ストレージアカウントとBLOBコンテナの作成
$ AZURE_STORAGE_ACCOUNT_ID="velero$RANDOM"
$ az storage account create ¥
--name $AZURE_STORAGE_ACCOUNT_ID ¥
--resource-group $AZURE_BACKUP_RESOURCE_GROUP ¥
--sku Standard_GRS ¥
--encryption-services blob ¥
--https-only true ¥
--kind BlobStorage ¥
--access-tier Hot
$ BLOB_CONTAINER=velero
$ az storage container create ¥
-n $BLOB_CONTAINER ¥
--public-access off ¥
--account-name $AZURE_STORAGE_ACCOUNT_ID
事前準備
21. 導入・利用の手順概要
21
1-3. service principalの作成(AzureAD)
$ AZURE_CLIENT_SECRET=`az ad sp create-for-rbac ¥
--name "velero" ¥
--role "Contributor" ¥
--query 'password' ¥
--scopes /subscriptions/$AZURE_SUBSCRIPTION_ID ¥
-o tsv`
$ AZURE_CLIENT_ID=`az ad sp list ¥
--display-name "velero" ¥
--query '[0].appId' ¥
-o tsv`
事前準備
アプリの登録メニューから
作成されたSPが確認できる
22. 導入・利用の手順概要
22
1-3. service principalの作成(AzureAD)
$ cat credentials-velero
AZURE_SUBSCRIPTION_ID=03xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_TENANT_ID=27xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_CLIENT_ID=65xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_CLIENT_SECRET=b6xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_RESOURCE_GROUP=MC_akstest01rg_aks01_japaneast
AZURE_CLOUD_NAME=AzurePublicCloud
✓ ここまでの手順で取得した情報をもとにvelero用のクレデンシャルファイルを作る
✓ “AZURE_RESOURCE_GROUP”は”MC”で始まるAKSの実際のリソース(VMなど)が格納されているRGを指定
事前準備
23. 導入・利用の手順概要
23
2-1. Velero CLIのインストール
$ wget https://github.com/vmware-tanzu/velero/releases/download/v1.3.1/velero-v1.3.1-
linux-amd64.tar.gz
$ tar zxvf velero-v1.3.1-linux-amd64.tar.gz
$ export PATH=$PATH:~/velero-v1.3.1-linux-amd64
インストール
24. 導入・利用の手順概要
24
2-2. Veleroのインストール
$ velero install ¥
--provider azure ¥
--plugins velero/velero-plugin-for-microsoft-azure:v1.0.1 ¥
--secret-file ./credentials-velero ¥
--bucket $BLOB_CONTAINER ¥
--backup-location-config ¥
resourceGroup=$AZURE_BACKUP_RESOURCE_GROUP,storageAccount=$AZURE_STORAGE_ACCOUNT_ID ¥
--snapshot-location-config apiTimeout=5m
インストール
✓ リソース保存先(bucket)のBLOBや、PVであるManaged Diskを扱うためのAzure用Veleroプラグインを指定する
✓ “--backup-location-config”はリソース保存先の設定
✓ “--snapshot-location-config”はPVのスナップショットの設定
✓ それぞれ細かい設定が可能
✓ https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure/blob/master/backupstoragelocation.md
✓ https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure/blob/master/volumesnapshotlocation.md
25. 導入・利用の手順概要
25
3-1. バックアップスケジュールの定義
$ velero schedule create voting-backup ¥
--include-namespaces=voting ¥
--snapshot-volumes=true ¥
--volume-snapshot-locations=default ¥
--schedule="*/5 * * * *"
$ velero schedule get
NAME STATUS CREATED SCHEDULE BACKUP TTL LAST BACKUP
SELECTOR
voting-backup Enabled 2020-02-29 12:08:34 +0000 UTC */5 * * * * 720h0m0s 6s ago
<none>
バックアップ・リストア
✓ バックアップ対象を指定するオプション
✓ 特定のnamespaceを含める、または、除外する
✓ 特定のリソースタイプを含める、または、除外する
✓ 特定のラベルをセレクタで指定する
✓ バックアップの挙動を指定するオプション
✓ バックアップ取得スケジュール(cronフォーマットで指定)
✓ バックアップデータの保持期間(TTL)(デフォルト:720時間)
✓ PVのスナップショットを取得するか(true/false)
※”velero backup create <backup-name> …”としてワンショットのバックアップを取得することも可能です。
26. 導入・利用の手順概要
26
3-2. 取得済みバックアップの確認
$ velero backup get
NAME STATUS CREATED EXPIRES STORAGE
LOCATION SELECTOR
voting-backup-20200229121201 Completed 2020-02-29 12:12:01 +0000 UTC 29d default
<none>
バックアップ・リストア
✓ 前ページのスケジュール設定に従い、5分間隔で自動バックアップが行われる
27. 導入・利用の手順概要
27
3-3. リストアの実行
$ velero restore create --from-backup voting-backup-20200229121201
Restore request "voting-backup-20200229121201-20200229121613" submitted successfully.
Run `velero restore describe voting-backup-20200229121201-20200229121613` or `velero restore logs
voting-backup-20200229121201-20200229121613` for more details.
$ velero restore get
NAME BACKUP STATUS WARNINGS
ERRORS CREATED SELECTOR
voting-backup-20200229121201-20200229121613 voting-backup-20200229121201 InProgress 0
0 2020-02-29 12:16:14 +0000 UTC <none>
$ velero restore get
NAME BACKUP STATUS WARNINGS
ERRORS CREATED SELECTOR
voting-backup-20200229121201-20200229121613 voting-backup-20200229121201 Completed 0
0 2020-02-29 12:16:14 +0000 UTC <none>
バックアップ・リストア
✓ 取得済みバックアップから一つ選択し、リストアを実行
33. 参考URL
– Azure Kubernetes Services (AKS) のストレージとバックアップに関するベスト プラクティス
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-practices-storage
– Veleroの公式ドキュメント (latest: v1.3.1 as of 2020/03/22)
https://velero.io/docs/v1.3.1/
– Velero plugins for Microsoft Azureのドキュメント
https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure/blob/master/README.md
– @ysakashitaさんによるGKEのVeleroバックアップの記事
https://qiita.com/ysakashita/items/3a0b2ad9ac37e2ce315a
– 本日の発表内容をqiitaにもアップしております
https://qiita.com/tetsuyasodo/items/a32e437958d6c8887512
33