Class TcpDiscoveryKubernetesIpFinder

  • All Implemented Interfaces:
    TcpDiscoveryIpFinder

    public class TcpDiscoveryKubernetesIpFinder
    extends TcpDiscoveryIpFinderAdapter
    IP finder for automatic lookup of Ignite nodes running in Kubernetes environment. All Ignite nodes have to deployed as Kubernetes pods in order to be discovered. An application that uses Ignite client nodes as a gateway to the cluster is required to be containerized as well. Applications and Ignite nodes running outside of Kubernetes will not be able to reach the containerized counterparts.

    The implementation is based on a distinct Kubernetes service. The name of the service must be set with KubernetesConnectionConfiguration. As for Ignite pods, it's recommended to label them in such way that the service will target only nodes that are able to be discovered, i.e. server and thick client nodes.

    The IP finder, in its turn, will call this service to retrieve Ignite pods IP addresses. The port will be either the one that is set with TcpDiscoverySpi.setLocalPort(int) or TcpDiscoverySpi.DFLT_PORT. Make sure that all Ignite pods occupy a similar discovery port, otherwise they will not be able to discover each other using this IP finder.

    Both registerAddresses(Collection) and unregisterAddresses(Collection) have no effect.

    Note, this IP finder is only workable when it used in Kubernetes environment. Choose another implementation of TcpDiscoveryIpFinder for local or home network tests.

    • Constructor Detail

      • TcpDiscoveryKubernetesIpFinder

        public TcpDiscoveryKubernetesIpFinder()
        Creates an instance of Kubernetes IP finder.
      • TcpDiscoveryKubernetesIpFinder

        public TcpDiscoveryKubernetesIpFinder​(KubernetesConnectionConfiguration cfg)
        Creates an instance of Kubernetes IP finder.
        Parameters:
        cfg - Kubernetes IP finder configuration.
    • Method Detail

      • registerAddresses

        public void registerAddresses​(Collection<InetSocketAddress> addrs)
                               throws IgniteSpiException
        Registers new addresses.

        Implementation should accept duplicates quietly, but should not register address if it is already registered.

        Parameters:
        addrs - Addresses to register. Not null and not empty.
        Throws:
        IgniteSpiException - In case of error.
      • unregisterAddresses

        public void unregisterAddresses​(Collection<InetSocketAddress> addrs)
                                 throws IgniteSpiException
        Unregisters provided addresses.

        Implementation should accept addresses that are currently not registered quietly (just no-op).

        Parameters:
        addrs - Addresses to unregister. Not null and not empty.
        Throws:
        IgniteSpiException - In case of error.
      • setServiceName

        @Deprecated
        public void setServiceName​(String service)
        Deprecated.
        set parameters with KubernetesConnectionConfiguration instead.
        Parameters:
        service - Kubernetes service name.
      • setNamespace

        @Deprecated
        public void setNamespace​(String namespace)
        Deprecated.
        set parameters with KubernetesConnectionConfiguration instead.
        Parameters:
        namespace - Namespace of the Kubernetes service.
      • setMasterUrl

        @Deprecated
        public void setMasterUrl​(String master)
        Deprecated.
        set parameters with KubernetesConnectionConfiguration instead.
        Parameters:
        master - Host name of the Kubernetes API server.
      • setAccountToken

        @Deprecated
        public void setAccountToken​(String accountToken)
        Deprecated.
        set parameters with KubernetesConnectionConfiguration instead.
        Parameters:
        accountToken - Path to the service token file.
      • includeNotReadyAddresses

        @Deprecated
        public void includeNotReadyAddresses​(boolean includeNotReadyAddresses)
        Deprecated.
        set parameters with KubernetesConnectionConfiguration instead.
        Parameters:
        includeNotReadyAddresses - Whether addresses of not-ready pods should be included.