kopf

A Python framework to write Kubernetes operators in just a few lines of code

MIT License

Downloads
400.1K
Stars
2K
Committers
53

Bot releases are hidden (Show)

kopf - 0.28.3

Published by nolar almost 4 years ago

Enhancements:

  • Renamed @kopf.on.this to @kopf.subhandler for readability. #618

Bugfixes:

  • Fixed the resource discovery in case of parallel requests (improper locks & checks). #615

Internals:

  • Fixed the usage example of kopf.execute() to be asynchronous. #618
  • CI functional tests fixed for ResourceWarnings due to pykube-ng's session left-overs. #619 #608
kopf - 0.28.2

Published by nolar almost 4 years ago

Bugfixes:

  • Fixed superseding of one cause by another (deletion-during-creation/-update/-resume, update-during-resume, etc). #607 #606
kopf - 0.28.2rc1

Published by nolar almost 4 years ago

Bugfixes:

  • Fixed superseding of one cause by another (deletion-during-creation/-update/-resume, update-during-resume, etc). #607 #606
kopf - 0.28.1

Published by nolar almost 4 years ago

Bugfixes:

  • No more false "patching failed with inconsistencies" warning for CRDs with status as a subresource. #588

Internal:

  • Back-ported GitHub Actions for CI tests. #592, originally #582
kopf - 0.28

Published by nolar about 4 years ago

General topic: stability, resilience, recoverability, better logging and error handling.

New features:

  • JSON logging with --log-format=json. #544
  • Plain-text logging --log-format=plain. #544

Bugfixes:

  • On-field handlers were triggered for non-existent fields with NoneNone change. #523
  • Sub-handlers' state was not purged, preventing their execution in the future. #517
  • Timers were ticking forever after the resource was deleted (if there were no finalizers). #548
  • Persisted states of executed and then filtered-out handlers were not purged. #557

Resilience improvements:

  • Annotations from other Kopf-based operators are fully ignored to avoid ping-pong effects. #539 #538
  • The operator will force-stop itself by SIGKILL after 10 minutes of attempts to stop gracefully. #543
  • Crash the whole operator on unrecoverable errors in watchers/workers. #509
  • Throttle individual resource processing on unexpected errors. #510
  • Extra exceptions are intercepted and ignored for k8s-event posting. #507
  • Treat client timeouts during watches similar to other API errors. #506
  • Handle all connection errors from the initial streaming request. #512

Experience improvements:

  • Annotations restrictions on key length are reworked to allow longer names (v2/v1 keys). #529
  • Annotations values are now compacted (no spaces) for the better visual outlook. #516
  • Log/warn when the resulting patched object does not match the intended patch. #527
  • Log when the patched object unexpectedly disappeared (e.g. was deleted). #559
  • Log K8s API error explanations from K8s API itself, not from the HTTP client library. #558
  • Filtered-out resources do not create phantom logs & do not get annotated anymore. #545
  • Cluster-scoped objects are logged by their name, without "None" as the namespace. #544
  • Better phrasing for some log messages to avoid confusion. #540
  • Documentation fixes. #530

Internal changes:

  • The first release since the fork. #502 #500 #505 #546
  • CI feedback is sped up from ≈40-50 mins to ≈5 mins per push. #536 #537
  • K3d/K3s is used for CI functional/integration testing; Minikube is for nightly tests. #536 #547
  • K8s versions are updated for CI builds. #501
  • Imports are sorted with isort. #525 #531
  • Added tests for operators' peering. #519
  • Added tests for logging & loggers. #544
  • Get rid of mocks for causes & registries, use normal classes. #521
  • Time-based tests are stabilised (though not fully fixed). #534 #528 #520 #522
  • Asyncio tasks are now named in Python 3.8+, which makes the debugging easier. #542
  • Python 3.9 support. #561
kopf - 0.27.1

Published by nolar about 4 years ago

Bugfixes:

  • Support Python 3.9 with Kopf's 0.27 codebase and features. #562
kopf - 0.28rc6

Published by nolar about 4 years ago

Experience improvements:

  • Log when the patched object disappears (e.g. is deleted). Omit inconsistency warnings for this. #559
kopf - 0.28rc5

Published by nolar about 4 years ago

