3.3. 创建网关并在不同的机器上应用它
如果可以从一台机器访问集群,但希望从其他机器创建到服务网络的网关,您可以在第一个机器上创建网关定义捆绑包,稍后将该定义捆绑包应用到第二个机器上,如此过程中所述。例如,如果要将本地数据库服务公开给服务网络,但您不想从数据库服务器访问集群,您可以使用此流程创建定义捆绑包并将其应用到数据库服务器。
流程
- 从第一个机器登录到集群,并更改到您的站点的命名空间。
创建可在服务网络中进行通信的服务:
$ skupper service create <name> <port>
其中
-
<name>
是您要创建的服务的名称 -
<port>
是服务使用的端口
例如:
$ skupper service create database 5432
-
创建一个 YAML 文件来代表您要公开的服务,例如:
name: database 1 bindings: - name: database 2 host: localhost 3 service: address: database:5432 4 protocol: tcp 5 ports: - 5432 6 target_ports: - 5432 7 qdr-listeners: - name: amqp host: localhost port: 5672
-
使用网关名称保存 YAML 文件,如
gateway.yaml
。 生成可应用于托管要在服务网络上公开服务的机器的捆绑包:
$ skupper gateway generate-bundle <config-filename> <destination-directory>
其中:
- <config-filename> - YAML 文件的名称,包括您在上一步中生成的后缀。
-
<destination-directory> - 要保存生成的网关捆绑包的位置,如
~/gateways
。
例如:
$ skupper gateway generate-bundle database.yaml ./
此捆绑包包含网关定义 YAML 和允许访问服务网络的证书。
-
将网关定义文件(如
mylaptop-jdoe.tar.gz
)复制到托管要在服务网络上公开的服务的机器。 从托管您要公开的服务的机器中:
$ mkdir gateway $ tar -xvf <gateway-definition-file> --directory gateway $ cd gateway $ sh ./launch.py
注意使用
./launch.py -t podman
或./launch.py -t docker
来在容器中运行 Skupper 路由器。运行网关捆绑包使用网关定义 YAML 和证书来访问服务网络上的服务。
检查网关服务的状态:
检查 service 类型网关:
$ systemctl --user status <gateway-definition-name>
检查 podman 类型网关:
$ podman inspect
检查 docker 类型网关:
$ docker inspect
注意之后,您可以使用
./remove.py
删除网关。在具有集群访问权限的机器中,检查 Skupper 网关的状态:
$ skupper gateway status Gateway Definition: ╰─ machine-user type:service version:1.5 ╰─ Bindings: ╰─ mydb:3306 tcp mydb:3306 localhost 3306
这表明只有一个公开的服务,该服务只公开一个端口 (BIND)。没有端口转发到本地主机。
如果您需要更改网关定义,例如要更改端口,您需要删除现有网关,并从开始重复这个过程以重新定义网关。