Skip to content
This repository has been archived by the owner on Sep 14, 2020. It is now read-only.

0.23rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@nolar nolar released this 13 Nov 14:17
· 289 commits to master since this release
445cfd6

TL;DR: Massive refactoring, renames, code moves. Generally, should be backward-compatible.

RISKY CHANGES (can be BREAKING, should be not):

  • Authentication and API talking are fully reworked: pykube-ng and kubernetes clients are now piggybacked by default to extract the endpoints and credentials, but are not used for the API communication. This can break API connectivity in some cases. #226 #227
  • In-memory containers introduced to carry the technical information/objects/flags for individual resources. This can lead to increased memory usage in huge clusters with thousands of monitored resources. #230
  • @kopf.on.resume() handlers were fixed, and can now execute when previously they were not executed by mistake, but this could be taken as an expected behaviour. This can lead to massive patches of all objects on every operator startup. #230
  • Massive internal renames and code moves; not exposed publicly, unless hacks or monkey-patching were used. #209 #210 #211
  • cause.event is renamed to cause.reason to avoid terminology conflicts. #201

New features:

  • @kopf.on.startup() handlers for operator initialisation. #225
  • @kopf.on.cleanup() handlers for operator shutdown. #225
  • @kopf.on.login() custom authentication handlers. #226
  • @kopf.on.probe() handlers for liveness metrics. #226
  • Pod's liveness probes with kopf run --liveness. #228
  • Explicit owner is not needed in kopf.adopt() and hierarchy methods, current object is used by default. #203
  • retries= limiter for handlers in addition to timeout=. #222
  • errors=TEMPORARY, errors=PERMANENT, errors=IGNORED modes for handlers. #222

Bugfixes:

  • @kopf.on.resume() handlers are not repeated every few minutes for no reason. #229 #230
  • @kopf.on.resume() are executed if they go after the on-create/on-update handlers. #230
  • @kopf.on.resume() can be retried in case of temporary or arbitrary errors. #230
  • @kopf.on.resume() can have sub-handlers. #230
  • There can be 2+ of the@kopf.on.resume() handlers. #230
  • spec, status, metadata fields are not added to the body when absent. #198
  • Ignore asyncio signal handlers on Windows. #220

Internal changes:

  • Fully type-annotated in the code (not in the tests). #195 #196 #197 #200 #201
  • Fully asynchronous internally (asyncio/aiohttp); synchronous pykube-ng client is removed. #217 #227
  • Handler outcomes and persistent state management separated from each other. #221
  • E2E tests are now isolated from each other, preventing false-positives. #205
  • The latest k8s & minikube versions are used in e2e tests. #193