1.7. ローカルマシンからのサービスネットワーク上のサービスの公開
サービスネットワークの作成後、サービスネットワーク上のローカルマシンからサービスを公開することができます。
たとえば、データセンターのサーバーでデータベースを実行する場合は、データベースがクラスターで実行しているかのようにデータにアクセスできるクラスターにフロントエンドをデプロイすることができます。
1.7.1. サービスネットワークにシンプルなローカルサービスの公開 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、サービスネットワーク上でローカルで実行している単一のサービスを公開する方法を説明します。
前提条件
- サービスネットワーク。必要なサイトは 1 つだけです。
- サービスネットワークへのアクセス。
-
デフォルトの
serviceタイプのゲートウェイのためのskrouterd
手順
- サービスをローカルに実行します。
- クラスターにログインし、実際のサイトの namespace に移動します。
サービスネットワーク上でサービスを公開します。
skupper gateway expose <service> localhost <port>
$ skupper gateway expose <service> localhost <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <service> - サービスネットワーク上のサービスの名前。
- <port> - サービスをローカルで実行するポート。
注記たとえば、MySQL が専用サーバー (IP アドレス
192.168.1.200) で実行しているが、同じネットワーク内のマシンからクラスターにアクセスしている場合など、ローカルネットワーク上の他のマシンからサービスを公開することもできます。skupper gateway expose mysql 192.168.1.200 3306
$ skupper gateway expose mysql 192.168.1.200 3306Copy to Clipboard Copied! Toggle word wrap Toggle overflow Skupper ゲートウェイのステータスを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、公開されるサービスが 1 つだけあり、サービスは単一のポート (BIND) のみを公開することを示しています。ローカルホストへ転送されるポートはありません。
URL フィールドは基礎となる通信を示し、無視できます。
1.7.2. サービスネットワーク上で複雑なローカルサービスの使用 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、skupper ゲートウェイの高度な使用方法を説明します。
Skupper ゲートウェイを作成します。
skupper gateway init --type <gateway-type>
$ skupper gateway init --type <gateway-type>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトのサービスタイプのゲートウェイでは、
skrouterdが実行されている必要があります。デフォルトでは、サービス タイプのゲートウェイが作成されますが、以下を指定することも可能です。
-
podman -
docker
-
サービスネットワーク上で通信可能なサービスを作成します。
skupper service create <name> <port>
$ skupper service create <name> <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
<name>- 作成するサービスの名前。 -
<port>- サービスが使用するポート。
以下に例を示します。
skupper service create mydb 3306
$ skupper service create mydb 3306Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
サービスネットワーク上のサービスをバインドします。
skupper gateway bind <service> <host> <port>
$ skupper gateway bind <service> <host> <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<service> - サービスネットワーク上のサービス名 (上記の例では
mydb)。 - <host> - サービスを実行するホスト。
-
<port> - サービスが実行中のポート。上記の例の
3306。
-
<service> - サービスネットワーク上のサービス名 (上記の例では
Skupper ゲートウェイのステータスを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、公開されるサービスが 1 つだけあり、サービスは単一のポート (BIND) のみを公開することを示しています。ローカルホストへ転送されるポートはありません。
URL フィールドは基礎となる通信を示し、無視できます。
サービスネットワークに追加のサービスを作成し、さらにローカルサービスをバインドして、これらのサービスをサービスネットワーク上で公開することができます。
サービスネットワークからローカルマシンにサービスを転送します。
skupper gateway forward <service> <port>
$ skupper gateway forward <service> <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
<service>は、サービスネットワーク上の既存サービスの名前です。 -
<port>は、使用するローカルマシンのポートです。
-
1.7.3. ゲートウェイを作成し、別のマシンでそれを適用する リンクのコピーリンクがクリップボードにコピーされました!
1 台のマシンからクラスターにアクセスできるが、別のマシンからサービスネットワークへのゲートウェイを作成したい場合は、この手順で説明するように、最初のマシンでゲートウェイ定義バンドルを作成し、後でその定義バンドルを 2 台目のマシンに適用することができます。たとえば、ローカルのデータベースサービスをサービスネットワークに公開しても、データベースサーバーからクラスターにアクセスしたくない場合は、この手順を使用して定義バンドルを作成し、データベースサーバーに適用することができます。
手順
- 1 台目のマシンからクラスターにログインし、サイトの namespace に変更します。
サービスネットワーク上で通信可能なサービスを作成します。
skupper service create <name> <port>
$ skupper service create <name> <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
<name>- 作成するサービスの名前。 -
<port>- サービスが使用するポート。
以下に例を示します。
skupper service create database 5432
$ skupper service create database 5432Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
公開するサービスを表す YAML ファイルを作成します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ゲートウェイの名前を使用して、YAML ファイルを保存します (例:
gateway.yaml)。 サービスネットワーク上で公開するサービスをホストするマシンに適用できるバンドルを生成します。
skupper gateway generate-bundle <config-filename> <destination-directory>
$ skupper gateway generate-bundle <config-filename> <destination-directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
- <config-filename> - 前のステップで生成した YAML ファイルの名前 (接尾辞を含む)。
-
<destination-directory> - 結果のゲートウェイバンドルを保存する場所 (例:
~/gateways)。
以下に例を示します。
skupper gateway generate-bundle database.yaml ./
$ skupper gateway generate-bundle database.yaml ./Copy to Clipboard Copied! Toggle word wrap Toggle overflow このバンドルには、サービスネットワークへのアクセスを許可するゲートウェイ定義の YAML と証明書が含まれています。
-
ゲートウェイ定義ファイル (
mylaptop-jdoe.tar.gzなど) を、サービスネットワーク上で公開するサービスをホストするマシンにコピーします。 公開したいサービスをホストしているマシンから、以下を実行します。
mkdir gateway tar -xvf <gateway-definition-file> --directory gateway cd gateway sh ./launch.py
$ mkdir gateway $ tar -xvf <gateway-definition-file> --directory gateway $ cd gateway $ sh ./launch.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記./launch.py -t podmanまたは./launch.py -t dockerを使用して、コンテナーで Skupper ルーターを実行します。ゲートウェイバンドルを実行すると、ゲートウェイ定義 YAML と証明書を使用して、サービスネットワーク上のサービスにアクセスして公開します。
ゲートウェイサービスのステータスを確認します。
サービス タイプのゲートウェイを確認するには、以下を実行します。
systemctl --user status <gateway-definition-name>
$ systemctl --user status <gateway-definition-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow podman タイプのゲートウェイを確認するには、以下を実行します。
podman inspect
$ podman inspectCopy to Clipboard Copied! Toggle word wrap Toggle overflow docker タイプのゲートウェイを確認するには、以下を実行します。
docker inspect
$ docker inspectCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記後で
./remove.pyを使用してゲートウェイを削除できます。クラスターにアクセスできるマシンから、Skupper ゲートウェイのステータスを確認します。
skupper gateway status Gateway Definition: ╰─ machine-user type:service version:2.2.1.redhat.1.1.0-2 ╰─ Bindings: ╰─ mydb:3306 tcp mydb:3306 localhost 3306$ skupper gateway status Gateway Definition: ╰─ machine-user type:service version:2.2.1.redhat.1.1.0-2 ╰─ Bindings: ╰─ mydb:3306 tcp mydb:3306 localhost 3306Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、公開されるサービスが 1 つだけあり、サービスは単一のポート (BIND) のみを公開することを示しています。ローカルホストへ転送されるポートはありません。
ポートの変更など、ゲートウェイの定義を変更する必要がある場合は、既存のゲートウェイを削除し、この手順を最初から繰り返してゲートウェイを再定義する必要があります。
1.7.4. ゲートウェイ YAML リファレンス リンクのコピーリンクがクリップボードにコピーされました!
「ゲートウェイを作成し、別のマシンでそれを適用する」 では、ゲートウェイ定義 YAML ファイルを使用して、別のマシンで適用するゲートウェイを作成する方法を説明します。
以下は、ゲートウェイ定義 YAML ファイルの有効なエントリーです。
- name
- ゲートウェイの名前。
- bindings.name
- 単一ホストのバインディングの名前。
- bindings.host
- ローカルサービスのホスト名。
- bindings.service
- サービスネットワークで利用できるようにしたいサービスの定義。
- bindings.service.address
- サービスネットワーク上のアドレス、名前、ポート。
- bindings.service.protocol
-
Skupper プロトコル、
tcp、httpまたはhttp2。 - bindings.service.ports
- サービスネットワーク上で利用可能になる単一のポート。
- bindings.service.target_ports
- サービスネットワーク上で公開したい単一のポート。
ローカルサービスで複数のポートが必要な場合は、ポートごとに個別のバインディングを作成します。
- forwards.name
- 単一ホストの転送の名前。
- forwards.host
- ローカルサービスのホスト名。
- forwards.service
- ローカルで利用できるようにしたいサービスの定義。
- forwards.service.address
- ローカルで使用したいサービスネットワーク上のアドレス、名前、ポート。
- forwards.service.protocol
-
Skupper プロトコル、
tcp、httpまたはhttp2。 - forwards.service.ports
- サービスネットワークで利用可能な単一のポート。
- forwards.service.target_ports
- ローカルで使用したい単一のポート。
ネットワークサービスに複数のポートが必要な場合は、ポートごとに個別の転送を作成します。
- qdr-listeners
- skupper ルーターのリスナーの定義。
- qdr-listeners.name
-
skupper ルーターの名前 (通常は
amqp)。 - qdr-listeners.host
-
skupper ルーターのホスト名 (通常は
localhost)。 - qdr-listeners.port
-
skupper ルーターのポート (通常は
5672)。