この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

1.インフラストラクチャとプライベートレジストリの設定

このセクションでは、エアギャップ環境でRancher管理サーバーの基盤となるインフラストラクチャをプロビジョニングします。また、Rancherノードに利用可能なプライベートコンテナイメージレジストリを設定します。

エアギャップ環境とは、Rancherサーバーがオフラインまたはファイアウォールの背後にインストールされている環境です。

インフラストラクチャは、K3s Kubernetesクラスター、RKE Kubernetesクラスター、または単一のDockerコンテナにRancherをインストールするかどうかによって異なります。各インストールオプションの詳細については、このページを参照してください。

Rancherは、任意のKubernetesクラスターにインストールできます。以下のRKEおよびK3s Kubernetesインフラストラクチャのチュートリアルは、便利さのために引き続き含まれています。

  • K3s

  • RKE

高可用性のインストールのために、以下のインフラストラクチャを設定することをお勧めします:

  • 2つのLinuxノード(通常は仮想マシン)を、選択したインフラストラクチャプロバイダー内に用意します。

  • 外部データベース クラスターデータを保存するためのものです。PostgreSQL、MySQL、およびetcdがサポートされています。

  • *ロードバランサー*は、2つのノードにトラフィックを振り分けます。

  • *DNSレコード*は、URLをロードバランサーにマッピングします。これがRancherサーバーのURLとなり、ダウンストリームのKubernetesクラスターはこれにアクセスする必要があります。

  • *プライベートイメージレジストリ*を使用して、コンテナイメージをマシンに配布します。

1.Linuxノードのセットアップ

これらのホストはインターネットから切断されますが、プライベートレジストリに接続できる必要があります。

ノードがOS、コンテナランタイム、ハードウェア、ネットワーキングの一般的なインストール要件を満たしていることを確認してください。

Linuxノードを設定する一例については、Amazon EC2のインスタンスとしてノードを設定するためのこのチュートリアルを参照してください。

2.外部データストアを設定する

etcd以外のデータストアを用いてKubernetesを実行できる機能により、K3sは他のKubernetesディストリビューションと差別化されています。この機能はKubernetesオペレーターに柔軟性を提供します。利用可能なオプションにより、ご利用のユースケースに最適なデータストアを選択できます。

高可用性のK3sインストールには、以下の外部データベースのいずれかを設定する必要があります:

  • PostgreSQL(バージョン10.7および11.5に対して認証済み)

  • MySQL(バージョン5.7に対して認証済み)

  • etcd(バージョン3.3.15に対して認証済み)

Kubernetesをインストールする際には、K3sがデータベースに接続するための詳細を渡します。

データベースの設定方法の一例については、AmazonのRDSサービスでMySQLデータベースを設定するためのこのチュートリアルを参照してください。

K3sクラスターのデータストアを構成するために利用可能なオプションの完全なリストについては、 K3sドキュメントを参照してください。

3.ロードバランサーの設定

Rancherのレプリカにトラフィックを誘導するために、両方のノードにロードバランサーを設定する必要があります。これにより、単一のノードの障害がRancher管理サーバーへの通信を妨げることを防ぎます。

Kubernetesが後のステップで設定されると、K3sツールがTraefik Ingressコントローラーをデプロイします。このコントローラーは、ワーカーノードのポート80および443でリスンし、特定のホスト名宛てのトラフィックに応答します。

Rancherがインストールされると(これも後のステップで)、RancherシステムはIngressリソースを作成します。そのIngressは、Traefik IngressコントローラーにRancherのホスト名宛てのトラフィックをリスンするよう指示します。Traefik Ingressコントローラーは、Rancherのホスト名宛てのトラフィックを受信すると、そのトラフィックをクラスター内の実行中のRancherポッドに転送します。

