carefree666 opened a new issue, #2665:
URL: https://github.com/apache/apisix-ingress-controller/issues/2665

   ### Issue description
   
   <p data-start="240" data-end="255">Hi APISIX team,</p>
   <p data-start="257" data-end="441">I am trying to expose a Redis Service 
(TCP 6379) through APISIX using <strong data-start="327" data-end="351">Gateway 
API TCPRoute</strong>, but it does not work in <strong data-start="377" 
data-end="407">Standalone API-driven mode</strong> with APISIX Ingress 
Controller.</p>
   <p data-start="443" data-end="528">I hope to clarify how to correctly enable 
TCP/stream routing in this deployment mode.</p>
   <hr data-start="530" data-end="533">
   <h2 data-start="535" data-end="563"><strong data-start="538" 
data-end="563">Deployment &amp; Versions</strong></h2>
   <p data-start="565" data-end="584">Installed via Helm:</p>
   <pre class="overflow-visible!" data-start="586" data-end="1095"><div 
class="contain-inline-size rounded-2xl relative 
bg-token-sidebar-surface-primary"><div class="sticky top-9"><div 
class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div 
class="bg-token-bg-elevated-secondary text-token-text-secondary flex 
items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div 
class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! 
language-bash"><span><span>helm install apisix \
     --version 2.12.3 \
     --namespace ingress-apisix \
     --create-namespace \
     --</span><span><span class="hljs-built_in">set</span></span><span> 
apisix.deployment.role=traditional \
     --</span><span><span class="hljs-built_in">set</span></span><span> 
apisix.deployment.role_traditional.config_provider=yaml \
     --</span><span><span class="hljs-built_in">set</span></span><span> 
etcd.enabled=</span><span><span class="hljs-literal">false</span></span><span> \
     --</span><span><span class="hljs-built_in">set</span></span><span> 
ingress-controller.enabled=</span><span><span 
class="hljs-literal">true</span></span><span> \
     --</span><span><span class="hljs-built_in">set</span></span><span> 
ingress-controller.config.provider.type=apisix-standalone \
     --</span><span><span class="hljs-built_in">set</span></span><span> 
ingress-controller.apisix.adminService.namespace=ingress-apisix \
     --</span><span><span class="hljs-built_in">set</span></span><span> 
ingress-controller.gatewayProxy.createDefault=</span><span><span 
class="hljs-literal">true</span></span><span> \
     apisix/apisix
   </span></span></code></div></div></pre>
   <div class="_tableContainer_1rjym_1"><div tabindex="-1" class="group 
_tableWrapper_1rjym_13 flex w-fit flex-col-reverse">
   Component | Version | Image
   -- | -- | --
   APISIX | 3.14.1 | apache/apisix:3.14.1-ubuntu
   APISIX Ingress Controller | 2.0.0-rc5 | 
apache/apisix-ingress-controller:2.0.0-rc5
   
   </div></div>
   <p data-start="1445" data-end="1538">Deployment mode: Standalone API-driven 
(rules stored in memory, config updates via Admin API)</p>
   <hr data-start="1540" data-end="1543">
   <h2 data-start="1545" data-end="1578"><strong data-start="1548" 
data-end="1578">Gateway / TCPRoute applied</strong></h2>
   <pre class="overflow-visible!" data-start="1580" data-end="2582"><div 
class="contain-inline-size rounded-2xl relative 
bg-token-sidebar-surface-primary"><div class="sticky top-9"><div 
class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div 
class="bg-token-bg-elevated-secondary text-token-text-secondary flex 
items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div 
class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! 
language-yaml"><span><span><span 
class="hljs-attr">apiVersion:</span></span><span> </span><span><span 
class="hljs-string">apisix.apache.org/v1alpha1</span></span><span>
   </span><span><span class="hljs-attr">kind:</span></span><span> 
</span><span><span class="hljs-string">GatewayProxy</span></span><span>
   </span><span><span class="hljs-attr">metadata:</span></span><span>
     </span><span><span class="hljs-attr">namespace:</span></span><span> 
</span><span><span class="hljs-string">demo</span></span><span>
     </span><span><span class="hljs-attr">name:</span></span><span> 
</span><span><span class="hljs-string">apisix-proxy-config</span></span><span>
   </span><span><span class="hljs-attr">spec:</span></span><span>
     </span><span><span class="hljs-attr">provider:</span></span><span>
       </span><span><span class="hljs-attr">type:</span></span><span> 
</span><span><span class="hljs-string">ControlPlane</span></span><span>
       </span><span><span class="hljs-attr">controlPlane:</span></span><span>
         </span><span><span class="hljs-attr">endpoints:</span></span><span>
           </span><span><span class="hljs-bullet">-</span></span><span> 
