Skip to content

v8.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 17 Jan 12:02

8.0.0 (2024-01-17)

Bug Fixes

  • add entity UID into event name to generate relation. (8c1848f), closes #681
  • allow the CLI to be used in NET6 and NET7 (0b4aa96)
  • cli: readd c# support. (a508b12)
  • correct dependency (7768870)
  • deps: update dependencies to v0.48.0 (#667) (270cb94)
  • deps: update dependency roslynator.analyzers to v4.6.0 (8430f7a)
  • deps: update dependency roslynator.analyzers to v4.6.1 (c5b1ccf)
  • deps: update dependency roslynator.analyzers to v4.6.2 (b6ffb31)
  • deps: update dependency roslynator.analyzers to v4.6.4 (4c802d6)
  • deps: update dependency roslynator.analyzers to v4.7.0 (c0a78f5)
  • deps: update dependency roslynator.analyzers to v4.8.0 (93c562e)
  • deps: update dependency roslynator.analyzers to v4.9.0 (db38a6a)
  • deps: update dependency sonaranalyzer.csharp to v9.12.0.78982 (c3c2443)
  • deps: update dependency sonaranalyzer.csharp to v9.14.0.81108 (c64c094)
  • deps: update dependency sonaranalyzer.csharp to v9.15.0.81779 (fceda09)
  • deps: update dependency sonaranalyzer.csharp to v9.16.0.82469 (14ddb86)
  • generator: correctly build nuget package (f9f14d8)
  • include build output in generator package (014a7a4)
  • make JsonDiffer thread safe (#683) (5379ee3)
  • rbac: do not mix apigroups. (0b8cbab), closes #583
  • ToExpression(this IEnumerable selectors) extension method returns wrong result (d13cadf)
  • Transpiler inconsistencies for CRDs (#688) (39f5a29)
  • use correct targets file (5b934d0)
  • use get instead of list in kubernetes client. (83c9210), closes #647
  • use resource version in watcher to get newest events from API. (dd94ff8), closes #675

Code Refactoring

Features

  • abstractions: add custom kubernetes entity helper (c62619f)
  • add .net8 and allow .net6 in generator (#670) (ec43825), closes #641 #659 #633
  • add runtime generated entity clients (3b48147)
  • cli: add certificate generator command (#620) (895a8d0)
  • cli: add generate docker file command and optimize it (fb06960)
  • cli: add generate operator command (407d01a)
  • cli: add operator role and role binding for rbac (9a8c28c)
  • client: add async/sync variants (44df7e3)
  • client: add create, update, delete methods for enumerable entities (88cc35f)
  • client: Add Kubernetes Client package (0629746)
  • client: Use true generics again (#640) (2154240)
  • cli: management install/uninstall commands (#618) (03cd894)
  • generator: add controller registrations (#623) (1697d26)
  • generator: generate entity initializer (static and partial) (77458b6)
  • operator: add better error handling and reconnection logic (318541c)
  • operator: add build targets extension for automatic resource generation (7df5d48)
  • operator: add leader election via KubernetesClient (#627) (d07ad0d)
  • operator: add namespaced operators (b967f37)
  • operator: register kubernetes client as transient (154ba67)
  • operator: reworked entity requeue logic (3f6b862)
  • transpiler: allow metadata to be created from actual types. (ef91bd1)
  • upgrade KubernetesClient (6896435)
  • web operator: add localtunnel feature for easy webhook development. (dbb3f85)
  • web-operator: add conversion webhooks (#639) (6383a15), closes #137
  • web-operator: Add validation webhooks. (#631) (92af569)
  • webhook-generator: add mutation webhook configs. (c1e82d6)
  • webhook-generator: only use operations that are overwritten. (ad1e7ae)
  • webhooks: add mutation webhooks. (5441d1e)
  • webhooks: automatic installer generation for webhook operators (#632) (6ce343d)

BREAKING CHANGES

  • web-operator: The CLI (which broke anyway...) does now
    generate everyting together and determines based on the
    project if there are webhooks or not. This results in one
    config folder instead of separate folders for CRD, RBAC, etc.
    With this, conversion webhooks can inject their configuration
    into the CRDs. Otherwise, this would be a cumbersome process.
    If the need for single topic generation arises again (for example only CRDs),
    then these generators can be added again.
  • webhooks: This overhauls the mutation webhooks.
    Use the documentation to see how they work.
    It is similar to validation webhooks, but with
    changed results.

Signed-off-by: Christoph Bühler [email protected]

  • webhooks: Webhooks are not generated
    via the custom command for webhooks, nor are they
    automatically installed at runtime. For now, webhook
    definitions, certificates, and services are created
    at buildtime.
  • webhooks: This removes the runtime exeuction
    of the webhook registrar magic.
  • web-operator: This overhauls the way
    webhooks worked. Webhooks now run
    with normal ASP.net ApiControllers.
    To use a webhook, refer to the documentation.
    Basically, create a subclass of the validation
    webhook class and decorate it with the
    correct validation attribute. Then, the
    webhook will run. Other elements
    like automatic install will follow this
    preview release.
  • operator: The targets file contains
    other properties than before. Refer to the
    documentation for explicit details.
  • operator: the IEventManager is not part
    of the operator anymore. To publish events, inject the
    EventPublisher delegate and use it to publish
    events on entities with reason and message.
    The name of the events are not base32 encoded but
    hex encoded sha512 values now.
  • operator: controllers do not have
    return values anymore. To requeue an entity,
    use the EntityRequeue<_> delegate. When
    an entity is requeued, the reconcile loop
    is called after the timeout. If - during this
    timeout - the entity is modified or deleted,
    the timeout will be cancelled.
  • client: all calls that were
    async before are now sync. There are
    async variants of all calls with the
    Async suffix.

Signed-off-by: Christoph Bühler [email protected]

  • finalizer: Finalizers are registered
    with an identifier now. The identifier is
    generated by the KubeOps.Generator when used.
    Finalizers are attached via EntityFinalizerAttacher<>
    delegates that attach the finalizer to an entity.
  • client: The IKubernetesClient interface
    and implementation now require the TEntity typeparam
    instead of each method providing one. The implementation
    is instanced with EntityMetadata to allow the operator
    to inject the clients for each entity.
  • cli: This allows the operator
    to create a valid selfsigned CA and server
    certificate ad-hoc in the cluster when using
    webhooks. Instead of generating the certificates
    locally and using them as config-map in kustomize,
    the operator can run the cli to generate the service
    certificate.
  • cli: The install / uninstall commands
    now search for a project or solution file to parse the
    CRDs from a solution or a project.
  • generator commands
    may define a csproj or sln file on where the
    entities or other elements are located.
    If no file is provided, the current directory
    is searched and the command fails if none is found.
  • This removes the entity and rbac conversion
    from the operator package and extracts them into their own
    KubeOps.Transpiler package. All static methods there
    are used for transpilation of the entities and rbac attributes.
    Additional logic for Lease, events and such will reside
    in the CLI.
  • This removes several features from the
    7.x version. Required / missing features will
    be added to the v8 again. As for the first
    pre release, only the simple watcher and
    reconciliation loop is present. No finalizer, events, leadership,
    whatsoever is present in the library. The initial pre.0
    release is meant to be the base for further implementations.
    V8 will - hopefully - contain all required features again.
  • The operator does not have commands
    and command line executions packaged into the library.
    A new dotnet tool is required for CRD generation and
    other generators.
  • All abstractions are extracted into
    a KubeOps.Abstractions package.
  • The operator is not required to have
    ASP.net as default, it works with a normal console
    host application as well.
  • master is renamed to main and
    maintenance and release branches are added.