K8s

K8s - A Kubernetes client for Elixir

Build StatusCoverage StatusHex.pmDocumentationHex.pm

Installation

If available in Hex, the package can be installed by adding k8s to your list of dependencies in mix.exs:

def deps do
  [
    {:k8s, "~> 0.2"}
  ]
end

Features

Non-features

Registering Clusters

Clusters can be registered via config.exs or directly with K8s.Cluster.register/2.

Clusters are referenced by name (:default below) when using a K8s.Client. Multiple clusters can be registered via config.

This library ships with Kubernetes specs 1.10, 1.11, 1.12, and 1.13.

Registering clusters via config

Adding a cluster named :default using ~/.kube/config. Defaults to current-context.

config :k8s,
  clusters: %{
    default: %{
      conf: "~/.kube/config"
    }
  }

Using an alternate context:

config :k8s,
  clusters: %{
    default: %{
      conf: "~/.kube/config"
      conf_opts: [context: "other-context"]
    }
  }

Setting cluster and user explicitly:

config :k8s,
  clusters: %{
    default: %{
      conf: "~/.kube/config"
      conf_opts: [user: "some-user", cluster: "prod-cluster"]
    }
  }

Registering clusters directly

The below will register a cluster named "1.13" using ~/.kube.config to connect. There are many options for loading a config, this will load the user and cluster from the current-context.

name = "1.13"
conf = K8s.Conf.from_file("~/.kube/config")
K8s.Cluster.register(name, conf)

Note: Kubernetes API specs can be downloaded using mix k8s.swagger --version 1.13.

Adding authorization providers

config :k8s, auth_providers: [My.Custom.Provider]

Providers are checked in order, the first to return an authorization struct wins.

Custom providers are processed before default providers.

See Certicate and Token for protocol and behavior implementations.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/k8s.