1.7. 从本地机器公开服务网络上的服务
创建服务网络后,您可以从服务网络上的本地机器公开服务。
例如,如果您在数据中心的服务器上运行数据库,您可以在一个集群中部署一个前端,该数据库可以访问数据,就像数据库在集群中运行一样。
1.7.1. 向服务网络公开简单的本地服务 复制链接链接已复制到粘贴板!
本节介绍如何公开在服务网络中本地运行的单个服务。
先决条件
- 服务网络。只需要一个站点。
- 访问服务网络。
-
skrouterd用于默认服务类型网关
流程
- 在本地运行您的服务。
- 登录到集群并更改到您的站点的命名空间。
在服务网络中公开服务:
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 这表明只有一个公开的服务,该服务只公开一个端口(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 这表明只有一个公开的服务,该服务只公开一个端口(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. 创建网关并在不同的机器上应用它 复制链接链接已复制到粘贴板!
如果可以从一台机器访问集群,但希望从其他机器创建到服务网络的网关,您可以在第一个机器上创建网关定义捆绑包,稍后将该定义捆绑包应用到第二个机器上,如此过程中所述。例如,如果要将本地数据库服务公开给服务网络,但您不想从数据库服务器访问集群,您可以使用此流程创建定义捆绑包并将其应用到数据库服务器。
流程
- 从第一个机器登录到集群,并更改到您的站点的命名空间。
创建可在服务网络中进行通信的服务:
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 和证书来访问服务网络上的服务。
检查网关服务的状态:
检查 服务类型 gateway :
systemctl --user status <gateway-definition-name>
$ systemctl --user status <gateway-definition-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 podman 类型 gateway:
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 这表明只有一个公开的服务,该服务只公开一个端口(BIND)。没有端口转发到本地主机。
如果您需要更改网关定义,例如要更改端口,您需要删除现有网关,并从开始重复这个过程以重新定义网关。
1.7.4. 网关 YAML 参考 复制链接链接已复制到粘贴板!
第 1.7.3 节 “创建网关并在不同的机器上应用它” 描述如何创建网关以应用到使用网关定义 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。