</span><span><span 
class="hljs-string">http://apisix-admin.ingress-apisix:9180</span></span><span> 
  
         </span><span><span class="hljs-attr">auth:</span></span><span>
           </span><span><span class="hljs-attr">type:</span></span><span> 
</span><span><span class="hljs-string">AdminKey</span></span><span>
           </span><span><span class="hljs-attr">adminKey:</span></span><span>
             </span><span><span class="hljs-attr">value:</span></span><span> 
</span><span><span 
class="hljs-string">"edd1c9f034335f136f87ad84b625c8f1"</span></span><span>
   </span><span><span class="hljs-meta">---</span></span><span>
   </span><span><span class="hljs-attr">apiVersion:</span></span><span> 
</span><span><span 
class="hljs-string">gateway.networking.k8s.io/v1</span></span><span>
   </span><span><span class="hljs-attr">kind:</span></span><span> 
</span><span><span class="hljs-string">Gateway</span></span><span>
   </span><span><span class="hljs-attr">metadata:</span></span><span>
     </span><span><span class="hljs-attr">namespace:</span></span><span> 
</span><span><span class="hljs-string">demo</span></span><span>
     </span><span><span class="hljs-attr">name:</span></span><span> 
</span><span><span class="hljs-string">apisix</span></span><span>
   </span><span><span class="hljs-attr">spec:</span></span><span>
     </span><span><span class="hljs-attr">gatewayClassName:</span></span><span> 
</span><span><span class="hljs-string">apisix</span></span><span>
     </span><span><span class="hljs-attr">listeners:</span></span><span>
       </span><span><span class="hljs-bullet">-</span></span><span> 
</span><span><span class="hljs-attr">name:</span></span><span> 
</span><span><span class="hljs-string">redis</span></span><span>
         </span><span><span class="hljs-attr">protocol:</span></span><span> 
</span><span><span class="hljs-string">TCP</span></span><span>
         </span><span><span class="hljs-attr">port:</span></span><span> 
</span><span><span class="hljs-number">6379</span></span><span>
         </span><span><span class="hljs-attr">allowedRoutes:</span></span><span>
           </span><span><span class="hljs-attr">kinds:</span></span><span>
             </span><span><span class="hljs-bullet">-</span></span><span> 
</span><span><span class="hljs-attr">kind:</span></span><span> 
</span><span><span class="hljs-string">TCPRoute</span></span><span>
     </span><span><span class="hljs-attr">infrastructure:</span></span><span>
       </span><span><span class="hljs-attr">parametersRef:</span></span><span>
         </span><span><span class="hljs-attr">group:</span></span><span> 
</span><span><span class="hljs-string">apisix.apache.org</span></span><span>
         </span><span><span class="hljs-attr">kind:</span></span><span> 
</span><span><span class="hljs-string">GatewayProxy</span></span><span>
         </span><span><span class="hljs-attr">name:</span></span><span> 
</span><span><span class="hljs-string">apisix-proxy-config</span></span><span>
   </span><span><span class="hljs-meta">---</span></span><span>
   </span><span><span class="hljs-attr">apiVersion:</span></span><span> 
</span><span><span 
class="hljs-string">gateway.networking.k8s.io/v1alpha2</span></span><span>
   </span><span><span class="hljs-attr">kind:</span></span><span> 
</span><span><span class="hljs-string">TCPRoute</span></span><span>
   </span><span><span class="hljs-attr">metadata:</span></span><span>
     </span><span><span class="hljs-attr">namespace:</span></span><span> 
</span><span><span class="hljs-string">demo</span></span><span>
     </span><span><span class="hljs-attr">name:</span></span><span> 
</span><span><span class="hljs-string">tcp-redis</span></span><span>
   </span><span><span class="hljs-attr">spec:</span></span><span>
     </span><span><span class="hljs-attr">parentRefs:</span></span><span>
       </span><span><span class="hljs-bullet">-</span></span><span> 
</span><span><span class="hljs-attr">name:</span></span><span> 
</span><span><span class="hljs-string">apisix</span></span><span>
         </span><span><span class="hljs-attr">sectionName:</span></span><span> 
</span><span><span class="hljs-string">redis</span></span><span>
     </span><span><span class="hljs-attr">rules:</span></span><span>
       </span><span><span class="hljs-bullet">-</span></span><span> 
</span><span><span class="hljs-attr">backendRefs:</span></span><span>
           </span><span><span class="hljs-bullet">-</span></span><span> 
</span><span><span class="hljs-attr">name:</span></span><span> 
</span><span><span class="hljs-string">redis-s3xl</span></span><span>
             </span><span><span class="hljs-attr">port:</span></span><span> 
