高可用性クラスタの設定方法¶
ランチャークラスタを使用してShieldシステムをセットアップするには、高可用性を実現するために、以下の手順に従ってください。
ノードの準備¶
HAクラスタに必要なノード数は、以下のノードを追加したShieldサーバの数(必要な展開ごとに)です。
- 管理者ワークステーション用の 1 ノード
- Rancher クラスタへのゲートウェイとして機能する負荷分散プロキシ用の 2 ノード。
参考
LBノードを追加して使用することもできますが,HAでは2つのLBノードが最小となります.
<Total#ofNodes> = <#ofShieldServers> + <2LBServers> + <1AdminWS>
例えば、RancherHAを使用した5ノード(マネージャー3名、ブラウザファーム2名)のShieldシステムでは、8ノードが必要になります。
参考
推奨される展開については、Shieldアーキテクチャ のページを参照してください。
管理者ワークステーションの設定¶
WS に ssh-keygen と ssh-copy-id プログラムがあることを確認してください。
Shield リポジトリを WS に複製します。
git clone --branch Rel-20.03 --single-branch https://github.com/EricomSoftwareLtd/Shield.git && cd Shield/Kube/scripts/RKE
最新の安定版である Kubectl をインストールします (こちら を参照してください)。
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl kubectl version –client
結果は以下の通りです。
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:58:59Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}
helm2の最新の安定版をインストールします。(APP_VERSION=v2.16.5)。
curl -fsSL https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get -o /tmp/get_helm.sh chmod +x /tmp/get_helm.sh sudo /tmp/get_helm.sh -v "$APP_VERSION" rm -f /tmp/get_helm.sh
RKE をインストールします。
wget https://github.com/rancher/rke/releases/download/v1.0.6/rke_linux-amd64 chmod +x rke_linux_amd64
すべてのノードにDockerをインストールします(seld-prepare-serversを使用)。
cd ../ curl -s -L -o shield-prepare-servers https://github.com/EricomSoftwareLtd/Shield/releases/download/shield-prepare-servers-Rel-20.03/shield-prepare-servers chmod +x shield-prepare-servers ./shield-prepare-servers [-u <USER>] <SERVERIPADDRESSES>
<USER>をすべてのノードにマッチするユーザに置き換えてください。<SERVERIPADDRESSES>をシステム内の全てのノードのIPアドレスのリストで置き換えます。
すべてのノードがWSから<USER>アカウントでSSH公開鍵を使ってアクセスできることを確認します。以下を実行して鍵ペアを生成し、公開鍵を全ノードに配布します (各ノードごとに個別に行う必要があります)。詳細は、こちら を参照してください。
ssh-keygen ssh-copy-id <IPADDRESSNODE1> ssh-copy-id <IPADDRESSNODE2> ssh-copy-id <IPADDRESSNODE3> . . .
キーペアが default パスに配置されていない場合は、
rancher-cluster.yml
の中にpathパラメータを次のように追加します。ssh_key_path: <path>/id_rsa
DNS¶
LBノードを指すFQDNレコードをDNSサーバーに作成します。システム内のすべてのLBノードを指す単一のレコード。`共通`ファイルを編集する - RANCHER_LB_HOSTNAMEをFQDNレコードに設定します。
証明書¶
**既存**の認証局の証明書(または証明書のチェーン)を使うには、~/Shield/Kube/scripts
に移動して、cacerts.pem
として保存してください。
さらに、FQDNレコードのサーバ証明書を 生成 し、それに対応する秘密鍵と一緒に同じディレクトリに、それぞれ cert.crt
と cert.key
という名前で保存します。
既存の CA 証明書が ない 場合は、Rancher クラスタで使用するための 新しい CA 証明書と 新しい サーバー証明書(それぞれに一致するキーを含む)を作成し、以下のように実行します。
cd RKE/
./generate_ca.sh (creates a new CA certificate & key)
./generate_cert.sh (creates a new server certificate & key)
設定ファイル¶
システム全体の設定は rancher-cluster.yml
ファイルで定義されています。このファイルは、システム構成を含むように編集され、後で展開するために使用されます。
LBノードには system-role/ingress-rancher: accept
ラベルが付けられています。各LBノードの関連セクションをコピーします。例えば、2つのノードの場合は、以下のようにします。
ユーザーを更新します。<USER> - 上記のユーザーを使用してください。
Shield Manager ノードにはロール``[controlplane,worker,etcd]``が設定されています。Worker ノードにはロール``[worker]``が設定されています。
システム内のすべてのShieldノードへの参照を含むようにファイルを修正します。各ノードのラベル/Shieldロール(管理、プロキシ、elk、ファームサービス、リモートブラウザなど)を、Shieldの展開に合わせて一致させます。例えば、以下のようになります。
kubernetes_version
を v1.17.4-rancher1-2 に変更します。
複数のネットワークインターフェースカードを持つサーバを利用する場合は、ローカルネットワークでの通信に使用した インターフェース名 をflannel_iface(network/options)で指定する必要があります。
変更を保存します。
Rancherの展開¶
Rancherクラスタを構築して展開します。実行::
./0_rke_up.sh
./1_install_tiller.sh
./2_deploy_rancher.sh
致命的なエラーがないことを確認し、Rancherが正常に展開されるのを待ちます。
参考
'Error from server (NotFound): secrets "tls-ca" not found' など、特定のエラーが表示されることがあります。これらは無視されることがあります。
Rancher UI を開く - ブラウザの https://<RANCHER_LB_HOSTNAME>:8443
にアクセスします。指示に従ってください (例: パスワードの設定)。Rancher がエラーなく動作すること、local
クラスタがインポートされ、エラーなく機能することを確認してください(準備が整うまでに時間がかかるかもしれません)。
設定ファイルを .kube
以下の適切な場所にコピーしてください。
cp kube_config_rancher-cluster.yml ~/.kube/config
Shieldの展開¶
通常のShieldインストール手順に進み、実行します:
./add-shield-repo.sh -p <password>
./deploy-shield.sh
Rancher で、名前空間を Default
プロジェクトの下に移動します。
Rancher HAでShieldをインストールするようになりました。
既存クラスタの更新¶
実行中のクラスタを更新するには(例えば、新しい Rancher のバージョンがリリースされたり、Shieldシステムにノードを追加する必要がある場合など)、必要に応じて rancher-cluster.yml
を修正し、保存してから実行してください。
./0_rke_up.sh
これで新しい設定が適用され、クラスタが更新されました。