Skip to content

Preview Release 2.6.0-rc.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@monaco-release-dt-bot monaco-release-dt-bot released this 27 Jul 15:12
· 707 commits to main since this release
d17d26b

⚠️ Preview Release ⚠️

This is a pre-release of monaco 2.6.0

  • This does not yet reflect the full content or quality of the final release.
  • No official support is provided for the pre-release version.
  • If you try this release we'd love to hear your feedback in the release discussion!

What's Changed

🚀 Features

Improved deployment

We've implemented several improvements for the Monaco deployment - all focused on making deployments faster and more resilient.

Early internal tests have achieved an up to 45% reduction in deployment time if all features are activated.
(Your mileage may vary - we'd love to hear your results in the release discussion!)

Graph-based deployment

We improved the internal representation of configurations and dependencies to a graph data structure.

This allows for several improvements and features.

Graph-based sorting

Build a dependency tree and use it for sorting, which is notably faster and more memory efficient that the previous sorting.

This feature is active by default, but can be disabled via the environment variable feature flag MONACO_FEAT_GRAPH_SORT=false.

Sorting into independent connected components

Use the dependency tree to sort configurations into independent connected components (configurations that depend on each other are grouped into a component).

This allows for smarter behavior in case a referenced dependency failed to deploy or was skipped.

Consider the following example:

A project consisting of

  • a synthetic-location,
  • referenced by a synthetic-monitor,
  • referenced by an slo.

For a given environment the synthetic-location is being skipped.

Previously monaco would produce an error when trying to deploy the synthetic-monitor (or continue to also fail on the slo if you're using the --continue-on-error flag).

With this feature, monaco recognizes that neither the synthetic-monitor nor the slo can be deployed, prints a warning and continues without error.

To enable this feature, set the environment variable feature-flag MONACO_FEAT_GRAPH_DEPLOY=true.

Parallel deployments

Using the new internal representation, configurations that are not dependent on each other can be deployed in parallel.
To enable this feature, set the following environment variable feature-flags:

  • MONACO_FEAT_GRAPH_DEPLOY=true.
  • MONACO_FEAT_GRAPH_DEPLOY_PARALLEL=true

⚠️ Known Issue Logging happens out of order and some logs might be hard to correlate to the correct configuration.
We recommend turning on structured JSON logging, which will include extra fields like the coordinate for each log line.
The full release will include information on the coordinate, as well as component for each log line, regardless of format.

Updating Settings with unique key properties

Some Settings 2.0 schemas define unique key constraints, which ensure that Settings objects are unique.

Monaco is now aware of these constraints and can identify and update existing objects based on their unique keys, instead of just by externalID or originObjectID.

Previously if an object with an overlapping unique key already existed, monaco would attempt to create a duplicate, resulting in an API error.

This new behavior is conceptually similar to classic Config API objects being identified based on their name.

Improved caching

Monaco made several repetitive queries during deployments to identify and update existing configurations.
These are heavily reduced by introducing caching.

Generate a dependency graph for your Monaco configurations

The command monaco generate graph <manifest.yaml> can create dependency graphs of your configurations. They're exported using the DOT format.
You can use a tool of your choice to visualize the graph as an image - for example graphviz online.

Generate delete-files for your Monaco configurations

The command monaco generate deletefile <manifest.yaml> can create delete files for your Monaco projects. Delete documentation

⚠️ Known Issue Help text of this command is partially incorrect, e.g. it mentions a -f flag, which should be --file.
Generated delete files include some unnecessary empty string values, this is not a functional problem but looks strange.
These issues will be resolved in the final release.


Container image

Images are available at https://hub.docker.com/r/dynatrace/dynatrace-configuration-as-code

The image can be used directly, passing command arguments to the CLI directly or in CI with a monaco executable available in the container.

docker pull dynatrace/dynatrace-configuration-as-code:2.6.0-rc.1

Verifying Signature

The Image is signed, and its signature can be verified using cosign and the cosign.pub key that can be downloaded from this release.

 cosign verify --key cosign.pub dynatrace/dynatrace-configuration-as-code:2.6.0-rc.1

Full Changelog: v2.5.0...v2.6.0-rc.1