Package org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes

## Class TcpDiscoveryKubernetesIpFinder

- java.lang.Object
- - org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter
  - - org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.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.

- - ### Field Summary

    - ### Fields inherited from class org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter

      `ignite`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `TcpDiscoveryKubernetesIpFinder()` | Creates an instance of Kubernetes IP finder.
    `TcpDiscoveryKubernetesIpFinder​(KubernetesConnectionConfiguration cfg)` | Creates an instance of Kubernetes IP finder.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Collection<InetSocketAddress>` | `getRegisteredAddresses()` | Gets all addresses registered in this finder.
    `void` | `includeNotReadyAddresses​(boolean includeNotReadyAddresses)` | Deprecated. set parameters with `KubernetesConnectionConfiguration` instead.
    `void` | `registerAddresses​(Collection<InetSocketAddress> addrs)` | Registers new addresses.
    `void` | `setAccountToken​(String accountToken)` | Deprecated. set parameters with `KubernetesConnectionConfiguration` instead.
    `void` | `setMasterUrl​(String master)` | Deprecated. set parameters with `KubernetesConnectionConfiguration` instead.
    `void` | `setNamespace​(String namespace)` | Deprecated. set parameters with `KubernetesConnectionConfiguration` instead.
    `void` | `setServiceName​(String service)` | Deprecated. set parameters with `KubernetesConnectionConfiguration` instead.
    `void` | `unregisterAddresses​(Collection<InetSocketAddress> addrs)` | Unregisters provided addresses.

    - ### Methods inherited from class org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter

      `close, discoveryClientMode, initializeLocalAddresses, isShared, onSpiContextDestroyed, onSpiContextInitialized, setShared, spiContext, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

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

    - #### getRegisteredAddresses

          public Collection<InetSocketAddress> getRegisteredAddresses()
                                                               throws IgniteSpiException

      Gets all addresses registered in this finder.
      Returns:
        All known addresses, potentially empty, but never `null`.
      Throws:
        `IgniteSpiException` - In case of error.

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