実装において、レイヤー4またはレイヤー7のロードバランサーを使用するかどうかを検討してください:

  • *レイヤー4のロードバランサー*は、ノードにTCPトラフィックを転送するという点で、2つの選択肢の中でよりシンプルです。ロードバランサーをレイヤー4バランサーとして構成し、TCP/80およびTCP/443のポートにトラフィックをRancher管理クラスターのノードに転送することをお勧めします。クラスター内のIngressコントローラーは、HTTPトラフィックをHTTPSにリダイレクトし、ポートTCP/443でSSL/TLSを終了します。Ingressコントローラーは、Rancherデプロイメント内のIngressポッドにTCP/80のポートへのトラフィックを転送します。

  • *レイヤー7のロードバランサー*は少し複雑ですが、必要な機能を提供することができます。例えば、レイヤー7のロードバランサーは、RancherがTLS終了を行うのではなく、ロードバランサーでTLS終了を処理することができます。これは、インフラストラクチャ内でTLS終了を集中管理したい場合に有益です。レイヤー7のロードバランシングは、レイヤー4のロードバランサーが関与できないクッキーなどのHTTP属性に基づいて、ロードバランサーが意思決定を行う能力も提供します。レイヤー7のロードバランサーでSSL/TLSトラフィックを終了することを決定した場合、後のステップでRancherをインストールする際に`--set tls=external`オプションを使用する必要があります。詳細については、Rancher Helmチャートオプションを参照してください。

NGINXロードバランサーの設定方法を示す例については、このページを参照してください。

Amazon ELBネットワークロードバランサーのセットアップに関するハウツーガイドについては、このページを参照してください。

重要:

インストール後、Rancher以外のアプリケーションのロードバランシングにこのロードバランサー(すなわち、`local`クラスターのIngress)を使用しないでください。このIngressを他のアプリケーションと共有すると、他のアプリのIngress設定のリロード後にRancherに対してウェブソケットエラーが発生する可能性があります。`local`クラスターをRancher専用にし、他のアプリケーションには使用しないことをお勧めします。

4.DNSレコードを設定する

ロードバランサーを設定したら、このロードバランサーにトラフィックを送信するためのDNSレコードを作成する必要があります。

環境によっては、これはロードバランサーIPを指すAレコードであるか、ロードバランサーのホスト名を指すCNAMEである場合があります。いずれの場合でも、このレコードがRancherが応答することを意図しているホスト名であることを確認してください。

Rancherをインストールする際の後のステップでこのホスト名を指定する必要があり、後で変更することはできません。あなたの決定が最終的なものであることを確認してください。

Amazon ELBロードバランサーにドメイントラフィックをルーティングするためのDNSレコードの設定に関するハウツーガイドについては、 公式AWSドキュメントを参照してください。

5.プライベートイメージレジストリを設定する

Rancherはプライベートレジストリを使用したエアギャップインストールをサポートしています。独自のプライベートレジストリまたはコンテナイメージをマシンに配布するための他の手段を持っている必要があります。

後のステップで、K3s Kubernetesクラスターを設定する際に、このレジストリの詳細を含む プライベートレジストリ設定ファイルを作成します。

プライベートレジストリを作成する必要がある場合は、それぞれのランタイムのドキュメントページを参照してください。

高可用性のRKEクラスターにRancher管理サーバーをインストールするには、以下のインフラストラクチャを設定することをお勧めします:

  • 三つのLinuxノード、通常は仮想マシンで、AmazonのEC2、Google Compute Engine、またはvSphereなどのインフラストラクチャプロバイダーに配置されます。

  • ロードバランサー フロントエンドトラフィックを三つのノードに振り分けるため。

  • DNSレコード URLをロードバランサーにマッピングするため。これがRancherサーバーのURLとなり、ダウンストリームのKubernetesクラスターはこれにアクセスする必要があります。

  • プライベートイメージレジストリ コンテナイメージをマシンに配布するため。

これらのノードは同じリージョン/データセンター内に配置する必要があります。これらのサーバーは別々のアベイラビリティゾーンに配置することができます。

なぜ三つのノードなのか?

RKEクラスターでは、Rancherサーバーのデータはetcdに保存されます。このetcdデータベースは3つのノードすべてで実行されます。

etcdデータベースは、常にetcdクラスターの過半数でリーダーを選出できるように、奇数のノード数を必要とします。etcdデータベースがリーダーを選出できない場合、 スプリットブレインが発生し、クラスターをバックアップから復元する必要があります。三つのetcdノードのうち一つが故障した場合、残りの二つのノードはetcdノードの総数の過半数を持っているため、リーダーを選出できます。

1.Linuxノードのセットアップ

これらのホストはインターネットから切断されますが、プライベートレジストリに接続できる必要があります。

