今回の内容
今回はRancher経由でkubernetesクラスタにLonghornをインストールし、Longhornを利用してステートフルなアプリケーションをデプロイ後、S3にデータのバックアップを作成します。
Rancher: v2.7.0
Longhorn: v1.5.3
RKE2: v1.24.17+rke2r1
OS: Ubuntu22.04
Longhornとは
Longhornはkubernetesのためのソフトウェアディファインドストレージです。高可用で軽量で使いやすく、外部ストレージに依存しない作りとなっております。裏で外部ストレージを利用していてもいいですし、ローカルDiskでも問題ありません。Linux filesystemとして利用できるのであればLonghornでマウント可能です。
OSSで旧Rancher Labs(SUSEが買収)が開発しており、無料で全ての機能が利用可能です。
Longhornについてはこちら。
インストール方法
Longhornのインストール方法は3つあります。
- kubectlでyamlを適用してのインストール
- helmでのインストール
- Rancher UIからのインストール
1.kubectlで適用する場合は以下のコマンドを適用します。
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
2.helmの場合は以下のコマンドを適用します。
helm repo add longhorn https://charts.longhorn.io
helm repo update
kubectl create namespace longhorn-system
helm install longhorn longhorn/longhorn --namespace longhorn-system
3.Rancherからのインストールでは、Cluster toolsもしくはAppsのChartsからインストールできます。
Longhornを利用してVolumeをマウントする方法(Rancher経由)
Longhornに限らず、kubernetesでVolumeをマウントするには、Storage ClassがPersistent Volume provisionerを呼び出して、Persistent Volumeを確保し、実際のストレージに書き込む流れとなります。
PV領域を確保するために、ユーザはPersitent Volume Claimを利用しVolume確保を要求します。
Longhornを利用する場合はLonghornがStorage Classとなります。この辺りを整理するともっと複雑な話になりますが、大まかな流れは以下の画像の通りです。
Rancher Ui上からVolumeを確保するにはPVCのところから必要項目を入力すれば問題ありません。
PVCを作成するとPVも作成され、Volumeが確保されます。
あとはDeploymentなどのリソースを作成する時にPodに今作成したPVをマウントしてあげることでステートフルなアプリケーションを作成できます。
するとLonghornのUI上でもVolumeがアタッチしていることが確認できます。
LonghornのUI上からスナップショットをとったり、Cronjobとしてスナップショットの作成を自動化することができますが、今回はバックアップが主題なので省略します。
LonghornでS3へのバックアップ設定
Longhornではバックアップの設定をするのに2つのステップが必要です。
- IAMロールでの権限付与
- Secret作成
- バックアップ先の設定
1.のIAMロールでの権限付与は遥か昔に行っているので今回は行いませんが、設定としてはここの通りに設定すれば完了です。もしくは全権限を与えるか。。。(個人で利用する分には問題ありませんが、業務ではやめましょう)
2.のSecet作成ではRancher UI上からでは、Secretsで作成をクリックし、Opaque
を選択してください。
そして、1.で権限を付与したユーザのAccess KeyとSecret Access Keyを入力します。
この時必ずNamespaceにLonghorn-system
を選択してください。
Secretを作成したら今度はLonghorn UI上での設定です。
LonghornのSettingのGeneralから設定ができます。
この中でBackup Target
とBackup Target Credential Secret
に情報を入力してあげます。
バックアップターゲットでは、s3://<your-bucket-name>@<your-aws-region>/
の形でURLを設定してあげる必要があります。また、バゲットの中でさらにディレクトリを切っている場合は、s3://<your-bucket-name>@<your-aws-region>/mypath/
の形になります。
仮にtest
というバケット名で東京リージョン、サブディレクトリが、rancher-backの場合は以下の様に入れてあげます。
s3://test@ap-northeast-1/rancher-back/
そしてSeceretの欄に先ほど作成したAWSの資格情報を保存したSecretの名前を入力します。
今回はaws-bukcup
です。それぞれ入力したのが以下の画像となります。
入力後、一番したまでスクロールしSave
ボタンを押します。
その後、Backupタブに遷移しエラーが表示されなければ正しく設定ができています。
ここまで来るとbackupが取得できる様になっています。
Volumeタブに遷移し、任意のVolumeを選択すると、Create Backup
をクリックするとバックアップが作成されます。
作成後、Backupタブで作成したバックアップの確認ができます。
万がトラブルがあってもこのバックアップからデータをリストアできる様になります。
以上となります。
Rancherと組み合わせれば全ての手順をUI上から完結できる様になるのでとても便利ですね。
LonghornとRancherはFOSS(Free and OSS)ですので無料でフルの機能を利用できます。是非是非個人でも業務でも使ってみてはいかがですか。(サポートが必要な場合は、SUSEが商用サポートをしています。)