From cb3978edfd4ed9cdc6543c2fa647432253aa3f00 Mon Sep 17 00:00:00 2001 From: Jared Watts Date: Fri, 25 Apr 2025 10:26:16 +0200 Subject: [PATCH] change logs guide Signed-off-by: Jared Watts --- content/master/guides/change-logs.md | 271 +++++++++++++++++++++++++++ 1 file changed, 271 insertions(+) create mode 100644 content/master/guides/change-logs.md diff --git a/content/master/guides/change-logs.md b/content/master/guides/change-logs.md new file mode 100644 index 00000000..a2f64977 --- /dev/null +++ b/content/master/guides/change-logs.md @@ -0,0 +1,271 @@ +--- +title: Change Logs +weight: 210 +description: "Change logs help you audit all changes made to your resources" +state: alpha +alphaVersion: "1.17" +--- + +The "change logs" feature is designed to help users of Crossplane Providers to +understand what changes a provider is making to the resources it's managing. +Whenever a provider creates, updates, or deletes a managed resource, an entry +explaining the details of the change is recorded in the provider's change log. + +Change logs are important for awareness of the changes that a provider is +making to its managed resources. Due to the nature of Crossplane's active +reconciliation, it's possible for a provider to make changes to managed +resources without any user interaction. Consider the scenario when someone +updates a resource outside of Crossplane, for example via the AWS console or +`gcloud` CLI. When Crossplane detects this configuration drift it will +enforce its source of truth to eventually correct this unexpected change +without any user interaction. + +With Crossplane acting continuously and autonomously to update critical +infrastructure, it's vital for users to have insight into the operations being +performed, so they can build and maintain a strong sense of confidence and trust +in their control planes. Change logs provide details about all changes the +provider makes, so users can remain aware of any changes, even when they aren't +explicitly expecting any. + +{{}} Change logs help you understand all the changes a provider is +making to your resources, even when changes weren't explicitly requested, for +example as a result of Crossplane's automatic correction of configuration drift. +{{}} + +## Enabling Change Logs + +{{}} Change logs are an alpha feature and must be explicitly +enabled for each provider through the use of a `DeploymentRuntimeConfig`. +{{}} + +To enable change logs for a provider, use a `DeploymentRuntimeConfig` to +configure each provider pod that should start producing change logs. The +`DeploymentRuntimeConfig` has a few important configuration details: + +1. A command line argument to the provider container that enables the change + logs feature, for example `--enable-changelogs`. +1. A [side car container](https://github.com/crossplane/changelogs-sidecar) that + collects change events and produces change log entries to the provider's pod + logs. +1. A shared volume mounted to both the provider and sidecar containers that + enables communication of change events between the two containers. + +### Prerequisites + +This guide assumes you have a control plane with [Crossplane installed]({{}}). + +It also assumes you have the [`jq` tool installed](https://jqlang.org/download/), +to perform lightweight querying and filtering of the content in the change logs. + +The only other prerequisite for enabling change logs is that the provider must +have added support for the change logs feature. This is optional and not all +providers in the Crossplane ecosystem have added this support yet. + +{{}} Not all providers support the change logs feature. Check with +your provider of choice to confirm it has added support for change logs. +{{}} + +This guide walks through a full example of generating change logs with +[`provider-kubernetes`](https://github.com/crossplane-contrib/provider-kubernetes). + +### Create a `DeploymentRuntimeConfig` + +Create a `DeploymentRuntimeConfig` that will enable change logs for +the provider when it's installed by performing the necessary configuration +steps: + +1. The {{}}--enable-changelogs{{}} flag is + set on the provider. +1. The {{}}sidecar container{{}} is added + to the provider pod. +1. A {{}}shared volume{{}} is declared and + then mounted in the {{}}provider + container{{}} and the {{}}sidecar + container{{}}. + +```yaml {label="drc",copy-lines="all"} +cat <}}provider{{}} and +instruct it to use the {{}}DeploymentRuntimeConfig{{}} +that was just created. + +```yaml {label="provider",copy-lines="all"} +cat <}} This guide grants specific permissions to the provider +for example purposes. This approach isn't intended to be representative of a +production environment. More examples on configuring `provider-kubernetes` can +be found in its [examples directory](https://github.com/crossplane-contrib/provider-kubernetes/tree/main/examples/provider). +{{}} + +```yaml {label="rbac",copy-lines="all"} +cat <