ノードがOS、コンテナランタイム、ハードウェア、ネットワーキングの一般的なインストール要件を満たしていることを確認してください。

Linuxノードを設定する一例については、Amazon EC2のインスタンスとしてノードを設定するためのこのチュートリアルを参照してください。

2.ロードバランサーの設定

Rancherのレプリカにトラフィックを誘導するために、両方のノードにロードバランサーを設定する必要があります。これにより、単一のノードの障害がRancher管理サーバーへの通信を妨げることを防ぎます。

Kubernetesが後のステップで設定されると、RKEツールがNGINX Ingressコントローラーをデプロイします。このコントローラーは、ワーカーノードのポート80および443でリスンし、特定のホスト名宛てのトラフィックに応答します。

Rancherがインストールされると(これも後のステップで)、RancherシステムはIngressリソースを作成します。そのIngressは、NGINX IngressコントローラーにRancherのホスト名宛てのトラフィックをリスンするよう指示します。NGINX Ingressコントローラーは、Rancherのホスト名宛てのトラフィックを受信すると、そのトラフィックをクラスター内の実行中のRancherポッドに転送します。

実装において、レイヤー4またはレイヤー7のロードバランサーを使用するかどうかを検討してください:

  • レイヤー4ロードバランサーは、2つの選択肢のうちよりシンプルで、ノードにTCPトラフィックを転送します。ロードバランサーをレイヤー4バランサーとして構成し、TCP/80およびTCP/443のポートにトラフィックをRancher管理クラスターのノードに転送することをお勧めします。クラスター内のIngressコントローラーは、HTTPトラフィックをHTTPSにリダイレクトし、ポートTCP/443でSSL/TLSを終了します。Ingressコントローラーは、Rancherデプロイメント内のIngressポッドにTCP/80のポートへのトラフィックを転送します。

  • レイヤー7ロードバランサーは少し複雑ですが、必要な機能を提供できます。例えば、レイヤー7のロードバランサーは、RancherがTLS終了を行うのではなく、ロードバランサーでTLS終了を処理することができます。これは、インフラストラクチャ内でTLS終了を集中管理したい場合に有益です。レイヤー7のロードバランシングは、レイヤー4のロードバランサーが関与できないクッキーなどのHTTP属性に基づいて、ロードバランサーが意思決定を行う能力も提供します。レイヤー7のロードバランサーでSSL/TLSトラフィックを終了することを決定した場合、後のステップでRancherをインストールする際に`--set tls=external`オプションを使用する必要があります。詳細については、Rancher Helmチャートオプションを参照してください。

NGINXロードバランサーの設定方法を示す例については、このページを参照してください。

Amazon ELBネットワークロードバランサーの設定に関するハウツーガイドについては、このページを参照してください。

インストール後、Rancher以外のアプリケーションのロードバランシングにこのロードバランサー(すなわち、`local`クラスターのIngress)を使用しないでください。このIngressを他のアプリケーションと共有すると、他のアプリのIngress設定のリロード後にRancherに対してウェブソケットエラーが発生する可能性があります。`local`クラスターをRancher専用にし、他のアプリケーションには使用しないことをお勧めします。

3.DNSレコードを設定する

ロードバランサーを設定したら、このロードバランサーにトラフィックを送信するためのDNSレコードを作成する必要があります。

環境によっては、LB IPを指すAレコードであるか、ロードバランサーのホスト名を指すCNAMEである場合があります。いずれの場合でも、このレコードがRancherが応答することを意図しているホスト名であることを確認してください。

Rancherをインストールする際の後のステップでこのホスト名を指定する必要があり、後で変更することはできません。あなたの決定が最終的なものであることを確認してください。

Amazon ELBロードバランサーにドメイントラフィックをルーティングするためのDNSレコードの設定に関するハウツーガイドについては、 公式AWSドキュメントを参照してください。

4.プライベートイメージレジストリを設定する

Rancherは、安全なプライベートレジストリを使用したエアギャップインストールをサポートしています。独自のプライベートレジストリまたはコンテナイメージをマシンに配布するための他の手段を持っている必要があります。

後のステップで、RKE Kubernetesクラスターを設定する際に、このレジストリの詳細を含む プライベートレジストリ設定ファイルを作成します。

プライベートレジストリを作成する必要がある場合は、それぞれのランタイムのドキュメントページを参照してください。