</span><span><span class="hljs-number">6379</span></span><span>
   </span></span></code></div></div></pre>
   <p data-start="2584" data-end="2644">The Gateway and TCPRoute resources are 
created successfully.</p>
   <hr data-start="2646" data-end="2649">
   <h2 data-start="2651" data-end="2675"><strong data-start="2654" 
data-end="2675">Observed behavior</strong></h2>
   <p data-start="2677" data-end="2708">APISIX logs show the following:</p>
   <pre class="overflow-visible!" data-start="2710" data-end="3245"><div 
class="contain-inline-size rounded-2xl relative 
bg-token-sidebar-surface-primary"><div class="sticky top-9"><div 
class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div 
class="bg-token-bg-elevated-secondary text-token-text-secondary flex 
items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div 
class="overflow-y-auto p-4" dir="ltr"><code 
class="whitespace-pre!"><span><span><span 
class="hljs-number">2025</span></span><span><span 
class="hljs-operator">-</span></span><span><span 
class="hljs-number">11</span></span><span><span 
class="hljs-operator">-</span></span><span>28T03:</span><span><span 
class="hljs-number">00</span></span><span>:</span><span><span 
class="hljs-number">40</span></span><span>.074724339Z </span><span><span 
class="hljs-number">192.168</span></span><span>.</span><span><span 
class="hljs-number">194.92</span></span><span> </span><span><span 
class="hljs-operator">-</span></s
 pan><span> </span><span><span class="hljs-operator">-</span></span><span> 
[</span><span><span class="hljs-number">28</span></span><span><span 
class="hljs-regexp">/Nov/</span></span><span><span 
class="hljs-number">2025</span></span><span>:</span><span><span 
class="hljs-number">03</span></span><span>:</span><span><span 
class="hljs-number">00</span></span><span>:</span><span><span 
class="hljs-number">37</span></span><span> </span><span><span 
class="hljs-operator">+</span></span><span><span 
class="hljs-number">0000</span></span><span>] apisix</span><span><span 
class="hljs-operator">-</span></span><span>admin.ingress</span><span><span 
class="hljs-operator">-</span></span><span>apisix:</span><span><span 
class="hljs-number">9180</span></span><span> </span><span><span 
class="hljs-string">"PUT /apisix/admin/configs HTTP/1.1"</span></span><span> 
</span><span><span class="hljs-number">204</span></span><span> 
</span><span><span class="hljs-number">0</span></span><span> </span><span><span 
class=
 "hljs-number">0.000</span></span><span> </span><span><span 
class="hljs-string">"-"</span></span><span> </span><span><span 
class="hljs-string">"axios/1.11.0"</span></span><span>
   </span><span><span class="hljs-number">2025</span></span><span><span 
