mianos opened a new issue #8373:
URL: https://github.com/apache/pulsar/issues/8373


   **Description**
   Helm installed Pulsar proxy does not seem to proxy.
   No TLS.
   Maybe my misunderstanding  the clear documentation.
   I assumed that the Pulsar proxy should proxy all Pulsar traffic into 
Kubernetes according to the documentation.
   The Pulsar brokers should not need external addresses, as configured by 
default in the helm chart.
   
   **To Reproduce**
   Install pulsar via helm (with some persistent volumes as needed already set 
up):
   Helm values are basically a one node k8s cluster with some local persistent 
storage. 
   No grafana, no prometheus, no affinity.
   
   https://gist.github.com/mianos/1d84bfe7f580e6a3917ed8506c42e96e
   
   Installing:
   ```
   helm -n pulsar install --set initialize=true --values=values-as-above.yaml  
pulsar apache/pulsar
   ```
   Wait a while. 
   ```
   NAME                                     READY   STATUS      RESTARTS   AGE
   pulsar-bookie-0                          1/1     Running     0          25m
   pulsar-bookie-init-jlrvv                 0/1     Completed   0          25m
   pulsar-broker-0                          1/1     Running     0          25m
   pulsar-proxy-0                           1/1     Running     0          25m
   pulsar-pulsar-init-5glmm                 0/1     Completed   0          25m
   pulsar-pulsar-manager-76c5cfb97f-nknr5   1/1     Running     0          25m
   pulsar-toolset-0                         1/1     Running     0          25m
   pulsar-zookeeper-0                       1/1     Running     0          25m
   ```
   
   I also patched the proxy load balancer external IP to give me some network 
connectivity
   ```
   kubectl --namespace pulsar patch svc pulsar-proxy -p '{"spec": {"type": 
"LoadBalancer", "externalIPs":["131.84.1.232"]}}'
   ```
   
   Create a basic python client:
   https://gist.github.com/mianos/3d3541408902a7381c42a2740ac08d76
   pip installing pulsar-client==2.6.1 to a local venv
   
   ```
   kubectl -n pulsar get svc
   NAME                    TYPE           CLUSTER-IP       EXTERNAL-IP    
PORT(S)                       AGE
   pulsar-bookie           ClusterIP      None             <none>         
3181/TCP,8000/TCP             26m
   pulsar-broker           ClusterIP      None             <none>         
8080/TCP,6650/TCP             26m
   pulsar-proxy            LoadBalancer   10.102.14.255    131.84.1.232   
80:30172/TCP,6650:32728/TCP   26m
   pulsar-pulsar-manager   LoadBalancer   10.107.242.134   131.84.1.232   
9527:32067/TCP                26m
   pulsar-toolset          ClusterIP      None             <none>         
<none>                        26m
   pulsar-zookeeper        ClusterIP      None             <none>         
2888/TCP,3888/TCP,2181/TCP    26m
   ```
   **Run**
   Running the python app above:
   ```
   2020-10-26 07:36:20.331 INFO  [140172044347136] HTTPLookupService:237 | Curl 
Lookup Request sent for 
http://131.84.1.232/admin/v2/persistent/public/default/test_topic/partitions
   2020-10-26 07:36:20.337 INFO  [140172044347136] HTTPLookupService:251 | 
Response received for url 
http://131.84.1.232/admin/v2/persistent/public/default/test_topic/partitions 
code 200
   2020-10-26 07:36:20.337 INFO  [140172044347136] HTTPLookupService:295 | 
parsePartitionData = { LookupDataResult [brokerUrl_ = ] [brokerUrlTls_ = ] 
[partitions = 0] [authoritative = 0] [redirect = 0] proxyThroughServiceUrl = 0] 
}
   2020-10-26 07:36:20.337 INFO  [140172044347136] HandlerBase:53 | 
[persistent://public/default/test_topic, ] Getting connection from pool
   2020-10-26 07:36:20.337 INFO  [140172044347136] HTTPLookupService:237 | Curl 
Lookup Request sent for 
http://131.84.1.232/lookup/v2/topic/persistent/public/default/test_topic
   2020-10-26 07:36:20.339 INFO  [140172044347136] HTTPLookupService:251 | 
Response received for url 
http://131.84.1.232/lookup/v2/topic/persistent/public/default/test_topic code 
200
   2020-10-26 07:36:20.339 INFO  [140172044347136] HTTPLookupService:330 | 
parseLookupData = { LookupDataResult [brokerUrl_ = 
pulsar://pulsar-broker-0.pulsar-broker.pulsar.svc.cluster.local:6650] 
[brokerUrlTls_ = ] [partitions = 0] [authoritative = 0] [redirect = 0] 
proxyThroughServiceUrl = 0] }
   2020-10-26 07:36:20.340 INFO  [140172044347136] ConnectionPool:85 | Created 
connection for 
pulsar://pulsar-broker-0.pulsar-broker.pulsar.svc.cluster.local:6650
   2020-10-26 07:36:20.344 ERROR [140171961956096] ClientConnection:469 | 
[<none> -> 
pulsar://pulsar-broker-0.pulsar-broker.pulsar.svc.cluster.local:6650] Resolve 
error: asio.netdb:2 : Host not found (non-authoritative), try again later
   2020-10-26 07:36:20.344 INFO  [140171961956096] ClientConnection:1387 | 
[<none> -> 
pulsar://pulsar-broker-0.pulsar-broker.pulsar.svc.cluster.local:6650] 
Connection closed
   2020-10-26 07:36:20.344 INFO  [140171961956096] ProducerImpl:483 | Producer 
- [persistent://public/default/test_topic, ] , [batching  = off]
   2020-10-26 07:36:20.344 INFO  [140171961956096] ClientConnection:238 | 
[<none> -> 
pulsar://pulsar-broker-0.pulsar-broker.pulsar.svc.cluster.local:6650] Destroyed 
connection
   Traceback (most recent call last):
     File "ptest.py", line 21, in <module>
       producer = client.create_producer(opts.topic)
     File 
"/home/rfo/wa/mcs-pulsar-companion/py/venv/lib/python3.8/site-packages/pulsar/__init__.py",
 line 525, in create_producer
       p._producer = self._client.create_producer(topic, conf)
   Exception: Pulsar error: ConnectError
   ```
    
   **Expected behavior**
   In the first instance, nothing should be displayed and the messages should 
be published into pulsar, worst case complains about missing topic or 
permission.
   Note that asio.netdb: is a boost error, so this came from the C++ client 
underneath the python API
   
   kubectl version
   ```Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", 
GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", 
BuildDate:"2020-10-14T12:50:19Z", GoVersion:"go1.15.2", Compiler:"gc", 
Platform:"linux/amd64"}
   Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.3", 
GitCommit:"1e11e4a2108024935ecfcb2912226cedeafd99df", GitTreeState:"clean", 
BuildDate:"2020-10-14T12:41:49Z", GoVersion:"go1.15.2", Compiler:"gc", 
Platform:"linux/amd64"}
   ```
   ```
    helm -n pulsar list
   NAME         NAMESPACE       REVISION        UPDATED                         
        STATUS          CHART           APP VERSION
   pulsar       pulsar          1               2020-10-26 07:07:37.884071269 
+0000 UTC deployed        pulsar-2.6.0    1.0
   ```
   
   I also have a non helm installed pulsar without the proxy on some machine 
here. I'll give my python app a run on that just to verify it works.


----------------------------------------------------------------
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.

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


Reply via email to