Skip to content

Commit

Permalink
Merge pull request #48 from slok/0.3.0
Browse files Browse the repository at this point in the history
Bump 0.3.0
  • Loading branch information
slok authored Jul 2, 2018
2 parents 55107c5 + fad6683 commit 02f8518
Show file tree
Hide file tree
Showing 28 changed files with 248 additions and 100 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## x.x.x / xxxx-xx-xx
## 0.3.0 / 2018-07-02

This release breaks handler interface to allow passing a context (used to allow tracing).

Expand Down
9 changes: 5 additions & 4 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,6 @@
name = "k8s.io/kubernetes"
version = "v1.10.5"

# Fixes pinning versions for other dependencies with not correct dependency settings.

# Fix for "k8s.io/apimachinery"
[[override]]
name = "github.com/json-iterator/go"
revision = "f2b4162afba35581b6d4a50d3b8f34e33c144682"

[prune]
go-tests = true
unused-packages = true
70 changes: 35 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
Kooper [![Build Status][travis-image]][travis-url] [![Go Report Card][goreport-image]][goreport-url] [![GoDoc][godoc-image]][godoc-url]
======
# Kooper [![Build Status][travis-image]][travis-url] [![Go Report Card][goreport-image]][goreport-url] [![GoDoc][godoc-image]][godoc-url]

Kooper is a simple Go library to create Kubernetes [operators](https://coreos.com/operators/) and [controllers](https://github.com/kubernetes/community/blob/master/contributors/devel/controllers.md).

## What is Kooper?

Kooper is a set of utilities packed as a library or framework to easily create Kubernetes controllers and operators.

There is a little of discussion of what a controller and what an operator is, see [here](https://stackoverflow.com/questions/47848258/kubernetes-controller-vs-kubernetes-operator) for more information.
There is a little of discussion of what a controller and what an operator is, see [here](https://stackoverflow.com/questions/47848258/kubernetes-controller-vs-kubernetes-operator) for more information.

In Kooper the concepts of controller an operator are very simple, a controller controls the state of a resource in Kubernetes, and an operator is a controller that initializes custom resources (CRD) and controls the state of this custom resource.

## Features

* Easy and decoupled library.
* Well structured and a clear API.
* Remove all duplicated code from every controller and operator.
* Uses the tooling already created by Kubernetes.
* Remove complexity from operators and controllers so the focus is on domain logic.
* Easy to mock and extend functionality (Go interfaces!).
* Only support CRD, no TPR support (Kubernetes >=1.7).
* Controller metrics.
* Leader election.
* Tracing with [Opentracing][opentracing-url].
- Easy and decoupled library.
- Well structured and a clear API.
- Remove all duplicated code from every controller and operator.
- Uses the tooling already created by Kubernetes.
- Remove complexity from operators and controllers so the focus is on domain logic.
- Easy to mock and extend functionality (Go interfaces!).
- Only support CRD, no TPR support (Kubernetes >=1.7).
- Controller metrics.
- Leader election.
- Tracing with [Opentracing][opentracing-url].

## Example

Expand Down Expand Up @@ -94,13 +93,13 @@ At this moment there is no standard, although there are some projects like [rook

Spotahome studied these projects before developing Kooper and they didn't fit the requirements:

* Clear and maintanable code.
* Easy to test and mock.
* Well tested library.
* Easy and clear programming API.
* Good abstraction and structure to focus on domain logic (the meat of the controller).
* Reduce complexity in all the operators and controllers that use the library.
* Not only operators, controllers as first class citizen also.
- Clear and maintanable code.
- Easy to test and mock.
- Well tested library.
- Easy and clear programming API.
- Good abstraction and structure to focus on domain logic (the meat of the controller).
- Reduce complexity in all the operators and controllers that use the library.
- Not only operators, controllers as first class citizen also.

## Installing

Expand All @@ -116,11 +115,12 @@ Managing a project that uses different kubernetes libs as dependencies can be tr

## Compatibility matrix

| | Kubernetes 1.8 | Kubernetes 1.9 | Kubernetes 1.10 |
|---------------------|----------------|----------------|-----------------|
| kooper 0.1 ||| ? |
| kooper 0.2 ||| ? |
| kooper HEAD | ? | ? ||
| | Kubernetes 1.8 | Kubernetes 1.9 | Kubernetes 1.10 | Kubernetes 1.11 |
| ----------- | -------------- | -------------- | --------------- | --------------- |
| kooper 0.1 ||| ? | ? |
| kooper 0.2 ||| ? | ? |
| kooper 0.3 | ? | ?+ || ? |
| kooper HEAD | ? | ? | ?+ ||

Based on this matrix Kooper needs different versions of Kubernetes dependencies.

Expand Down Expand Up @@ -154,24 +154,24 @@ Kooper comes with different topics as documentation.

### Core

* [Basic concepts](docs/concepts.md)
* [Controller tutorial](docs/controller-tutorial.md)
* [Operator tutorial](docs/operator-tutorial.md)
- [Basic concepts](docs/concepts.md)
- [Controller tutorial](docs/controller-tutorial.md)
- [Operator tutorial](docs/operator-tutorial.md)

### Other

* [Metrics](docs/metrics.md)
* [Logger](docs/logger.md)
* [Leader election](docs/leader-election.md)
* [Tracing](docs/tracing.md)
- [Metrics](docs/metrics.md)
- [Logger](docs/logger.md)
- [Leader election](docs/leader-election.md)
- [Tracing](docs/tracing.md)

The starting point would be to check the [concepts](docs/concepts.md) and then continue with the controller and operator tutorials.

## Who is using kooper

* [redis-operator](https://github.com/spotahome/redis-operator)
* [node-labeler-operator](https://github.com/barpilot/node-labeler-operator)
* [source-ranges-controller](https://github.com/jeffersongirao/source-ranges-controller)
- [redis-operator](https://github.com/spotahome/redis-operator)
- [node-labeler-operator](https://github.com/barpilot/node-labeler-operator)
- [source-ranges-controller](https://github.com/jeffersongirao/source-ranges-controller)

[travis-image]: https://travis-ci.org/spotahome/kooper.svg?branch=master
[travis-url]: https://travis-ci.org/spotahome/kooper
Expand Down
12 changes: 3 additions & 9 deletions vendor/github.com/json-iterator/go/Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/json-iterator/go/Gopkg.toml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions vendor/github.com/modern-go/reflect2/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions vendor/github.com/modern-go/reflect2/.travis.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/modern-go/reflect2/Gopkg.toml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 69 additions & 0 deletions vendor/github.com/modern-go/reflect2/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/modern-go/reflect2/go_below_17.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 19 additions & 3 deletions vendor/github.com/modern-go/reflect2/reflect2.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 02f8518

Please sign in to comment.