閉域環境(air gap)でRancerセットアップ


閉域環境(air gap)でRancerセットアップするメモ

参考:
https://rancher.com/docs/rancher/v2.x/en/installation/air-gap/

前提条件

・Rancher v2.3.0
・EC2(amazon linux2) m5.xlarge x 3 in VPC
 ※EC2のSGは同一でSELF INBOUND/OUTBOUND ALL

閉域環境に以下があること
・Private Docker Registry
・gitリポジトリ

rancherが必要なすべてのdockerイメージは、閉域環境からアクセス可能なdocker registryにpushしておく必要がある。
また、loggingやmonitoringなどのシステム機能は、HELMのsystem-chartsを、閉域環境からアクセス可能なリポジトリ(gitなど)にpushしておく必要がある。

※Private Docker RegistryとHELM chart用のgitリポジトリ(gitlabやgitbucketなど)のサーバ設定方法は割愛

1. 事前準備

[1] ホスト編

Rancher及びkubernetesを起動するnode(ホストサーバ)には、以下セットアップを実施

・dockerインストール
・private docker registryからpullできる設定(CERTSやDNSなど含む)

逆に言えば、これだけで良い。

[2] Private Docker Registry

外部インターネット接続可能な環境で、閉域でのrancher起動に必要なイメージをすべてpullする。
公式の一括DLスクリプトが提供されているので、それを用いる

#イメージの一括DLスクリプト
wget https://github.com/rancher/rancher/releases/download/v2.3.0/rancher-save-images.sh

#収集リスト
wget https://github.com/rancher/rancher/releases/download/v2.3.0/rancher-images.txt

#収集実行
sh rancher-save-images.sh

実行すると rancher-images.tar.gz が作成される(3.5 GB)ので
それを閉域環境へ持ち込む。

なお、持ち込んだtar.gzをprivate docker registryに一括pushするスクリプトもあるので、こっちも事前にDLしておき、閉域環境へ持ち込む。

wget https://github.com/rancher/rancher/releases/download/v2.3.0/rancher-load-images.sh

閉域環境へ持ち込んだら、private docker registryを指定して実行すると、一括pushできる。


sh rancher-load-images.sh --registry <private docker registry>:<port>

[3] git : HELM system-charts

外部インターネット接続可能な環境で、閉域でのrancher起動に必要なCHARTをすべてpullする。

git clone -b release-v2.3 https://github.com/rancher/system-charts.git

※Rancherバージョンとbranchの対応が異なると、正常に動作しない場合あり。

pullしたものを一式private git repository(gitlabやgitbucketなど)にpushする。

2. Rancher Server起動

Rancherサーバの構築方法は
・HA Install
・Single Node Install
の2種類ある。

HA Installはその名の通り可用性の高い構成で、Rancherサーバ自体をk8sで構築する。k8s管理ツールをk8sで立てると言う、ややカオスな構成。
k8s構築にはRKEと言うクラスタ構築ツールもある。

ここではSingle Node Installについて述べる。

Rancher Server(Single Node Install)の実行は以下

docker run -d --restart=unless-stopped 
-p 80:80 -p 443:443 
-e CATTLE_SYSTEM_DEFAULT_REGISTRY=<private docker registry>:<port>  
-e CATTLE_SYSTEM_CATALOG=bundled 
rancher/rancher:v2.3.0

Rancher ServerのSSLの設定をどうするかでオプションが異なるが、
上記は「SELF-SIGNED CERTIFICATE」の例。
オレオレ証明じゃない設定も可能。

正常にrunできればブラウザからrancher serverにアクセスできる

3. k8sクラスタ作成

Rancherコンソールの Add Cluserから作成可能。

詳細は以下と重複なので割愛。
https://qiita.com/suzukihi724/items/00b167c6f5f2ddeca718

4. System Chartsの設定

Prometheus + Grafana連携のモニタリング機能を有効化するため、HELMのプライベートリポジトリの設定を追加する。

Global > Tools > Catalogsにて、system-libraryをcloneして、独自に構築しかつsystem-chartsをpush済みのprivate git リポジトリを指定する。

5. Monitoringを有効化

Global > Tools > Monitoringにて、モニタリングをenableにすると、prometheus + grafanaのリッチなモニタリングが有効化される。