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