# Kubex
Kubernetes library for Elixir.
**Note:** Up to the *0.1* release there might be sudden changes to the api.
## Installation
Install by adding `kubex` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:kubernetex, "~> 0.0.2"}]
end
```
The docs can be found at [https://hexdocs.pm/kubernetex](https://hexdocs.pm/kubernetex).
## Configuration
```elixir
config :kubex,
url: "https://x.x.x.x/",
secret: "secret.json"
```
Set the secret file that contains the Kubernetes credentials.
## Usage
Add the following line `use Kubex` to each module that uses Kubernetes.
### Namespace
```elixir
Namespace
|> name("example")
|> create
```
### Service
```elixir
port = %Service.Port{target_port: 8080, port: 80}
Service
|> name("echo", "example")
|> ports([port])
|> selector(app: "echo")
|> create
```
### Deployment
```elixir
container =
%Container{
name: "echo",
image: "gcr.io/google_containers/echoserver:1.4",
imagePullPolicy: :always,
env: [
{"REPLACE_OS_VARS", "true"},
],
ports: [8080],
}
Deployment
|> name("echo", "example")
|> replicas(1)
|> labels(app: "echo")
|> containers([container], ["docker-registry-secret"])
|> create
```
### Namespace
```Ingress
path =
%Path{
path: "/",
service: "echo",
port: 80,
}
Ingress
|> name("echo", "example")
|> annotations(["kubernetes.io/tls-acme": "true", "kubernetes.io/ingress.class": "nginx"])
|> paths("echo.example.com", [path])
|> create
```
### Options
It is possible to pass the option `dry: true` to `&create/1`.
The `dry` option will output the use URL and posted JSON
without actually creating the resource.