You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a list of production adopters of Banzai Cloud's Kafka Operator (in alphabetical order):
3
-
3
+
4
4
- Adobe Experience Platform is using the Kafka Operator to enable consistent deployment, dynamic scaling, smooth upgrades and auto-balancing in our cross-cloud Kafka infrastructure. Adobe is also contributing to the open source version of the operator.
5
5
6
6
-[Banzai Cloud](https://banzaicloud.com) is using the Kafka Operator to provision, configure and manage a secure, resilient and autoscaling production ready Apache Kafka for customers.
7
7
8
-
- AffirmedNetworks is looking to use Kafka Operator to provision, configure and manage life cycle of production ready Apache Kafka. One of the use cases we are looking at, is to use Kafka to manage Event Data/Detail Record that gets generated in our applications.
8
+
- AffirmedNetworks is looking to use Kafka Operator to provision, configure and manage life cycle of production ready Apache Kafka. One of the use cases we are looking at, is to use Kafka to manage Event Data/Detail Record that gets generated in our applications.
Copy file name to clipboardExpand all lines: docs/developer.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,4 +37,4 @@ Minikube does not have a load balancer implementation, thus our envoy service wi
37
37
A possible solution to overcome this problem is to use https://github.com/elsonrodriguez/minikube-lb-patch. The operator will be able to proceed if you run the following command:
38
38
```go
39
39
kubectl run minikube-lb-patch --replicas=1 --image=elsonrodriguez/minikube-lb-patch:0.1 --namespace=kube-system
Copy file name to clipboardExpand all lines: third_party/github.com/banzaicloud/k8s-objectmatcher/README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ There is a legacy version of the lib, that is now deprecated and documented here
16
16
17
17
The library uses the same method that `kubectl apply` does under the hood to calculate a patch using the [three way merge](http://www.drdobbs.com/tools/three-way-merging-a-look-under-the-hood/240164902) method.
18
18
However for this to work properly we need to keep track of the last applied version of our object, let's call it the `original`. Unfortunately Kubernetes does
19
-
not keep track of our previously submitted object versions, but we can put it into an annotation like `kubectl apply` does.
19
+
not keep track of our previously submitted object versions, but we can put it into an annotation like `kubectl apply` does.
20
20
Next time we query the `current` state of the object from the API Server we can extract the `original` version from the annotation.
21
21
22
22
Once we have the the `original`, the `current` and our new `modified` object in place the library will take care of the rest.
There are existing libraries in the wild that can calculate a patch by giving them two different objects. If the patch is empty the two objects match and we are ready, right?
36
+
There are existing libraries in the wild that can calculate a patch by giving them two different objects. If the patch is empty the two objects match and we are ready, right?
37
37
Well not quite. JSON Merge Patch, defined by [rfc7396](https://tools.ietf.org/html/rfc7396) replaces lists completely which is not always what we need. Kubernetes defines
38
38
and uses a modified version called [strategic merge patch](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md).
39
39
40
-
Strategic Merge Patch extends the JSON Merge Patch format by adding explicit directives for deleting, replacing, ordering and merging lists.
40
+
Strategic Merge Patch extends the JSON Merge Patch format by adding explicit directives for deleting, replacing, ordering and merging lists.
41
41
It uses the go struct tag of the API objects to determine what lists should be merged and which ones should not. Worth to note it's not tied to
42
42
Kubernetes objects only, so we can use this for matching custom go structs as well.
43
43
@@ -46,21 +46,21 @@ Kubernetes objects only, so we can use this for matching custom go structs as we
46
46
#### Defaults and version compatibility
47
47
48
48
As outlined previously Kubernetes objects are amended with different default values when submitted. For example PodSpec.RestartPolicy will be set to "Always" when
49
-
ommitted from the object, so we will have a mismatch when we try to compare it later. This library uses the same functions to set the default values on the local
50
-
objects before matching so that they won't differ.
49
+
ommitted from the object, so we will have a mismatch when we try to compare it later. This library uses the same functions to set the default values on the local
50
+
objects before matching so that they won't differ.
51
51
52
-
Since the defaults functions are defined in the main kubernetes repo, there is a higher chance that objects decorated using these functions will be incompatible
52
+
Since the defaults functions are defined in the main kubernetes repo, there is a higher chance that objects decorated using these functions will be incompatible
53
53
when comparing them with objects coming from different server versions. Also since the library depends on the kubernetes repo it is more tightly coupled to it's
54
54
version.
55
55
56
-
To preserve compatibility between the client and server versions [.circleci/config.yml](.circleci/config.yml) contains jobs that run the integration test suite against Kubernetes
56
+
To preserve compatibility between the client and server versions [.circleci/config.yml](.circleci/config.yml) contains jobs that run the integration test suite against Kubernetes
57
57
versions from 1.10 to 1.14. The library itself is known and tested to be working with operators depending on Kubernetes client version 1.12 and 1.13.
58
58
59
59
#### Generated values
60
60
61
-
There are values that are generated by the API Server dynamically. To workaround this the library removes null fields from the patch as long as it's not inside a list.
62
-
(In case of lists, even if we remove null fields we would still left with `setElementOrder` directives)
63
-
This works as long as we don't set/unset complete fields on the objects conditionally, because in that case we would miss to detect a change to unset something.
61
+
There are values that are generated by the API Server dynamically. To workaround this the library removes null fields from the patch as long as it's not inside a list.
62
+
(In case of lists, even if we remove null fields we would still left with `setElementOrder` directives)
63
+
This works as long as we don't set/unset complete fields on the objects conditionally, because in that case we would miss to detect a change to unset something.
64
64
65
-
In case a field gets removed from somewhere inside a list we have to explicitly tell to ignore it. One example is NodePort in Service objects, see [service.go](service.go).
65
+
In case a field gets removed from somewhere inside a list we have to explicitly tell to ignore it. One example is NodePort in Service objects, see [service.go](service.go).
66
66
Another example is Volume and VolumeMount generated automatically for the service account token, see [pod.go](pod.go).
0 commit comments