blob: d07b8024e0e9567f6ea82c0ae6979e714d5c4c0f [file] [log] [blame]
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – 使用 Pixiu 网关接入 Ingress 流量</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/</link><description>Recent content in 使用 Pixiu 网关接入 Ingress 流量 on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: 接入 Ingress 流量</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/http_triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/http_triple/</guid><description>
&lt;h2 id="1-准备工作">1. 准备工作&lt;/h2>
&lt;ul>
&lt;li>kubectl&lt;/li>
&lt;li>一个 k8s 集群,配置好 kubeconfig&lt;/li>
&lt;/ul>
&lt;h2 id="2-使用-http-协议通过网关调用-triple-应用">2. 使用 HTTP 协议通过网关调用 Triple 应用&lt;/h2>
&lt;p>Dubbo-go-pixiu 网关支持调用 GO/Java 的 Dubbo 集群。在 Dubbo-go 3.0 的场景下,我们可以通过 Pixiu 网关,在集群外以 HTTP 协议请求 pixiu 网关,在网关层进行协议转换,进一步调用集群内的Dubbo-go 服务。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/docs3-v2/golang-sdk/tasks/pixiu/http_triple/triple-pixiu.png" alt="image.png">&lt;/p>
&lt;p>用户调用 Dubbo-go 服务的 path 为http://$(app_name)/$(service_name)/$(method)。&lt;/p>
&lt;p>例如一个proto文件内有如下定义:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-protobuf" data-lang="protobuf">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> org&lt;span style="color:#719e07">.&lt;/span>apache.dubbo.quickstart.samples;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">service&lt;/span> UserProvider {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">rpc&lt;/span> SayHello (HelloRequest) &lt;span style="color:#719e07">returns&lt;/span> (User) {}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">HelloRequest&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> name &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>并在dubbo-go 服务启动时在dubbogo.yml 内配置应用名为my-dubbogo-app:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">application&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">name&lt;/span>: my-dubbogo-app
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>pixiu 网关即可解析 path 为 my-dubbogo-app/org.apache.dubbo.quickstart.samples.UserProvider/SayHello 的路由,并转发至对应服务。来自外部HTTP 请求的 body 为 json 序列化的请求参数,例如 {&amp;ldquo;name&amp;rdquo;:&amp;ldquo;test&amp;rdquo;}。&lt;/p>
&lt;p>我们目前推荐使用 Nacos 作为注册中心。&lt;/p>
&lt;p>用户可以在自己的集群里部署我们的demo,集群最好拥有暴露 lb 类型 service 的能力,从而可以在公网访问至集群内的服务,您也可以直接集群内进行请求。&lt;/p>
&lt;p>针对您的集群,执行:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ kubectl apply -f https://raw.githubusercontent.com/dubbogo/triple-pixiu-demo/master/deploy/pixiu-triple-demo.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>会在 dubbogo-triple-nacos 命名空间下创建如下资源,包含三个 triple-server,一个pixiu网关,一个 nacos server。并通过 Servcie 将服务暴露至公网。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>namespace/dubbogo-triple-nacos created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>service/dubbo-go-nacos created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deployment.apps/dubbogo-nacos-deployment created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deployment.apps/pixiu created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deployment.apps/server created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>service/pixiu created
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>获取 pixiu 公网 ip 并进行调用&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>$ kubectl get svc -n dubbogo-triple-nacos
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo-go-nacos ClusterIP 192.168.123.204 &amp;lt;none&amp;gt; 8848/TCP 32s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pixiu LoadBalancer 192.168.156.175 30.XXX.XXX.XX 8881:30173/TCP 32s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>通过curl 调用 demo 服务,并获得响应结果。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ curl -X POST -d &lt;span style="color:#2aa198">&amp;#39;{&amp;#34;name&amp;#34;:&amp;#34;laurence&amp;#34;}&amp;#39;&lt;/span> http://30.XXX.XXX.XX:8881/dubbogoDemoServer/org.apache.dubbo.laurence.samples.UserProvider/SayHello
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">{&lt;/span>&lt;span style="color:#2aa198">&amp;#34;name&amp;#34;&lt;/span>:&lt;span style="color:#2aa198">&amp;#34;Hello laurence&amp;#34;&lt;/span>,&lt;span style="color:#2aa198">&amp;#34;id&amp;#34;&lt;/span>:&lt;span style="color:#2aa198">&amp;#34;12345&amp;#34;&lt;/span>,&lt;span style="color:#2aa198">&amp;#34;age&amp;#34;&lt;/span>:21&lt;span style="color:#719e07">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Overview: 使用 Pixiu 暴露 Dubbo-go 服务</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/pixiu-nacos-triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/pixiu-nacos-triple/</guid><description>
&lt;p>Dubbo-go-pixiu 网关支持调用 GO/Java 的 Dubbo 集群。在 Dubbo-go 3.0 的场景下,我们可以通过 Pixiu 网关,在集群外以 HTTP 协议请求 pixiu 网关,在网关层进行协议转换,进一步调用集群内的Dubbo-go 服务。&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/docs3-v2/golang-sdk/samples/pixiu-nacos-triple/triple-pixiu.png" alt="img">&lt;/p>
&lt;p>用户调用 Dubbo-go 服务的 path 为http://$(app_name)/$(service_name)/$(method)&lt;/p>
&lt;p>例如一个proto文件内有如下定义:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-protobuf" data-lang="protobuf">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> org&lt;span style="color:#719e07">.&lt;/span>apache.dubbo.quickstart.samples;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">service&lt;/span> UserProvider {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">rpc&lt;/span> SayHello (HelloRequest) &lt;span style="color:#719e07">returns&lt;/span> (User) {}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">HelloRequest&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> name &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>并在dubbo-go 服务启动时在dubbogo.yml 内配置应用名为my-dubbogo-app:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">application&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">name&lt;/span>: my-dubbogo-app
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>pixiu 网关即可解析 path 为 http://my-dubbogo-app/org.apache.dubbo.quickstart.samples.UserProvider/SayHello 的路由,并转发至对应服务。来自外部HTTP 请求的 body 为 json 序列化的请求参数,例如 {&amp;ldquo;name&amp;rdquo;:&amp;ldquo;test&amp;rdquo;}。&lt;/p>
&lt;p>我们目前推荐使用 Nacos 作为注册中心。&lt;/p>
&lt;p>用户可以在自己的集群里部署我们的demo,集群最好拥有暴露 lb 类型 service 的能力,从而可以在公网访问至集群内的服务,您也可以直接集群内进行请求。针对您的集群,执行:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ kubectl apply -f https://raw.githubusercontent.com/dubbogo/triple-pixiu-demo/master/deploy/pixiu-triple-demo.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>会在 dubbogo-triple-nacos 命名空间下创建如下资源,包含三个 triple-server,一个pixiu网关,一个 nacos server。并通过 Servcie 将服务暴露至公网。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-plain" data-lang="plain">&lt;span style="display:flex;">&lt;span>namespace/dubbogo-triple-nacos created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>service/dubbo-go-nacos created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deployment.apps/dubbogo-nacos-deployment created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deployment.apps/pixiu created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deployment.apps/server created
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>service/pixiu created
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>获取 pixiu 公网 ip 并进行调用&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-plain" data-lang="plain">&lt;span style="display:flex;">&lt;span>$ kubectl get svc -n dubbogo-triple-nacos
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo-go-nacos ClusterIP 192.168.123.204 &amp;lt;none&amp;gt; 8848/TCP 32s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pixiu LoadBalancer 192.168.156.175 30.XXX.XXX.XX 8881:30173/TCP 32s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>通过curl 调用 demo 服务,并获得响应结果。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ curl -X POST -d &lt;span style="color:#2aa198">&amp;#39;{&amp;#34;name&amp;#34;:&amp;#34;laurence&amp;#34;}&amp;#39;&lt;/span> http://30.XXX.XXX.XX:8881/dubbogoDemoServer/org.apache.dubbo.laurence.samples.UserProvider/SayHello
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">{&lt;/span>&lt;span style="color:#2aa198">&amp;#34;name&amp;#34;&lt;/span>:&lt;span style="color:#2aa198">&amp;#34;Hello laurence&amp;#34;&lt;/span>,&lt;span style="color:#2aa198">&amp;#34;id&amp;#34;&lt;/span>:&lt;span style="color:#2aa198">&amp;#34;12345&amp;#34;&lt;/span>,&lt;span style="color:#2aa198">&amp;#34;age&amp;#34;&lt;/span>:21&lt;span style="color:#719e07">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>