haku-maiのブログ

インフラエンジニアですが、アプリも作ります。

【rancher:2.6.1/docker】dockerを使用して単一ノードにRancherをインストールする(自己証明書とデータの永続化とバックアップ)

本記事で行うこと

  • dockerを使用して単一ノードにRancherをインストールする
  • 自己証明書を使って、Rancherをインストールする
  • rancherのデータの永続化を行う
  • rancherのデータのバックアップとリストアを行い

本記事で行わないこと

  • 自己証明書の発行 ※以下記事で実施しています。

【OpenSSL(LibreSSL)】OpenSSL(LibreSSL)を利用して自己証明書の作成(pem形式) - haku-maiのブログ

モチベーション

  • k3s上にhelmでrancherをdeployし使っていたが、自宅サーバが増えたので、別serverに分離したかった。
  • rancher2.6が出たので、使ってみたかった。

環境

  • HW GMKTEC NucBox 以下参考です。

n-guitar.hatenablog.com

$ cat /etc/os-release |grep VERSION
VERSION="20.04.3 LTS (Focal Fossa)"
VERSION_ID="20.04"
VERSION_CODENAME=focal

参考サイト

  • 公式マニュアル

rancher.com

  • 自己証明書を利用してインストール

Rancher Docs: Installing Rancher on a Single Node Using Docker

  • データの永続化

Rancher Docs: Advanced Options for Docker Installs

dockerでrancherを起動、自己証明書、データの永続化

  • 以下のように実行するだけです。

  • 各証明書は適当なディレクトリに配置し、/etc/rancher/ssl/にbindさせてください。

  • また中間証明書がない場合は、cert.pemcacert.pemは同じで大丈夫です。
  • データの永続化をする場合はcontainerの/var/lib/rancherをホストOS側にbindすればOKです。
docker run -d --restart=unless-stopped \
  --name rancher-hkm \
  --hostname rancher-hkm \
  -p 80:80 -p 443:443 \
  -v /var/lib/cert_directory/rancher.hkm.home/cert.pem:/etc/rancher/ssl/cert.pem \
  -v /var/lib/cert_directory/rancher.hkm.home/key.pem:/etc/rancher/ssl/key.pem \
  -v /var/lib/cert_directory/rancher.hkm.home/cert.pem:/etc/rancher/ssl/cacerts.pem \
  -v /var/lib/rancher:/var/lib/rancher \
  --privileged \
  rancher/rancher:v2.6.1

webアクセス

f:id:n-guitar:20211013184355p:plain:w600

  • 以下のように作成した自己証明書をmacにインストールすればでなくなります。

f:id:n-guitar:20211013184440p:plain:w600 f:id:n-guitar:20211013184459p:plain:w600

  • 初回ログイン時は、以下のように初期パスワードを必要とします。
  • 画面に従って、logから抽出しログインします。

f:id:n-guitar:20211013184536p:plain:w600

$ docker logs rancher-hkm 2>&1 | grep "Bootstrap Password:"
2021/10/13 09:33:13 [INFO] Bootstrap Password: XXXXXXX
  • その後、以下のようにパスワードを設定することで、次回からid:admin、PASSWORD:設定したパスワードでログインできるようになります。 f:id:n-guitar:20211013184640p:plain:w600

  • ログイン画面になります。

f:id:n-guitar:20211017121650p:plain:w600

バックアップとリストア

  • バックアップを行うには、rancherを停止して、/var/lib/rancherを保存していけば問題ありません。

バックアップのテスト用のdeployment作成

  • リストアできるか試したいため、簡易的に画面からdeploymentを作成します。

  • 左上のハンバーガーメニューから、EXPLORE CLUSTERのlocalを選択

f:id:n-guitar:20211017133935p:plain:w600

  • Workload -> Deploymentsの画面から、右上のCreateを選択

f:id:n-guitar:20211017134044p:plain:w600

  • NameとContainer Inageだけ設定してCreateします。

f:id:n-guitar:20211017134218p:plain:w600

  • backupでフィルターすると以下の状態です。

f:id:n-guitar:20211017134316p:plain:w600

