Bootstrap

tasks.elastic.kubernetes.Bootstrap
object Bootstrap

Attributes

Experimental
true
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Bootstrap.type

Members list

Value members

Concrete methods

def entrypoint[T](containerizer: Containerizer, k8sClientResource: Resource[IO, KubernetesClient[IO]], mainClassName: String, config: Option[Config], k8sRequestCpu: Double, k8sRequestRamMB: Int, k8sRequestEphemeralMB: Int)(useTs: TaskSystemComponents => IO[T]): IO[Option[T]]

Entry point with 2 way branch:

Entry point with 2 way branch:

  • \1. config.kubernetesHostNameOrIPEnvVar env var is present then we run in kube. In that case we launch the tasksystem
  • The tasksystem startup will decide whether it starts in app, queue or follower mode
  • The user of the tasksystem resource needs to act accordingly, in particular it should IO-block forever when it is a follower
    1. MY_POD_IP not present then we run outside of kube. Creates a container and launches it which will eventually end up in 1. This process continues to trail the log of the newly created container

Attributes

Returns

If this is an App role then whatever the app produces in an option (Some[T]) otherwise if this is a bootstrap process or worker process then returns None

  • if this is a bootstrap process then the IO completes when the log stream completes
  • if this is a worker role then the IO never completes (pod must be deleted by the main role)
  • if this is a master role then the IO completes when the useTs completes and the task system is closed