Vault の LTS 版がリリースされたので Vault クラスタをアップグレードしてみた
先日Vault 1.16がリリースされました!
Secrets Sync、Customizable GUI banners、EventsなどがGAされたりと色々な新しい機能が実装されているバージョンではありますが、Long Term Support(以下LTS)バージョンがリリースされた事も大きな発表かと思います。
これにより、Vault Enterpriseをご利用のお客様は最大2年間同一のLTSバージョンを使い続ける事が出来る様になり、Day2運用におけるVaultのアップグレード作業負荷を軽減する事が可能になります。
という事で、検証環境のVault Enterpriseクラスタ環境をv1.15.2
からv.1.16.1
へアップグレードしましたので、その際のメモです。
Prerequisites
Vault Enterpriseクラスタの環境は以下の様な形で構成しています。各ノードはUbuntuの仮想マシンで構成されており、VaultはUbuntu上で稼働しています。
Primary | DR secondary | |
---|---|---|
node_1 | xxx.xxx.xx.aaa | xxx.xxx.xx.ddd |
node_2 | xxx.xxx.xx.bbb | N/A |
node_3 | xxx.xxx.xx.ccc | N/A |
Storage backend | Integrated storage | Integrated storage |
Seal/Unseal | Shamir | Shamir |
アップグレードステップに関しては、ガイドに従って実施します。
まずは、DR secondaryクラスタのnode_1からアップグレードを行い、その後にPrimaryクラスタのアップグレードを行います。Primaryクラスタのアップグレードに関しては、node_1がLeaderノードであるため、node_3 -> node_2 -> node_1の順番にアップグレードを行います。
アップグレードを行う際の手順は、Vault upgrade standard procedureドキュメントに沿って行います。
Prepare upgrade
アップグレード手順にも記載がありますが、まずはスナップショットを取得しておきます。本検証環境においては、あまり大きな環境では無いため、スナップショットファイルのサイズとしては、数MB程度になっています。
vault operator raft snapshot save backup_v1-15-2.snapshot
アップグレードを行う前に、Vaultサーバーのステータスを確認しておきます。vault status
コマンドは念のため全てのノードで確認しておきます。
vault status
レプリケーションのステータスを、PrimaryとDR secondaryの両方で確認しておきます。"connection_status": "connected"
の確認や、last_dr_wal
, last_wal
を確認し、DRレプリケーションが正常に動いている事を確認しておきます。
vault read -format=json sys/replication/dr/status
確認した結果、問題無さそうであれば、Vaultのアップグレード作業をしていきます。
Upgrade
アップグレード手順のRolling Upgrade Procedure for upgrading a single HA clusterに従って、実施していきます。
まずは、DR secondaryクラスタのVaultサーバーを停止します。
sudo systemctl stop vault
バイナリを変更する前に、現在のVaultのバージョンを確認します。
vault version
Vault v1.15.2+ent (8b6cdc3100961bfd91cf03cfb5eaa0a2448199b5), built 2023-11-07T13:52:33Z
HashiCorpリリースサーバーからVault Enterpriseのv1.16.1
をダウンロードしておきます。ダウンロードした新しいVaultバイナリで古いバイナリを置き換えます。
sudo mv vault /usr/bin/vault
バイナリを置き換えたら、Vaultバイナリのバージョンを改めて確認しておきます。
vault version
Vault v1.16.1+ent (e1418439dfdd002afb6b5b4cf4bcb942f0391b19), built 2024-04-03T13:59:29Z
新しいVaultバイナリでVaultサーバーを起動します。
sudo systemctl start vault
Vaultのステータスを確認します。
vault status
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed true
Total Shares 1
Threshold 1
Unseal Progress 0/1
Unseal Nonce n/a
Version 1.16.1+ent
Build Date 2024-04-03T13:59:29Z
Storage Type raft
HA Enabled true
Unsealキーを用いて、ストレージバックエンドをUnsealします。
vault operator unseal
再度Vaultのステータスを確認し、Unsealされた事を確認します。Sealed
ステータスがfalse
になっている事が確認出来たら、次に進みます。
vault status
Key Value
--- -----
Seal Type shamir
Initialized true
Sealed false
Total Shares 1
Threshold 1
Version 1.16.1+ent
Build Date 2024-04-03T13:59:29Z
Storage Type raft
...
この手順を、Primaryクラスタのnode_3 -> node_2 -> node_1の順番に繰り返して、Primaryクラスタ全ノードのVaultサーバーのアップグレードを行います。
全ノードで作業が完了したら、アップグレード前に行ったVaultのステータス、レプリケーションステータスを確認し、問題無ければ完了です。
ここでは各ノード手動でVaultサーバーのアップグレードを行いましたが、ストレージバックエンドがIntegrated storageであれば、Autopilotという仕組みを利用したアップグレードも可能です。
お使いのVault Enterprise本番環境を実際にアップグレードする際は、検証環境等で事前に確認の上実施する様にして下さい。また、事前にサポートに以下の情報を共有しておくと、アップグレード作業中に何かトラブルがあった際の支援が迅速になります。詳細はVault Enterprise Support Planned Maintenance Notificationをご参照下さい。
- Date and time of maintenance window.
- Timezone for which the maintenance window has been scheduled.
- Is Vault Enterprise deployed on-prem or in a cloud provider, and which one if so?
- What is the backend storage for Vault? Integrated Storage, Consul, or something else?
- Are proper snapshots or backups of the Vault Storage available?
- Current Vault Version (and/or Consul Version)
- Targeted Vault Version (and/or Consul Version)
Vault 1.16
アップグレードが完了した後、Vault UIにログインしてみると、v1.15の時と同じインターフェースの様に見受けられますが、左側のパネルにSecrets SyncやCustom UI messagesの設定のための項目が増えていたり、GAされた機能に関する項目がUIからも確認出来る様になっています。
Vault1.16 UI: Secrets Sync, Custom Messagesという新たな設定項目が追加されています
また、左側のパネルのMonitoring -> Client Countでクラスタで利用しているクライアント数を確認する事ができますが、Secrets Syncとして消費しているクライアント数も確認出来るようになっています。
Vault1.16 UI: Secrets Syncで消費しているクライアント数もUIから確認できます
参考になりそうな部分あれば、ご活用ください!
Discussion