freya

Kubernetes Operator library for Scala

License

License

GroupId

GroupId

io.github.novakov-alexey
ArtifactId

ArtifactId

freya_2.13
Last Version

Last Version

0.1.4
Release Date

Release Date

Type

Type

jar
Description

Description

freya
Kubernetes Operator library for Scala
Project URL

Project URL

https://github.com/novakov-alexey/freya
Project Organization

Project Organization

io.github.novakov-alexey
Source Code Management

Source Code Management

https://github.com/novakov-alexey/freya

Download freya_2.13

How to add to project

<!-- https://jarcasting.com/artifacts/io.github.novakov-alexey/freya_2.13/ -->
<dependency>
    <groupId>io.github.novakov-alexey</groupId>
    <artifactId>freya_2.13</artifactId>
    <version>0.1.4</version>
</dependency>
// https://jarcasting.com/artifacts/io.github.novakov-alexey/freya_2.13/
implementation 'io.github.novakov-alexey:freya_2.13:0.1.4'
// https://jarcasting.com/artifacts/io.github.novakov-alexey/freya_2.13/
implementation ("io.github.novakov-alexey:freya_2.13:0.1.4")
'io.github.novakov-alexey:freya_2.13:jar:0.1.4'
<dependency org="io.github.novakov-alexey" name="freya_2.13" rev="0.1.4">
  <artifact name="freya_2.13" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.github.novakov-alexey', module='freya_2.13', version='0.1.4')
)
libraryDependencies += "io.github.novakov-alexey" % "freya_2.13" % "0.1.4"
[io.github.novakov-alexey/freya_2.13 "0.1.4"]

Dependencies

compile (6)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.13.1
io.fabric8 : kubernetes-client jar 4.7.1
io.fabric8 : kubernetes-model jar 4.7.1
org.typelevel : cats-effect_2.13 jar 2.0.0
com.typesafe.scala-logging : scala-logging_2.13 jar 3.9.2
com.fasterxml.jackson.module : jackson-module-scala_2.13 jar 2.10.2

test (7)

Group / Artifact Type Version
io.fabric8 : kubernetes-server-mock jar 4.7.1
org.scalatest : scalatest_2.13 jar 3.1.0
org.scalacheck : scalacheck_2.13 jar 1.14.3
org.scalatestplus : scalatestplus-scalacheck_2.13 jar 3.1.0.0-RC2
ch.qos.logback : logback-classic jar 1.3.0-alpha4
com.kjetland : mbknor-jackson-jsonschema_2.13 jar 1.0.36
com.github.andyglow : scala-jsonschema-api_2.13 jar 0.2.2

Project Modules

There are no modules declared in this project.

Freya

Build Status Codacy Badge Maven Central Cats friendly

freya_logo

Freya is a Scala library to implement custom controllers for Kubernetes (K8s) easily. An implementation of custom controller is also known as Operator Pattern. Freya based on fabric8 kubernetes client and inspired by abstract-operator Java library.

Freya main features:

  1. Two options to implement your Kubernetes Operator:
    • Custom Resource Definition (CRD) based
    • ConfigMap based
  2. Scala Case Classes as Kubernetes resource specification. Serialization and deserialization of case classes is done by Freya using Circe or Jackson Scala Module library.
  3. Auto-restart of custom controller upon k8s api-server disconnect.
  4. Auto-deployment of CRDs, no YAML files to be written.
  5. Auto-deployment of JSON Schema for CRD validation.
  6. Effect management and Functional Programming powered by Cats-Effect.

Examples

SBT dependency

Freya supports Scala 2.13 only at the moment. Main dependency:

"io.github.novakov-alexey" %% "freya-core" % "@VERSION@" 

Second module has two options: circe or jackson. One of them needs to be added into your dependencies to be able to read custom resource JSON/YAML text or write resource status as JSON

Circe:

"io.github.novakov-alexey" %% "freya-circe" % "@VERSION@" 

Jackson:

"io.github.novakov-alexey" %% "freya-jackson" % "@VERSION@"

Documentation

Microsite: https://novakov-alexey.github.io/freya/docs/

Versions

Version
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0