Skip to content

Releases: wasmCloud/wadm

v0.14.0

20 Aug 14:58
v0.14.0
Compare
Choose a tag to compare

This release of wadm includes a whole suite of quality of life improvements, fixes, and new features.

Features

  • The wadm client API now returns the name and the version from deploying a model, which previously was difficult to infer if you didn't know the version but wanted to deploy the latest version of an application
  • wadm's host cleanup interval has been reduced to 70 seconds, requiring only two missed heartbeats instead of four. This will cut down the time to remove a host that no longer exists. If you're running wadm in a highly distributed scenario where you expect for hosts to have intermittent network connections, you may want to re-adjust this value to 120 seconds to keep the previous functionality.
  • The BackoffWrapper for scalers now has the ability to correlate failure events to particular scalers, reporting failed events as failed scaler statuses. This also comes with a 5 second backoff for now, which is enough to prevent hot-loops for reconciliation. Most users will find this via wash app status, which has been revamped in wash 0.31.0

Fixes and improvements

  • Link scalers will now create links when a component is the source or target of a link when that component starts, previously we only did this when the component was the source
  • All WIT bindings / helpers are updated

What's Changed

Full Changelog: v0.13.1...v0.14.0

v0.13.1

05 Aug 16:02
v0.13.1
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.13.0...v0.13.1

v0.13.0

01 Aug 16:35
v0.13.0
Compare
Choose a tag to compare

What's Changed

The wadm manifest has a new block, policies, and a new streamlined syntax for link traits with the addition of secrets. Both of these changes are backwards compatible.

Secrets

Secret configuration can now be defined for components, providers, and links. For components and providers, the secrets: block is now available in the component properties: section, alongside config. The secret should be named however the component or provider refers to it in code, the policy field should point to an appropriate policy that configures the secrets backend, and then the key, field, and version properties should indicate how to reference the secret in the backend itself.

  components:
    - name: http-component
      type: component
      properties:
        image: ghcr.io/wasmcloud/test-fetch-with-token:0.1.0-fake
        secrets:
          # wasmCloud will fetch this secret from the vault backend
          - name: some-api-token
            properties:
              policy: vault
              key: secrets/test/value
              field: api-token
              version: 1

Policies

With the addition of secrets in wasmCloud, secrets backends often require more information in order to authenticate a component. In the case of Vault for example, the secrets backend requires knowledge of the role name and mount path. If you're using secrets, ensure you define an appropriate policy for the backend, and then refer to that policy by name

spec:
  policies:
    - name: vault
      type: policy.secret.wasmcloud.dev/v1alpha1
      properties:
        backend: 'vault'
        role_name: 'demo-role'
        mount_path: 'jwt'

Links

The link trait definition now deprecates the source_config, target_config, and target: <name> properties in favor of a new streamlined syntax:

        - type: link
          properties:
            namespace: wasi
            package: keyvalue
            interfaces: [atomics, store]
            source:
              config:
                - name: redis-url
                  properties:
                    url: 127.0.0.1:6379
            target:
              name: kvredis
              secrets:
                - name: redis_password
                  properties:
                    policy: nats-kv
                    key: redis_password

The link source and target blocks now have config: and secrets: nested properties for defining config and secrets, respectively. To simplify the blocks, the target: name: <name> field is now nested in order to organize all target information in one place. This change is backwards compatible and wadm will automatically update an application manifest with the source_config or target_config blocks before storage. Put another way, you can use the following script to update any application manifests:

wash app put wadm.yaml
wash app get <app-name> > wadm-updated.yaml

