1.6. 从命名空间公开服务网络上的服务
创建服务网络后,公开的服务就可以在该网络间进行通信。
skupper CLI 有两个选项用于公开命名空间中已存在的服务:
-
expose支持简单用例,例如,单一服务的部署。具体步骤请查看 第 1.6.1 节 “在服务网络上公开简单的服务”。 -
是更灵活的公开服务方法,例如,如果您有多个部署服务。具体步骤请查看 第 1.6.2 节 “在服务网络上公开复杂服务”。服务创建和服务绑定
1.6.1. 在服务网络上公开简单的服务 复制链接链接已复制到粘贴板!
这部分论述了如何为服务网络启用服务用于简单用例。
流程
在其中一个站点中创建部署、一些 pod 或服务,例如:
kubectl create deployment hello-world-backend --image quay.io/skupper/hello-world-backend
$ kubectl create deployment hello-world-backend --image quay.io/skupper/hello-world-backendCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此步骤不是特定于应用程序互连的,也就是说,此过程与集群的标准进程不同。
创建可在服务网络中进行通信的服务:
skupper expose [deployment <name>|pods <selector>|statefulset <statefulsetname>|service <name>]
$ skupper expose [deployment <name>|pods <selector>|statefulset <statefulsetname>|service <name>]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
-
<name> 是部署的名称 -
<selector> 是一个 pod 选择器 -
<statefulsetname> 是 statefulset 的名称
对于第 1 步中的示例部署,您可以使用以下命令创建服务:
skupper expose deployment/hello-world-backend --port 8080
$ skupper expose deployment/hello-world-backend --port 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令的选项包括:
-
--port <port-number> :: 指定该服务在服务网络上提供的端口号。注意:您可以通过重复这个选项来指定多个端口。 -
--target-port <port-number> :: 指定您要公开的 pod 的端口号。 -
--protocol <protocol> 允许您指定要使用的协议、tcp、http或http2
-
如果没有指定端口,skupper 将使用部署的 containerPort 值。
1.6.2. 在服务网络上公开复杂服务 复制链接链接已复制到粘贴板!
本节描述了如何为服务网络启用服务,以获取更复杂的用例。
流程
在其中一个站点中创建部署、一些 pod 或服务,例如:
kubectl create deployment hello-world-backend --image quay.io/skupper/hello-world-backend
$ kubectl create deployment hello-world-backend --image quay.io/skupper/hello-world-backendCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此步骤不是特定于应用程序互连的,也就是说,此过程与集群的标准进程不同。
创建可在服务网络中进行通信的服务:
skupper service create <name> <port>
$ skupper service create <name> <port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
-
<name> 是您要创建的服务的名称 -
<port> 是服务使用的端口
对于第 1 步中的示例部署,您可以使用以下命令创建服务:
skupper service create hello-world-backend 8080
$ skupper service create hello-world-backend 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将服务绑定到集群服务:
skupper service bind <service-name> <target-type> <target-name>
$ skupper service bind <service-name> <target-type> <target-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
-
<service-name> 是服务网络上的服务名称 -
<target-type> 是您要公开的对象、部署、有状态集、Pod或服务。 -
<target-name> 是集群服务的名称 -
--protocol <protocol> 允许您指定要使用的协议、tcp、http或http2
对于第 1 步中的示例部署,您可以使用以下命令绑定该服务:
skupper service bind hello-world-backend deployment hello-world-backend
$ skupper service bind hello-world-backend deployment hello-world-backendCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
1.6.3. 将不同命名空间中的服务公开给服务网络 复制链接链接已复制到粘贴板!
本节演示了如何从没有部署 Application Interconnect 的命名空间公开服务。
先决条件
- 部署了 Application Interconnect 的命名空间。
- 在不同命名空间中运行的服务。
允许命名空间间通信的网络策略
- 登录到集群并更改到您的站点的命名空间。
在服务网络中公开服务:
skupper expose service <service>.<namespace> --address <service>
$ skupper expose service <service>.<namespace> --address <service>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <service> - 服务网络上的服务名称。
- <namespace> - 要公开服务的命名空间的名称。
例如,如果您在
east命名空间中部署了 Application Interconnect,并在east-,您可以将上下文设置为backend命名空间中创建后端服务east命名空间,并使用以下方法将服务公开为服务网络上的后端:skupper expose service backend.east-backend --port 8080 --address backend
$ skupper expose service backend.east-backend --port 8080 --address backendCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您只能从其他命名空间中公开服务。如果要从另一个命名空间公开部署,请在尝试公开前从部署中创建服务。