Git Product home page Git Product logo

k8s's Introduction

K8s

Build Status Module Version Coverage Status Last Updated

Hex Docs Total Download License

K8s - Kubernetes API Client for Elixir

Features

  • A client API for humans ๐Ÿ‘ฉ๐Ÿผ๐Ÿง‘๐Ÿ‘ฉ๐Ÿป๐Ÿ‘ฉ๐Ÿฝ๐Ÿ‘ฉ๐Ÿพ๐Ÿง‘๐Ÿป๐Ÿง‘๐Ÿฝ๐Ÿง‘๐Ÿง‘๐Ÿพ๐Ÿ‘จ๐Ÿผ๐Ÿ‘จ๐Ÿพ๐Ÿ‘จ๐Ÿฟ
  • ๐Ÿ”ฎ Kubernetes resources, groups, and CRDs are autodiscovered at boot time. No swagger file to include or override.
  • Client supports standard HTTP calls, async batches, wait on status โฒ๏ธ, and watchers ๐Ÿ‘€
  • โš™๏ธ HTTP Request middleware
  • Multiple clusters โš“ โš“ โš“
  • ๐Ÿ” Multiple authentication credentials
    • ๐Ÿค– serviceaccount
    • token
    • ๐Ÿ“œ certificate
    • auth-provider
    • Pluggable auth providers!
  • ๐Ÿ†— Tested against Kubernetes versions 1.10+ and master
  • ๐Ÿ› ๏ธ CRD support
  • ๐Ÿ“ˆ Integrated with :telemetry
  • โ„น๏ธ Kubernetes resource and version helper functions
  • ๐Ÿงฐ Kube config file parsing
  • ๐ŸŽ๏ธ Macro free; fast compile & fast startup

Installation

The package can be installed by adding :k8s to your list of dependencies in mix.exs:

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

Usage

Check out the Usage Guide for in-depth examples.

Most functions are also written using doctests.

If you are interested in building Kubernetes Operators or Schedulers, check out Bonny.

tl;dr Examples

Configure a cluster connection

Cluster connections can be created using the K8s.Conn module.

K8s.Conn.from_file/1 will use the current context in your kubeconfig.

{:ok, conn} = K8s.Conn.from_file("path/to/kubeconfig.yaml")

K8s.Conn.from_file/2 accepts a keyword list to set the :user, :cluster, and/or :context

Connections can also be created in-cluster from a service account.

{:ok, conn} = K8s.Conn.from_service_account("/path/to/service-account/directory")

Check out the connection guide for additional details.

Creating a deployment

{:ok, conn} = K8s.Conn.from_file("path/to/kubeconfig.yaml")

opts = [namespace: "default", name: "nginx", image: "nginx:nginx:1.7.9"]
{:ok, resource} = K8s.Resource.from_file("priv/deployment.yaml", opts)

operation = K8s.Client.create(resource)
{:ok, deployment} = K8s.Client.run(conn, operation)

Listing deployments

In a namespace:

{:ok, conn} = K8s.Conn.from_file("path/to/kubeconfig.yaml")

operation = K8s.Client.list("apps/v1", "Deployment", namespace: "prod")
{:ok, deployments} = K8s.Client.run(conn, operation)

Across all namespaces:

{:ok, conn} = K8s.Conn.from_file("path/to/kubeconfig.yaml")

operation = K8s.Client.list("apps/v1", "Deployment", namespace: :all)
{:ok, deployments} = K8s.Client.run(conn, operation)

Getting a deployment

{:ok, conn} = K8s.Conn.from_file("path/to/kubeconfig.yaml")

operation = K8s.Client.get("apps/v1", :deployment, [namespace: "default", name: "nginx-deployment"])
{:ok, deployment} = K8s.Client.run(conn, operation)

k8s's People

Contributors

alexgleason avatar bforchhammer avatar corka149 avatar coryodaniel avatar darrenclark avatar e-nikolov avatar overbryd avatar praveenperera avatar rbino avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.