class="hljs-operator">-</span></span><span><span 
class="hljs-number">11</span></span><span><span 
class="hljs-operator">-</span></span><span>28T03:</span><span><span 
class="hljs-number">00</span></span><span>:</span><span><span 
class="hljs-number">40</span></span><span>.074734797Z </span><span><span 
class="hljs-number">192.168</span></span><span>.</span><span><span 
class="hljs-number">194.92</span></span><span> </span><span><span 
class="hljs-operator">-</span></span><span> </span><span><span 
class="hljs-operator">-</span></span><span> [</span><span><span 
class="hljs-number">28</span></span><span><span 
class="hljs-regexp">/Nov/</span></span><span><span 
class="hljs-number">2025</span></span><span>:</span><span><span 
class="hljs-number">03</span></span><span>:</span><span><span 
class="hljs-number">00</span></span><span>:</span><span><span 
class="hljs-number">37</span></span><span> </span><span><span class="hljs-opera
 tor">+</span></span><span><span class="hljs-number">0000</span></span><span>] 
</span><span><span 
class="hljs-number">192.168</span></span><span>.</span><span><span 
class="hljs-number">194.95</span></span><span>:</span><span><span 
class="hljs-number">9180</span></span><span> </span><span><span 
class="hljs-string">"PUT /apisix/admin/configs HTTP/1.1"</span></span><span> 
</span><span><span class="hljs-number">400</span></span><span> 
</span><span><span class="hljs-number">99</span></span><span> 
</span><span><span class="hljs-number">0.000</span></span><span> 
</span><span><span class="hljs-string">"-"</span></span><span> 
</span><span><span class="hljs-string">"axios/1.11.0"</span></span><span>
   </span><span><span class="hljs-number">2025</span></span><span><span 
class="hljs-operator">-</span></span><span><span 
class="hljs-number">11</span></span><span><span 
class="hljs-operator">-</span></span><span>28T03:</span><span><span 
class="hljs-number">00</span></span><span>:</span><span><span 
class="hljs-number">40</span></span><span>.074739672Z </span><span><span 
class="hljs-number">192.168</span></span><span>.</span><span><span 
class="hljs-number">194.92</span></span><span> </span><span><span 
class="hljs-operator">-</span></span><span> </span><span><span 
class="hljs-operator">-</span></span><span> [</span><span><span 
class="hljs-number">28</span></span><span><span 
class="hljs-regexp">/Nov/</span></span><span><span 
class="hljs-number">2025</span></span><span>:</span><span><span 
class="hljs-number">03</span></span><span>:</span><span><span 
class="hljs-number">00</span></span><span>:</span><span><span 
class="hljs-number">37</span></span><span> </span><span><span class="hljs-opera
 tor">+</span></span><span><span class="hljs-number">0000</span></span><span>] 
apisix</span><span><span 
class="hljs-operator">-</span></span><span>admin.ingress</span><span><span 
class="hljs-operator">-</span></span><span>apisix:</span><span><span 
class="hljs-number">9180</span></span><span> </span><span><span 
class="hljs-string">"PUT /apisix/admin/configs HTTP/1.1"</span></span><span> 
</span><span><span class="hljs-number">204</span></span><span> 
</span><span><span class="hljs-number">0</span></span><span> </span><span><span 
class="hljs-number">0.000</span></span><span> </span><span><span 
class="hljs-string">"-"</span></span><span> </span><span><span 
class="hljs-string">"axios/1.11.0"</span></span><span>
   </span></span></code></div></div></pre>
   <ul data-start="3247" data-end="3531">
   <li data-start="3247" data-end="3356">
   <p data-start="3249" data-end="3356">The APISIX Admin API returns <strong 
data-start="3278" data-end="3297">400 Bad Request</strong> when the Ingress 
Controller pushes TCPRoute configuration.</p>
   </li>
   <li data-start="3357" data-end="3456">
   <p data-start="3359" data-end="3456">APISIX pod only exposes HTTP / HTTPS / 
Admin / Control / Status ports (9080/9443/9180/9090/7085).</p>
   </li>
   <li data-start="3457" data-end="3531">
   <p data-start="3459" data-end="3531"><strong data-start="3459" 
data-end="3492">No stream listener is started</strong>, so TCP connections to 
port 6379 fail.</p>
   </li>
   </ul>
   <hr data-start="3533" data-end="3536">
   <h2 data-start="3538" data-end="3563"><strong data-start="3541" 
data-end="3563">Problem / Question</strong></h2>
   <p data-start="3565" data-end="3579">It seems that:</p>
   <ol data-start="3581" data-end="3925">
   <li data-start="3581" data-end="3672">
   <p data-start="3584" data-end="3672">Standalone API-driven mode <strong 
data-start="3611" data-end="3657">does not accept stream / TCP 
configuration</strong> via Admin API.</p>
   </li>
   <li data-start="3673" data-end="3840">
   <p data-start="3676" data-end="3840">Gateway API TCPRoute only works if 
APISIX Data Plane has <strong data-start="3733" data-end="3760">stream ports 
configured</strong>, but in this deployment mode <strong data-start="3790" 
data-end="3839">config.yaml is not used or cannot be modified</strong>.</p>
   </li>
   <li data-start="3841" data-end="3925">
   <p data-start="3844" data-end="3925">Ingress Controller cannot dynamically 
create stream listeners in Standalone mode.</p>
   </li>
   </ol>
   <p data-start="3927" data-end="3941"><strong data-start="3927" 
data-end="3941">Questions:</strong></p>
   <ol data-start="3943" data-end="4274">
   <li data-start="3943" data-end="4048">
   <p data-start="3946" data-end="4048">How can we enable TCP/stream proxy in 
<strong data-start="3984" data-end="4014">Standalone API-driven mode</strong> 
with APISIX + Ingress Controller?</p>
   </li>
   <li data-start="4049" data-end="4176">
   <p data-start="4052" data-end="4176">Is modifying config.yaml the only way 
to open stream listeners, or should Standalone + Gateway API support it 
automatically?</p>
   </li>
   <li data-start="4177" data-end="4274">
   <p data-start="4180" data-end="4274">Is there an official recommended way to 
expose TCP/Redis in Standalone API-driven deployments?</p>
   </li>
   </ol>
   <p data-start="4276" data-end="4310">Any guidance would be appreciated.</p>
   <p data-start="4312" data-end="4319">Thanks!</p>
   
   
   ### Environment
   
   - your apisix-ingress-controller version (output of 
apisix-ingress-controller version --long):
   - your Kubernetes cluster version (output of kubectl version):
   - if you run apisix-ingress-controller in Bare-metal environment, also show 
your OS version (uname -a):
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to