Connecting External Client to Containerized Cluster in Kubernetes

classic Classic list List threaded Threaded
4 messages Options
vitalys vitalys
Reply | Threaded
Open this post in threaded view
|

Connecting External Client to Containerized Cluster in Kubernetes

Hi,

We have setup an Apache Ignite Cluster in Kubernetes ( 1 Node Per pod ) and
when we run "ignitevisorcmd.sh" from inside the Kubernetes we can see
correct topology of the Cluster ( 3 nodes ).

Our task is to run Ignite Client from outside the Kubernetes. We setup our
client config to use "KubernetesIpFinder" :

<property name="ipFinder">
        <bean
class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder"/>
            </property>

But I am wondering how does Ignite Client know how to connect to Kubernetes?
"TcpDiscoveryKubernetesIpFinder" contains multiple properties like
"registerAddresses", "masterURL" , "namespace", "accountToken". Do we need
to define these properties in our Client configuration?

And in General, what's the right approach in setting up Client connection to
the Ignite Cluster that runs in Kubernetes?

thank you in advance.



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
akurbanov akurbanov
Reply | Threaded
Open this post in threaded view
|

RE: Connecting External Client to Containerized Cluster in Kubernetes

Hello Vitaly,

 

Unfortunately, I am not aware of any working solution right now and it looks that the ticket related to special discovery mechanism for external cluster members is not in work currently: https://issues.apache.org/jira/browse/IGNITE-4161

 

You might find this mailing thread useful if you want to try to experiment with this, there are some hints and clues oh how this might work: http://apache-ignite-users.70518.x6.nabble.com/Kubernetes-Access-Ignite-Cluster-Externally-td20532.html

 

However, the mentioned issue and thread are about server nodes and thick clients. What kind of operations are you expecting to perform on k8s Ignite cluster, do you really need the external client to be full-scale cluster member? You still have thin clients and REST that will be definitely easier to connect and utilize.

 

I would also recommend reaching out to Ignite dev list and start another discussion there.

 

Regards,

Anton

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Thursday, September 5, 2019 10:02 PM
To: [hidden email]
Subject: Connecting External Client to Containerized Cluster in Kubernetes

 

Hi,

 

We have setup an Apache Ignite Cluster in Kubernetes ( 1 Node Per pod ) and

when we run "ignitevisorcmd.sh" from inside the Kubernetes we can see

correct topology of the Cluster ( 3 nodes ).

 

Our task is to run Ignite Client from outside the Kubernetes. We setup our

client config to use "KubernetesIpFinder" :

 

<property name="ipFinder">

                           <bean

class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder"/>

            </property>

 

But I am wondering how does Ignite Client know how to connect to Kubernetes?

"TcpDiscoveryKubernetesIpFinder" contains multiple properties like

"registerAddresses",    "masterURL" , "namespace", "accountToken". Do we need

to define these properties in our Client configuration?

 

And in General, what's the right approach in setting up Client connection to

the Ignite Cluster that runs in Kubernetes?

 

thank you in advance.

 

 

 

--

Sent from: http://apache-ignite-users.70518.x6.nabble.com/

 

vitalys vitalys
Reply | Threaded
Open this post in threaded view
|

RE: Connecting External Client to Containerized Cluster in Kubernetes

We currently have working installation where our Ignite Server Nodes reside
on the standalone VMs and form a Cluster upon start by using shared
Configuration setup. Our Client application joins Cluster on-demand, loads
data into the Cluster and then kicks-off certain operations on the loaded
data.

We want to migrate Ignite Cluster Nodes from individual VMs to Kubernetes
and containerize them along the way. So our challenge is to have an existing
client join the Cluster while Cluster Nodes deployment platform is changed.

I have some reservations about REST client since we need to load significant
volumes of data in to the Cluster.



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
dmagda dmagda
Reply | Threaded
Open this post in threaded view
|

Re: Connecting External Client to Containerized Cluster in Kubernetes

Vitaly,

If you are using thick (aka. standard) Ignite clients then go ahead and reuse the same IP Finder. The easiest way is to deploy the app in the same namespace and the IP Finder will work out well.

If the cluster is accessed via thin clients or REST protocol then ensure that the proper port numbers are visible via K8 LoadBalancer or by other means: https://apacheignite.readme.io/docs/amazon-web-services-eks-deployment#section-connecting-from-external-applications

-
Denis


On Wed, Sep 11, 2019 at 1:42 PM vitalys <[hidden email]> wrote:
We currently have working installation where our Ignite Server Nodes reside
on the standalone VMs and form a Cluster upon start by using shared
Configuration setup. Our Client application joins Cluster on-demand, loads
data into the Cluster and then kicks-off certain operations on the loaded
data.

We want to migrate Ignite Cluster Nodes from individual VMs to Kubernetes
and containerize them along the way. So our challenge is to have an existing
client join the Cluster while Cluster Nodes deployment platform is changed.

I have some reservations about REST client since we need to load significant
volumes of data in to the Cluster.



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/