Apache Ignite discovery for Kubernetes.
-
Kubernetes cluster with DNS integration enabled
If you want to build the plug-in yourself, you’ll need:
-
Java compiler able to compile Java 7 code
-
Maven 3.3.x or newer
First, declare the following in your project’s pom.xml
:
<dependency>
<groupId>com.github.pires</groupId>
<artifactId>apache-ignite-discovery-kubernetes</artifactId>
<version>1.0_1</version>
</dependency>
Now, let’s configure Apache Ignite discovery based on the following service descriptor:
apiVersion: v1
kind: Service
metadata:
name: MY-SERVICE
labels:
component: my-svc
spec:
selector:
component: my-svc
clusterIP: None
ports:
- name: MY-CONTAINER-PORT
port: 47500
protocol: TCP
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<!-- other properties -->
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="com.github.pires.ignite.kubernetes.KubernetesPodIpFinder">
<!-- Headless service name that exposes Ignite cluster, embedded or not. -->
<!-- See http://kubernetes.io/docs/user-guide/services/#headless-services -->
<property name="serviceName" value="MY-SERVICE"/>
<property name="containerPortName" value="MY-CONTAINER-PORT"/>
</bean>
</property>
</bean>
</property>
<!-- other properties -->
</bean>
</beans>
// ...
// Headless service name that exposes Ignite cluster, embedded or not.
// See http://kubernetes.io/docs/user-guide/services/#headless-services
final String serviceName = "MY-SERVICE";
final String containerPortName = "MY-CONTAINER-PORT";
final KubernetesPodIpFinder podIpFinder = new KubernetesPodIpFinder();
podIpFinder.setContainerPortName(containerPortName);
podIpFinder.setServiceName(serviceName);
final TcpDiscoverySpi discovery = new TcpDiscoverySpi();
discovery.setIpFinder(podIpFinder);
final IgniteConfiguration igniteConfig = new IgniteConfiguration();
igniteConfig.setDiscoverySpi(discovery);
Ignition.start(igniteConfig);
// ...