Features

  • Add support for secrets in manifests - Breaking change: introduces the ability to manage secrets directly within the manifests. (#307)
  • Retry state updates - Added a feature to automatically retry state updates to improve reliability. (#315)
  • Add policy configuration block - Introduces a new block for configuring policies. (#306)
  • Added WIT bindings for OAM types and subscription method - Enables OAM type support and a new subscription method. (#301)

Bug Fixes

  • Correctly emit a validation error if a backend key in a policy is missing - Ensures that a missing backend key in a policy results in a validation error. (#344)
  • Copy backend key to top level in a generated config value - Fixes an issue where the backend key was not correctly copied. (#343)
  • Write out policy data in a secret config correctly - Corrects the way policy data is written out in secret configurations. (#339)
  • Use instances in all examples - Updates all examples to utilize instances. (#314)

Enhancements

  • Enable upgrades integration test - Added integration tests for upgrade scenarios. (#312)
  • Add dependabot configuration - Added Dependabot for automatic dependency updates. (#319)
  • Update CODEOWNERS with team - Updated the CODEOWNERS file to reflect the current team. (#349)
  • Use application verbiage instead of model - Updated terminology from "model" to "application" throughout the project. (#342)
  • Updating wadm links - Updated documentation links for wadm. (#338)
  • Bump appVersion in the helm chart - Updated the Helm chart appVersion to the latest. (#351)

Chores

  • Prepare 0.13 release - General preparation and housekeeping for the 0.13 release. (#348)

CI/CD

  • Use GITHUB_TOKEN to release - Updated release process to utilize GITHUB_TOKEN. (#318)
  • Update upload/download to v4 - Updated CI workflows to use version 4 of the upload/download actions. (#331)

New Contributors

Full Changelog: v0.12.2...v0.13.0

v0.13.0-beta.2

31 Jul 14:34
v0.13.0-beta.2
Compare
Choose a tag to compare
v0.13.0-beta.2 Pre-release
Pre-release

What's Changed

Full Changelog: v0.13.0-beta.1...v0.13.0-beta.2

v0.13.0-beta.1

29 Jul 17:22
v0.13.0-beta.1
Compare
Choose a tag to compare
v0.13.0-beta.1 Pre-release
Pre-release

What's Changed

The wadm manifest has a new block, policies, and a new streamlined syntax for link traits with the addition of secrets. Both of these changes are backwards compatible.

Secrets

Secret configuration can now be defined for components, providers, and links. For components and providers, the secrets: block is now available in the component properties: section, alongside config. The secret should be named however the component or provider refers to it in code, the policy field should point to an appropriate policy that configures the secrets backend, and then the key, field, and version properties should indicate how to reference the secret in the backend itself.

  components:
    - name: http-component
      type: component
      properties:
        image: ghcr.io/wasmcloud/test-fetch-with-token:0.1.0-fake
        secrets:
          # wasmCloud will fetch this secret from the vault backend
          - name: some-api-token
            properties:
              policy: vault
              key: secrets/test/value
              field: api-token
              version: 1

Policies

With the addition of secrets in wasmCloud, secrets backends often require more information in order to authenticate a component. In the case of Vault for example, the secrets backend requires knowledge of the role name and mount path. If you're using secrets, ensure you define an appropriate policy for the backend, and then refer to that policy by name

spec:
  policies:
    - name: vault
      type: policy.secret.wasmcloud.dev/v1alpha1
      properties:
        backend: 'vault'
        role_name: 'demo-role'
        mount_path: 'jwt'

Links

The link trait definition now deprecates the source_config, target_config, and target: <name> properties in favor of a new streamlined syntax:

        - type: link
          properties:
            namespace: wasi
            package: keyvalue
            interfaces: [atomics, store]
            source:
              config:
                - name: redis-url
                  properties:
                    url: 127.0.0.1:6379
            target:
              name: kvredis
              secrets:
                - name: redis_password
                  properties:
                    policy: nats-kv
                    key: redis_password

The link source and target blocks now have config: and secrets: nested properties for defining config and secrets, respectively. To simplify the blocks, the target: name: <name> field is now nested in order to organize all target information in one place. This change is backwards compatible and wadm will automatically update an application manifest with the source_config or target_config blocks before storage. Put another way, you can use the following script to update any application manifests:

wash app put wadm.yaml
wash app get <app-name> > wadm-updated.yaml

Features

  • Add support for secrets in manifests - Breaking change: introduces the ability to manage secrets directly within the manifests. (#307)
  • Retry state updates - Added a feature to automatically retry state updates to improve reliability. (#315)
  • Add policy configuration block - Introduces a new block for configuring policies. (#306)
  • Added WIT bindings for OAM types and subscription method - Enables OAM type support and a new subscription method. (#301)

Bug Fixes

  • Correctly emit a validation error if a backend key in a policy is missing - Ensures that a missing backend key in a policy results in a validation error. (#344)
  • Copy backend key to top level in a generated config value - Fixes an issue where the backend key was not correctly copied. (#343)
  • Write out policy data in a secret config correctly - Corrects the way policy data is written out in secret configurations. (#339)
  • Use instances in all examples - Updates all examples to utilize instances. (#314)

Enhancements

  • Enable upgrades integration test - Added integration tests for upgrade scenarios. (#312)
  • Add dependabot configuration - Added Dependabot for automatic dependency updates. (#319)
  • Update CODEOWNERS with team - Updated the CODEOWNERS file to reflect the current team. (#349)
  • Use application verbiage instead of model - Updated terminology from "model" to "application" throughout the project. (#342)
  • Updating wadm links - Updated documentation links for wadm. (#338)
  • Bump appVersion in the helm chart - Updated the Helm chart appVersion to the latest. (#351)

Chores

  • Prepare 0.13 release - General preparation and housekeeping for the 0.13 release. (#348)

CI/CD

  • Use GITHUB_TOKEN to release - Updated release process to utilize GITHUB_TOKEN. (#318)
  • Update upload/download to v4 - Updated CI workflows to use version 4 of the upload/download actions. (#331)

New Contributors

Full Changelog: v0.12.2...v0.13.0-beta.1

v0.12.2

02 Jul 15:33
v0.12.2
Compare
Choose a tag to compare

What's Changed

  • fix(validation): allow multiple links to the same target by @vados-cosmonic in #303
  • chore(deps): remove once_cell by @vados-cosmonic in #304
  • chore(wadm): update to v0.12.2 by @brooksmtownsend in #308
  • fix(wadm): Set PutModelResponse current_version based on the StoredManifests current_version by @joonas in #309
  • test(integration): enable consumer integration tests by @brooksmtownsend in #311
  • chore(wadm): Bump wadm crate to 0.12.2 by @joonas in #313
  • feat(wadm)!: Switch wadm events to limits-based stream and create a new sourcing stream for EventConsumer by @joonas in #310

Full Changelog: v0.12.1...v0.12.2

v0.12.1

14 Jun 15:42
v0.12.1
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.12.0...v0.12.1

v0.12.0

24 May 23:57
v0.12.0
Compare
Choose a tag to compare

What's Changed

Breaking changes

This version contains a breaking change to the wadm API as well as one big, but backwards compatible change. We inverted the behavior of the delete model API to always delete all versions by default. In practice, it turned out that few users wanted to only delete a specific version. Now the API takes a body that looks like:

{
  "version": "1.0"
}

The version field is optional. If it is not set, all versions of a model will be deleted, but if it is set, it will only delete the specific model version given

Additionally, we have now made the version field in a manifest entirely optional. Versioning sounded like a good idea, but caused more headache than it was worth, especially for local development. You can still specify a version and it still must be unique, but by default, wadm will generate a ULID for the version of the model. This means you can get the original insertion order of models by sorting on the version. Old manifests will still continue to function properly if they have the version field set.

New crates

This release also marks the launch of a few new crates for wadm. Before, everything was part of the wadm crate and there was no specific client library. Now, we have separated out wadm types into the wadm-types crate so they can be used separately without the full dependency tree of wadm as well as in places like wasm components. We also have a new Rust client (wadm-client) available so people don't need to roll their own NATS requests anymore

New Contributors

Full Changelog: v0.11.2...v0.12.0

v0.11.2

20 May 17:18
v0.11.2
eb75cf4
Compare
Choose a tag to compare

Full Changelog: v0.11.1...v0.11.2

v0.11.1

30 Apr 18:35
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.11.0...v0.11.1