Ah, I think I figured out part of my issue.  If I update the Helm chart
values that impact advertised.listeners and thenI run a 'helm upgrade', it
sometimes does not actually apply the settings immediately.  This made
debugging really hard until I figured this out.  I don't know
Helm/Kubernetes well enough but this seems wrong/bad.  The result of
'upgrade' varied depending on the fields I updated.  I assumed 'helm
upgrade' should get the servers to the state in the configs.  Once I
realized this and switched to uninstalling and then installing, I was able
to get to a working configuration.

On Thu, Mar 19, 2020 at 4:55 PM Dan Hill <quietgol...@gmail.com> wrote:

> I'll prefix this with I'm new to AWS.  I'm used to Google's stack.  I also
> noticed the helm instructions
> <https://github.com/helm/charts/tree/master/incubator/kafka#connecting-to-kafka-from-outside-kubernetes>
>  mention
> kops (so I'm not sure if this works with EKS).
>
> @Pirow
> - Kafka - I'm having issues setting up listeners and
> advertised.listeners.  I added more details below.
> - Kubernetes - I've tried a few ways.  Longer-term, I want it in the same
> VPC but outside of EKS.  I tried the 3 ways listed in the helm
> instructions
> <https://github.com/helm/charts/tree/master/incubator/kafka#connecting-to-kafka-from-outside-kubernetes>
>  (NodePort,
> Loadbalancer w/ distinct and Loadbalancer w/o distinct).  The LoadBalancer
> with distinct route creates a load balancer with port <30000.  I was
> relying on AWS's external IP for this.
>
> @Robin - Thanks!  This link was very useful in understanding the problem.
> I'm still navigating the exact problem.
>
>
>
> What's the preferred way on AWS EKS?  NodePort?  When I used the NodePort
> helm instructions but I'm not sure what to put for the address.  If I put
> in a single node in the cluster, e.g.
> ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com, the ports 31090-31092 seem
> to go to the same machine.  I'm guessing I wouldn't want this to run in
> production since it's referring to a direct address for a machine.
>
>
> % diff kafka-values-original.yaml kafka-values-nodeport2.yaml
> 140c140
> <   enabled: false
> ---
> >   enabled: true
> 154c154
> <   domain: cluster.local
> ---
> >   domain: ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com
> 191,192c191,192
> <   # "advertised.listeners": |-
> <   #   EXTERNAL://kafka.cluster.local:$((31090 + ${KAFKA_BROKER_ID}))
> ---
> >   "advertised.listeners": |-
> >     EXTERNAL://ec2-35-170-61-153.compute-1.amazonaws.com:$((31090 +
> ${KAFKA_BROKER_ID}))
> 200,201c200,201
> <   # "listener.security.protocol.map": |-
> <   #   PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
> ---
> >   "listener.security.protocol.map": |-
> >     PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
>
> If I do this setup, the ports don't seem to go to the respective brokers.
> Which I'm guessing means that they're still talking to the same node.
>
> % kafkacat -b ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com:31091 -L
> Metadata for all topics (from broker -1:
> ec2-XXX-XXX-247-184.compute-1.amazonaws.com:31091/bootstrap):
>  3 brokers:
>   broker 2 at ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com:31092
>   broker 1 at ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com:31091
>   broker 0 at ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com:31090
> (controller)
>  0 topics:
>
> When I run my go code that uses segmentio/kafka-go, it seems to append an
> extra port:
> "dial tcp: address ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com:31090:31090:
> too many colons in address"
>
>
>
>
> On Thu, Mar 19, 2020 at 2:21 AM Robin Moffatt <ro...@confluent.io> wrote:
>
>> You need to make sure you've configured your listeners & advertised
>> listeners correctly. This should help:
>> https://rmoff.net/2018/08/02/kafka-listeners-explained/
>>
>>
>> --
>>
>> Robin Moffatt | Senior Developer Advocate | ro...@confluent.io | @rmoff
>>
>>
>> On Thu, 19 Mar 2020 at 01:49, Dan Hill <quietgol...@gmail.com> wrote:
>>
>> > Problem: I'm hitting an error: "no such host" for "
>> > kafka-0.cluster.local:19092".
>> >
>> > Has anyone done this before?  Any help would be appreciated.  Thanks! -
>> Dan
>> >
>> > My long-term goal is to get an AWS Lambda to send events to a Kafka
>> running
>> > in AWS EKS.
>> >
>> > I used the following instructions
>> > <
>> >
>> https://github.com/helm/charts/tree/master/incubator/kafka#connecting-to-kafka-from-outside-kubernetes
>> > >
>> > (linked to the "outside kubernetes" part) to setup up Kafka using the
>> helm
>> > config.  The only modifications are for the "outside kubernetes" part.
>> > <
>> >
>> https://github.com/helm/charts/tree/master/incubator/kafka#connecting-to-kafka-from-outside-kubernetes
>> > >
>> >
>> > I've tried a few variations.  None of them worked.  I still can't
>> connect
>> > to it.
>> > - on an Lambda in the same subnet, on an EC2 machine in the same
>> subnet, on
>> > a
>> > - with a couple different "outside kubernetes" options.
>> >
>> > E.g. if I setup external using LoadBalancer, I'll get something an
>> External
>> > IP like (fake) afdsafsafsafdas-13412341.us-east-1.elb.amazon.com:19092.
>> >
>> > If I try to run a basic command against this domain, it fails saying
>> there
>> > is no such host for kafka-0.cluster.local:19092.
>> >
>>
>

Reply via email to