Experience improvements:

  • K8s API errors contain the explanations from K8s API itself, not from an HTTP client library. #558
kopf - 0.28rc4

Published by nolar about 4 years ago

Bugfixes:

  • Persisted states of executed and then filtered-out handlers were not purged. #557
kopf - 0.28rc3

Published by nolar about 4 years ago

Bugfixes:

  • Timers were ticking forever after the resource was deleted (if there were no finalizers). #548
kopf - 0.28rc2

Published by nolar about 4 years ago

General topic: stability, resilience, recoverability, better logging and error handling.

New features:

  • JSON logging with --log-format=json. #544
  • Plain-text logging --log-format=plain. #544

Bugfixes:

  • On-field handlers were triggered for non-existent fields with NoneNone change. #523
  • Sub-handlers' state was not purged, preventing their execution in the future. #517

Resilience improvements:

  • Annotations from other Kopf-based operators are fully ignored to avoid ping-pong effects. #539 #538
  • The operator will force-stop itself by SIGKILL after 10 minutes of attempts to stop gracefully. #543
  • Crash the whole operator on unrecoverable errors in watchers/workers. #509
  • Throttle individual resource processing on unexpected errors. #510
  • Extra exceptions are intercepted and ignored for k8s-event posting. #507
  • Treat client timeouts during watches similar to other API errors. #506
  • Handle all connection errors from the initial streaming request. #512

Experience improvements:

  • Annotations restrictions on key length are reworked to allow longer names (v2/v1 keys). #529
  • Annotations values are now compacted (no spaces) for the better visual outlook. #516
  • Log/warn when the resulting patched object does not match the intended patch. #527
  • Filtered-out resources do not create phantom logs & do not get annotated anymore. #545
  • Cluster-scoped objects are logged by their name, without "None" as the namespace. #544
  • Better phrasing for some log messages to avoid confusion. #540
  • Documentation fixes. #530

Internal changes:

  • The first release since the fork. #502 #500 #505 #546
  • CI feedback is sped up from ≈40-50 mins to ≈5 mins per push. #536 #537
  • K3d/K3s is used for CI functional/integration testing; Minikube is for nightly tests. #536 #547
  • K8s versions are updated for CI builds. #501
  • Imports are sorted with isort. #525 #531
  • Added tests for operators' peering. #519
  • Added tests for logging & loggers. #544
  • Get rid of mocks for causes & registries, use normal classes. #521
  • Time-based tests are stabilised (though not fully fixed). #534 #528 #520 #522
  • Asyncio tasks are now named in Python 3.8+, which makes the debugging easier. #542
kopf - 0.5

Published by nolar about 4 years ago

Originally released on 2019-03-27 12:54:00+00:00 (link).

Initial import of the squashed repository.

kopf - 0.0

Published by nolar about 4 years ago

Originally released on 2019-03-27 12:03:34+00:00 (link).

kopf - 0.6

Published by nolar about 4 years ago

Originally released on 2019-03-27 13:58:12+00:00 (link).

kopf - 0.7

Published by nolar about 4 years ago

Originally released on 2019-04-16 11:53:26+00:00 (link).

kopf - 0.6.1

Published by nolar about 4 years ago

Originally released on 2019-03-28 13:12:39+00:00 (link).

kopf - 0.8

Published by nolar about 4 years ago

Originally released on 2019-04-18 13:40:04+00:00 (link).

kopf - 0.9

Published by nolar about 4 years ago

Originally released on 2019-04-24 15:56:00+00:00 (link).

  • Peering mode auto-detection by default, falling back to standalone if not configured. #33 #38
kopf - 0.9.1

Published by nolar about 4 years ago

Originally released on 2019-04-25 09:22:10+00:00 (link).

  • Better PyPI's README page #41
kopf - 0.10

Published by nolar about 4 years ago

Originally released on 2019-04-26 15:15:00+00:00 (link).

  • Follow the Kubernetes "eventual consistency" principle and react only to the latest events, ignore the past replayed events #43 #42
  • Tests for the diff calculations #40 #48
Package Rankings
Top 1.6% on Pypi.org
Top 20.18% on Conda-forge.org
Badges
Extracted from project README
GitHub CI Supported Python versions codecov Coverage Status
Related Projects