rancherの停止とバックアップ

  • rancherを停止し、/var/lib/rancherのバックアップをします
rancherの停止
  • 以下のコマンドでdocker Containerを停止します。
$ docker ps --filter name=rancher-hkm
CONTAINER ID   IMAGE                    COMMAND           CREATED       STATUS       PORTS                                                                      NAMES
05f3a1f54ae7   rancher/rancher:v2.6.1   "entrypoint.sh"   2 hours ago   Up 2 hours   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   rancher-hkm

$ docker stop rancher-hkm
rancher-hkm

$ docker ps --filter name=rancher-hkm
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

$ docker ps -a --filter name=rancher-hkm
CONTAINER ID   IMAGE                    COMMAND           CREATED       STATUS                     PORTS     NAMES
05f3a1f54ae7   rancher/rancher:v2.6.1   "entrypoint.sh"   2 hours ago   Exited (1) 6 seconds ago             rancher-hkm
/var/lib/rancherのバックアップ
  • tarで/var/lib/rancherを別ディレクトリに固めます。

  • 初期状態

$ ls -l /var/lib/rancher/
合計 1464
drwxr-xr-x 5 root root    4096 10月 17 01:21 k3s
-rw-r--r-- 1 root root 1486050 10月 17 13:48 k3s.log
drwx------ 6 root root    4096 10月 17 01:28 management-state
  • 他のストレージにバックアップすべきですが簡易的にバックアップ用のディレクト/var/lib/rancher_backupを作成します。
  • /var/lib/rancher_backupにバックアップファイルを格納します
$ sudo mkdir /var/lib/rancher_backup
$ ls -l /var/lib/rancher_backup
合計 0
$ sudo tar -C /var/lib/rancher -pzcvf /var/lib/rancher_backup/rancher_backup_$(date +%Y%m%d%H%M%S).tar.gz ./

$ ls -lh /var/lib/rancher_backup
合計 426M
-rw-r--r-- 1 root root 426M 10月 17 14:37 rancher_backup_20211017143633.tar.gz

/var/lib/rancherの削除とリストア

/var/lib/rancherの削除
  • 少し怖いですがバックアップをとったので/var/lib/rancherを綺麗サッパリ削除します。
$ ls -l /var/lib/rancher
合計 1464
drwxr-xr-x 5 root root    4096 10月 17 01:21 k3s
-rw-r--r-- 1 root root 1486050 10月 17 13:48 k3s.log
drwx------ 6 root root    4096 10月 17 01:28 management-state

$ sudo rm -rf /var/lib/rancher/*
$ ls -l /var/lib/rancher
合計 0
/var/lib/rancherのリストア
  • 取得したバックアップファイルを/var/lib/rancherに戻します。
$ ls -lh /var/lib/rancher_backup
合計 426M
-rw-r--r-- 1 root root 426M 10月 17 14:28 rancher_backup_20211017143633.tar.gz


$ sudo tar -pzxvf /var/lib/rancher_backup/rancher_backup_20211017143633.tar.gz -C /var/lib/rancher

$ ls -l /var/lib/rancher
合計 1460
drwxr-xr-x 5 root root    4096 10月 17 01:21 k3s
-rw-r--r-- 1 root root 1486050 10月 17 13:48 k3s.log
drwx------ 6 root root    4096 10月 17 01:28 management-state

rancherの起動と確認

  • 以下のコマンドでdocker Containerを起動します。
$ docker start rancher-hkm
rancher-hkm

$ docker ps --filter name=rancher-hkm
CONTAINER ID   IMAGE                    COMMAND           CREATED       STATUS          PORTS                                                                      NAMES
05f3a1f54ae7   rancher/rancher:v2.6.1   "entrypoint.sh"   3 hours ago   Up 16 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   rancher-hkm
  • 起動したら画面から先程、確認用に用意したdeploymentを確認します。
  • 問題なくバックアップできていますね!

f:id:n-guitar:20211017144203p:plain:w600

  • 以上、dockerを使用して単一ノードにRancherをインストールする(自己証明書とデータの永続化とバックアップ)でした。