<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Guides on Crossplane</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/</link><description>Recent content in Guides on Crossplane</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://deploy-preview-1077--crossplane.netlify.app/latest/guides/index.xml" rel="self" type="application/rss+xml"/><item><title>Crossplane Pods</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/pods/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/pods/</guid><description>&lt;p>The base Crossplane installation consists of two pods, the &lt;code>crossplane&lt;/code> pod and
the &lt;code>crossplane-rbac-manager&lt;/code> pod. Both pods install in the &lt;code>crossplane-system&lt;/code>
namespace by default.&lt;/p>
&lt;h2 id="crossplane-pod">Crossplane pod &lt;a class="anchor-link" id="crossplane-pod" href="#crossplane-pod" aria-label="Link to this section: Crossplane pod">&lt;/a>&lt;/h2>
&lt;h3 id="init-container">Init container &lt;a class="anchor-link" id="init-container" href="#init-container" aria-label="Link to this section: Init container">&lt;/a>&lt;/h3>
&lt;p>Before starting the core Crossplane container an &lt;em>init&lt;/em> container runs. The init
container installs the core Crossplane
&lt;a href="https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions">Custom Resource Definitions&lt;/a>
(&lt;code>CRDs&lt;/code>), configures Crossplane webhooks and installs any supplied Providers or
Configurations.&lt;/p></description></item><item><title>Metrics</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/metrics/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/metrics/</guid><description>&lt;p>Crossplane produces &lt;a href="https://prometheus.io/docs/introduction/overview/#what-are-metrics">Prometheus style metrics&lt;/a> for effective monitoring and alerting in your environment.
These metrics are essential for helping to identify and resolve potential issues.
This page offers explanations of all these metrics gathered from Crossplane.
Understanding these metrics helps you maintain the health and performance of your resources.
Please note that this document focuses on Crossplane specific metrics and doesn&amp;rsquo;t cover standard Go metrics.&lt;/p>
&lt;p>To enable the export of metrics it&amp;rsquo;s necessary to configure the &lt;code>--set metrics.enabled=true&lt;/code> option in the &lt;a href="https://github.com/crossplane/crossplane/blob/main/cluster/charts/crossplane/README.md#configuration">helm chart&lt;/a>.&lt;/p></description></item><item><title>Function Patch and Transform</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/function-patch-and-transform/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/function-patch-and-transform/</guid><description>&lt;p>Function Patch and Transform allows you to write a Composition that specifies
managed resource (MR) templates, and uses &amp;ldquo;patch and transform&amp;rdquo; operations to
fill them out. Crossplane fills the templates out with values copied from a
composite resource (XR).&lt;/p>
&lt;p>A &lt;a href="#create-a-patch">patch&lt;/a> copies a value from one resource and &lt;em>patches&lt;/em> it
onto another resource. A &lt;a href="#transform-a-patch">transform&lt;/a> modifies the values
before applying the patch.&lt;/p>
&lt;div class="admonition tip d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="tip:">&lt;use
xlink:href="#check"/>&lt;/svg>
&lt;span class="ps-1">Tip&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
&lt;p>All Compositions used Patch and Transform before Crossplane added
support for composition functions.&lt;/p></description></item><item><title>Releasing Crossplane Extensions</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/extensions-release-process/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/extensions-release-process/</guid><description>&lt;!-- vale Google.Headings = NO -->
&lt;h2 id="distributing-crossplane-extensions">Distributing Crossplane extensions &lt;a class="anchor-link" id="distributing-crossplane-extensions" href="#distributing-crossplane-extensions" aria-label="Link to this section: Distributing Crossplane extensions">&lt;/a>&lt;/h2>
&lt;!-- vale Google.Headings = YES -->
&lt;p>Crossplane provides a packaging specification for extending a Crossplane
instance with APIs and business logic for composing resources.&lt;/p>
&lt;p>Building a Crossplane extension involves creating OCI images in the &lt;a href="https://github.com/crossplane/crossplane/blob/main/contributing/specifications/xpkg.md">xpkg&lt;/a>
format. Authors and maintainers of Crossplane extensions must push their
packages to an OCI registry before users can reference and use them.&lt;/p></description></item><item><title>Write a Composition Function in Go</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/write-a-composition-function-in-go/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/write-a-composition-function-in-go/</guid><description>&lt;p>Composition functions (or just functions, for short) are custom programs that
template Crossplane resources. Crossplane calls composition functions to
determine what resources it should create when you create a composite resource
(XR). Read the
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/composition/compositions/">concepts&lt;/a>
page to learn more about composition functions.&lt;/p>
&lt;p>You can write a function to template resources using a general purpose
programming language. Using a general purpose programming language allows a
function to use advanced logic to template resources, like loops and
conditionals. This guide explains how to write a composition function in
&lt;a href="https://go.dev">Go&lt;/a>.&lt;/p></description></item><item><title>Write a Composition Function in Python</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/write-a-composition-function-in-python/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/write-a-composition-function-in-python/</guid><description>&lt;p>Composition functions (or just functions, for short) are custom programs that
template Crossplane resources. Crossplane calls composition functions to
determine what resources it should create when you create a composite resource
(XR). Read the
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/composition/compositions/">concepts&lt;/a>
page to learn more about composition functions.&lt;/p>
&lt;p>You can write a function to template resources using a general purpose
programming language. Using a general purpose programming language allows a
function to use advanced logic to template resources, like loops and
conditionals. This guide explains how to write a composition function in
&lt;a href="https://python.org">Python&lt;/a>.&lt;/p></description></item><item><title>Connection Details Composition</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/connection-details-composition/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/connection-details-composition/</guid><description>&lt;!-- vale write-good.TooWordy = NO -->
&lt;p>This guide shows how to expose connection details for composite resources (XRs).
Because composite resources can compose multiple resources, the connection
details they expose are often an aggregate of the connection details from their
composed resources.&lt;/p>
&lt;!-- vale write-good.TooWordy = YES -->
&lt;p>The recommended approach is to include a Kubernetes &lt;code>Secret&lt;/code>
resource in your Composition that aggregates the connection details from other
resources and exposes them for the XR.&lt;/p></description></item><item><title>Disabling Unused Managed Resources</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/disabling-unused-managed-resources/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/disabling-unused-managed-resources/</guid><description>&lt;div class="admonition important d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="important:">&lt;use
xlink:href="#exclamation"/>&lt;/svg>
&lt;span class="ps-1">Important&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
This guide uses
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/managed-resources/managed-resource-definitions/">managed resource definitions&lt;/a>
and
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/managed-resources/managed-resource-activation-policies/">managed resource activation policies&lt;/a>,
which Crossplane v2.0+ enables by default. To disable this behavior, set
&lt;code>--enable-custom-to-managed-resource-conversion=false&lt;/code> when installing
Crossplane.
&lt;/div>
&lt;/div>
&lt;p>Large Crossplane providers can install 100+ managed resource CRDs, consuming
significant cluster resources even when you only need one or two resource
types. This guide shows how to use
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/managed-resources/managed-resource-definitions/">ManagedResourceDefinitions&lt;/a>
and
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/managed-resources/managed-resource-activation-policies/">ManagedResourceActivationPolicies&lt;/a>
to install only the provider resources you actually need.&lt;/p></description></item><item><title>Implementing safe-start in Providers</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/implementing-safe-start/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/implementing-safe-start/</guid><description>&lt;p>This guide shows provider developers how to implement safe-start capability in
their Crossplane providers. safe-start enables
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/guides/disabling-unused-managed-resources/">disabling unused managed resources&lt;/a>
through ManagedResourceDefinitions, improving performance and reducing resource
overhead.&lt;/p>
&lt;div class="admonition important d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="important:">&lt;use
xlink:href="#exclamation"/>&lt;/svg>
&lt;span class="ps-1">Important&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
safe-start requires Crossplane v2.0+ and crossplane-runtime v2.0+.
Implementing safe-start involves code changes that affect provider startup
behavior.
&lt;/div>
&lt;/div>
&lt;h2 id="what-safe-start-provides">What safe-start provides &lt;a class="anchor-link" id="what-safe-start-provides" href="#what-safe-start-provides" aria-label="Link to this section: What safe-start provides">&lt;/a>&lt;/h2>
&lt;p>safe-start changes how your provider handles CRD installation:&lt;/p></description></item><item><title>Import Existing Resources</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/import-existing-resources/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/import-existing-resources/</guid><description>&lt;p>If you have resources that are already provisioned in a Provider,
you can import them as managed resources and let Crossplane manage them.
A managed resource&amp;rsquo;s &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/managed-resources/managed-resources/#managementpolicies">&lt;code>managementPolicies&lt;/code>&lt;/a>
field enables importing external resources into Crossplane.&lt;/p>
&lt;h2 id="import-resources-in-observe-only-mode">Import resources in observe only mode &lt;a class="anchor-link" id="import-resources-in-observe-only-mode" href="#import-resources-in-observe-only-mode" aria-label="Link to this section: Import resources in observe only mode">&lt;/a>&lt;/h2>
&lt;p>Start by importing external resources with an &lt;code>Observe&lt;/code> &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/managed-resources/managed-resources/#managementpolicies">management policy&lt;/a>.&lt;/p>
&lt;p>Crossplane imports observe only resources but never changes or deletes the
resources.&lt;/p></description></item><item><title>Crossplane with Workload Identity</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/crossplane-with-workload-identity/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/crossplane-with-workload-identity/</guid><description>&lt;p>When running Crossplane on managed Kubernetes clusters (EKS, AKS, GKE), you can use Kubernetes Workload Identity to grant Crossplane access to pull packages from private cloud container registries. This allows Crossplane to install providers, functions, and configurations from registries like AWS ECR, Azure ACR, and Google Artifact Registry without managing static credentials.&lt;/p>
&lt;div class="admonition important d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="important:">&lt;use
xlink:href="#exclamation"/>&lt;/svg>
&lt;span class="ps-1">Important&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
&lt;p>This guide configures the &lt;strong>Crossplane package manager&lt;/strong> to pull packages from private registries. Packages reference container images that run as separate pods (providers and functions).&lt;/p></description></item><item><title>Change Logs</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/change-logs/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/change-logs/</guid><description>&lt;p>The change logs feature helps users of Crossplane Providers understand what
changes a provider makes to the resources it manages. Whenever a provider
creates, updates, or deletes a managed resource, the provider records an entry
explaining the details of the change in its change log.&lt;/p>
&lt;p>Change logs are important for awareness of the changes that a provider is
making to its managed resources. Due to the nature of Crossplane&amp;rsquo;s active
reconciliation, it&amp;rsquo;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
&lt;code>gcloud&lt;/code> CLI. When Crossplane detects this configuration drift, it
enforces the declared state and corrects the unexpected change
without any user interaction.&lt;/p></description></item><item><title>Configuring Crossplane with Argo CD</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/crossplane-with-argo-cd/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/crossplane-with-argo-cd/</guid><description>&lt;p>&lt;a href="https://argoproj.github.io/cd/">Argo CD&lt;/a> and &lt;a href="https://crossplane.io">Crossplane&lt;/a>
are a great combination. Argo CD provides GitOps while Crossplane turns any Kubernetes
cluster into a Universal Control Plane for all your resources. Configuration details are
required in order for the two to work together properly.
This doc will help you understand these requirements. It is recommended to use
Argo CD version 2.4.8 or later with Crossplane.&lt;/p>
&lt;p>Argo CD synchronizes Kubernetes resource manifests stored in a Git repository
with those running in a Kubernetes cluster (GitOps). Argo CD has different ways to configure
how it tracks resources. With Crossplane, you need to configure Argo CD
to use Annotation based resource tracking. See the &lt;a href="https://argo-cd.readthedocs.io/en/latest/user-guide/resource_tracking/">Argo CD docs&lt;/a> for additional detail.&lt;/p></description></item><item><title>Troubleshoot Crossplane</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/troubleshoot-crossplane/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/troubleshoot-crossplane/</guid><description>&lt;h2 id="requested-resource-not-found">Requested resource not found &lt;a class="anchor-link" id="requested-resource-not-found" href="#requested-resource-not-found" aria-label="Link to this section: Requested resource not found">&lt;/a>&lt;/h2>
&lt;p>If you use the Crossplane CLI to install a &lt;code>Provider&lt;/code> or
&lt;code>Configuration&lt;/code> (for example, &lt;code>crossplane xpkg install provider xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0&lt;/code>) and get &lt;code>the server could not find the requested resource&lt;/code> error, more often than not, that&amp;rsquo;s an
indicator that your Crossplane CLI needs updating. In other words
Crossplane graduated some API from alpha to beta or stable and the old
plugin isn&amp;rsquo;t aware of this change.&lt;/p></description></item><item><title>Upgrade Crossplane</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/upgrade-crossplane/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/upgrade-crossplane/</guid><description>&lt;p>The recommended upgrade method for an existing Crossplane install is to use
&lt;a href="http://helm.io">Helm&lt;/a>.&lt;/p>
&lt;!-- vale write-good.Weasel = NO -->
&lt;div class="admonition important d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="important:">&lt;use
xlink:href="#exclamation"/>&lt;/svg>
&lt;span class="ps-1">Important&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
&lt;p>Always upgrade Crossplane &lt;strong>one minor version at a time&lt;/strong>, using the most recent
patch version available for each.&lt;/p>
&lt;p>For example, if you are on &lt;code>v1.18&lt;/code> and want to upgrade to &lt;code>v2.0&lt;/code>, you should
first upgrade to &lt;code>v1.19&lt;/code>, then &lt;code>v1.20&lt;/code>, before finally upgrading to &lt;code>v2.0&lt;/code>. The
upgrade path in this example looks like &lt;code>v1.18&lt;/code> → &lt;code>v1.19&lt;/code> → &lt;code>v1.20&lt;/code> → &lt;code>v2.0&lt;/code>.&lt;/p></description></item><item><title>Upgrade to Crossplane v2</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/upgrade-to-crossplane-v2/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/upgrade-to-crossplane-v2/</guid><description>&lt;p>Crossplane v2 introduces significant improvements while maintaining backward
compatibility with most v1 configurations. This guide helps you upgrade from
Crossplane v1.x to v2.&lt;/p>
&lt;p>Learn about &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/whats-new/">new features in Crossplane v2&lt;/a> including
namespaced resources, the ability to compose any Kubernetes resource, and new
operational workflows.&lt;/p>
&lt;div class="admonition important d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="important:">&lt;use
xlink:href="#exclamation"/>&lt;/svg>
&lt;span class="ps-1">Important&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
Only upgrade to Crossplane v2 from Crossplane &lt;code>v1.20&lt;/code>, the final &lt;code>v1.x&lt;/code> release.
If you&amp;rsquo;re running an earlier version, upgrade to &lt;code>v1.20&lt;/code> first.
&lt;/div>
&lt;/div>
&lt;!-- vale write-good.Weasel = NO -->
&lt;div class="admonition important d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="important:">&lt;use
xlink:href="#exclamation"/>&lt;/svg>
&lt;span class="ps-1">Important&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
&lt;p>Always upgrade Crossplane &lt;strong>one minor version at a time&lt;/strong>, using the most recent
patch version available for each.&lt;/p></description></item><item><title>Uninstall Crossplane</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/uninstall-crossplane/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/uninstall-crossplane/</guid><description>&lt;div class="admonition warning d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="warning:">&lt;use
xlink:href="#fire"/>&lt;/svg>
&lt;span class="ps-1">Warning&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
&lt;p>Resources created by Crossplane aren&amp;rsquo;t deleted if Crossplane isn&amp;rsquo;t uninstalled
in order.&lt;/p>
&lt;p>This can leave cloud resources running, requiring manual deletion.&lt;/p>
&lt;/div>
&lt;/div>
&lt;!-- vale Google.Headings = NO -->
&lt;h2 id="ordered-crossplane-uninstall">Ordered Crossplane uninstall &lt;a class="anchor-link" id="ordered-crossplane-uninstall" href="#ordered-crossplane-uninstall" aria-label="Link to this section: Ordered Crossplane uninstall">&lt;/a>&lt;/h2>
&lt;!-- vale Google.Headings = YES -->
&lt;p>Most Crossplane resources have dependencies on other Crossplane resources.&lt;/p>
&lt;p>For example, a &lt;em>managed resource&lt;/em> is dependent on the &lt;em>provider&lt;/em>.&lt;/p></description></item><item><title>Install Crossplane from source code</title><link>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/install-from-source/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/latest/guides/install-from-source/</guid><description>&lt;p>Building Crossplane from the source code gives you complete control over the
build and installation process.&lt;/p>
&lt;p>You build the Crossplane container image and Helm chart directly from the source
code, push the image to your own registry, and install to your Kubernetes
cluster.&lt;/p>
&lt;div class="admonition important d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="important:">&lt;use
xlink:href="#exclamation"/>&lt;/svg>
&lt;span class="ps-1">Important&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
Installing Crossplane from source is an advanced installation path for users who
require complete control over the build and deployment process. Most users
should follow the &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/latest/get-started/install/">standard installation instructions&lt;/a>
&lt;/div>
&lt;/div>
&lt;p>This approach is useful when you want to:&lt;/p></description></item></channel></rss>