<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Concepts on Crossplane</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/</link><description>Recent content in Concepts 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/v1.20/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>Crossplane Pods</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/pods/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/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>Providers</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/providers/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/providers/</guid><description>&lt;p>Providers enable Crossplane to provision infrastructure on an
external service. Providers create new Kubernetes APIs and map them to external
APIs.&lt;/p>
&lt;p>Providers are responsible for all aspects of connecting to non-Kubernetes
resources. This includes authentication, making external API calls and
providing
&lt;a href="https://kubernetes.io/docs/concepts/architecture/controller/">Kubernetes Controller&lt;/a>
logic for any external resources.&lt;/p>
&lt;p>Examples of providers include:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/upbound/provider-aws">Provider AWS&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/upbound/provider-azure">Provider Azure&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/upbound/provider-gcp">Provider GCP&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/crossplane-contrib/provider-kubernetes">Provider Kubernetes&lt;/a>&lt;/li>
&lt;/ul>
&lt;!-- vale write-good.Passive = NO -->
&lt;!-- "are Managed" isn't passive in this context -->
&lt;p>Providers define every external resource they can create in Kubernetes as a
Kubernetes API endpoint.
These endpoints are
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/managed-resources/">&lt;em>Managed Resources&lt;/em>&lt;/a>.&lt;/p></description></item><item><title>Managed Resources</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/managed-resources/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/managed-resources/</guid><description>&lt;p>A &lt;em>managed resource&lt;/em> (&lt;code>MR&lt;/code>) represents an external service in a Provider. When
users create a new managed resource, the Provider reacts by creating an external
resource inside the Provider&amp;rsquo;s environment. Every external service managed by
Crossplane maps to a managed resource.&lt;/p>
&lt;div class="admonition note d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="note:">&lt;use
xlink:href="#info"/>&lt;/svg>
&lt;span class="ps-1">Note&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
Crossplane calls the object inside Kubernetes a &lt;em>managed resource&lt;/em> and the
external object inside the Provider an &lt;em>external resource&lt;/em>.
&lt;/div>
&lt;/div>
&lt;p>Examples of managed resources include:&lt;/p></description></item><item><title>Compositions</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/</guid><description>&lt;p>Compositions are a template for creating multiple managed resources as a single
object.&lt;/p>
&lt;p>A Composition &lt;em>composes&lt;/em> individual managed resources together into a larger,
reusable, solution.&lt;/p>
&lt;p>An example Composition may combine a virtual machine, storage resources and
networking policies. A Composition template links all these individual
resources together.&lt;/p>
&lt;p>Here&amp;rsquo;s an example Composition. When you create an
&lt;code>&lt;highlight-term id="1775223277220844932" data-label=intro data-line=8>AcmeBucket&lt;/highlight-term>&lt;/code> composite resource
(XR) that uses this Composition, Crossplane uses the template to create the
Amazon S3 &lt;code>&lt;highlight-term id="1775223277220880225" data-label=intro data-line=18>Bucket&lt;/highlight-term>&lt;/code> managed
resource.&lt;/p></description></item><item><title>Composition Revisions</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composition-revisions/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composition-revisions/</guid><description>&lt;p>This guide discusses the use of &amp;ldquo;Composition Revisions&amp;rdquo; to safely make and roll
back changes to a Crossplane &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/">&lt;code>Composition&lt;/code>&lt;/a>. It assumes
familiarity with Crossplane, and particularly with
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/">Compositions&lt;/a>.&lt;/p>
&lt;p>A &lt;code>Composition&lt;/code> configures how Crossplane should reconcile a Composite Resource
(XR). Put otherwise, when you create an XR the selected &lt;code>Composition&lt;/code> determines
what managed resources Crossplane will create in response. Let&amp;rsquo;s say for example
that you define a &lt;code>PlatformDB&lt;/code> XR, which represents your organisation&amp;rsquo;s common
database configuration of an Azure MySQL Server and a few firewall rules. The
&lt;code>Composition&lt;/code> contains the &amp;lsquo;base&amp;rsquo; configuration for the MySQL server and the
firewall rules that are extended by the configuration for the &lt;code>PlatformDB&lt;/code>.&lt;/p></description></item><item><title>Composite Resource Definitions</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composite-resource-definitions/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composite-resource-definitions/</guid><description>&lt;p>Composite resource definitions (&lt;code>XRDs&lt;/code>) define the schema for a custom API.&lt;br>
Users create composite resources (&lt;code>XRs&lt;/code>) and Claims (&lt;code>XCs&lt;/code>) using the API
schema defined by an &lt;code>XRD&lt;/code>.&lt;/p>
&lt;div class="admonition note d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="note:">&lt;use
xlink:href="#info"/>&lt;/svg>
&lt;span class="ps-1">Note&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
&lt;p>Read the &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composite-resources/">composite resources&lt;/a> page for more
information about composite resources.&lt;/p>
&lt;p>Read the &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/claims/">Claims&lt;/a> page for more
information about Claims.&lt;/p>
&lt;/div>
&lt;/div>
&lt;div class="accordion mb-3" id="confused-about-compositions-xrds-xrs-and-claims-1546-Parent">
&lt;div class="accordion-item">
&lt;h2 class="accordion-header" id="confused-about-compositions-xrds-xrs-and-claims-1546">
&lt;button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#confused-about-compositions-xrds-xrs-and-claims-1546-Content" aria-expanded="false" aria-controls="confused-about-compositions-xrds-xrs-and-claims-1546-Content">
Confused about Compositions, XRDs, XRs and Claims?
&lt;/button>
&lt;/h2>
&lt;div id="confused-about-compositions-xrds-xrs-and-claims-1546-Content" class="accordion-collapse collapse" aria-labelledby="confused-about-compositions-xrds-xrs-and-claims-1546" data-bs-parent="#confused-about-compositions-xrds-xrs-and-claims-1546-Parent">
&lt;div class="accordion-body rounded-bottom">
&lt;p>Crossplane has four core components that users commonly mix up:&lt;/p></description></item><item><title>Composite Resources</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composite-resources/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composite-resources/</guid><description>&lt;p>A composite resource represents a set of managed resources as a single
Kubernetes object. Crossplane creates composite resources when users access a
custom API, defined in the CompositeResourceDefinition.&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">
Composite resources are a &lt;em>composite&lt;/em> of managed resources.&lt;br>
A &lt;em>Composition&lt;/em> defines how to &lt;em>compose&lt;/em> the managed resources together.
&lt;/div>
&lt;/div>
&lt;div class="accordion mb-3" id="confused-about-compositions-xrds-xrs-and-claims-992-Parent">
&lt;div class="accordion-item">
&lt;h2 class="accordion-header" id="confused-about-compositions-xrds-xrs-and-claims-992">
&lt;button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#confused-about-compositions-xrds-xrs-and-claims-992-Content" aria-expanded="false" aria-controls="confused-about-compositions-xrds-xrs-and-claims-992-Content">
Confused about Compositions, XRDs, XRs and Claims?
&lt;/button>
&lt;/h2>
&lt;div id="confused-about-compositions-xrds-xrs-and-claims-992-Content" class="accordion-collapse collapse" aria-labelledby="confused-about-compositions-xrds-xrs-and-claims-992" data-bs-parent="#confused-about-compositions-xrds-xrs-and-claims-992-Parent">
&lt;div class="accordion-body rounded-bottom">
&lt;p>Crossplane has four core components that users commonly mix up:&lt;/p></description></item><item><title>Claims</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/claims/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/claims/</guid><description>&lt;p>Claims represents a set of managed resources as a single
Kubernetes object, inside a namespace.&lt;/p>
&lt;p>Users create claims when they access the
custom API, defined in the CompositeResourceDefinition.&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">
Claims are like &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composite-resources/">composite resources&lt;/a>. The
difference between Claims and composite resources is Crossplane can create
Claims in a namespace, while composite resources are cluster scoped.
&lt;/div>
&lt;/div>
&lt;div class="accordion mb-3" id="confused-about-compositions-xrds-xrs-and-claims-1511-Parent">
&lt;div class="accordion-item">
&lt;h2 class="accordion-header" id="confused-about-compositions-xrds-xrs-and-claims-1511">
&lt;button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#confused-about-compositions-xrds-xrs-and-claims-1511-Content" aria-expanded="false" aria-controls="confused-about-compositions-xrds-xrs-and-claims-1511-Content">
Confused about Compositions, XRDs, XRs and Claims?
&lt;/button>
&lt;/h2>
&lt;div id="confused-about-compositions-xrds-xrs-and-claims-1511-Content" class="accordion-collapse collapse" aria-labelledby="confused-about-compositions-xrds-xrs-and-claims-1511" data-bs-parent="#confused-about-compositions-xrds-xrs-and-claims-1511-Parent">
&lt;div class="accordion-body rounded-bottom">
&lt;p>Crossplane has four core components that users commonly mix up:&lt;/p></description></item><item><title>Environment Configurations</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/environment-configs/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/environment-configs/</guid><description>&lt;!--
TODO: Add Policies
-->
&lt;p>A Crossplane EnvironmentConfig is a cluster-scoped, strongly typed,
&lt;a href="https://kubernetes.io/docs/concepts/configuration/configmap/">ConfigMap&lt;/a>-like
resource used by Compositions. Compositions can use the environment to store
information from individual resources or to apply patches.&lt;/p>
&lt;p>Crossplane supports multiple &lt;code>EnvironmentConfigs&lt;/code>, each acting as a unique
data store.&lt;/p>
&lt;p>When Crossplane creates a composite resource, Crossplane merges all the
EnvironmentConfigs referenced in the associated Composition and creates a unique
in-memory environment for that composite resource.&lt;/p>
&lt;p>The composite resource can read and write data to their unique
in-memory environment.&lt;/p></description></item><item><title>Usages</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/usages/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/usages/</guid><description>&lt;p>A &lt;code>Usage&lt;/code> is a Crossplane resource that defines a usage relationship for a
Managed Resource or a Composite Resource. Two main use cases for the Usages are
as follows:&lt;/p>
&lt;ol>
&lt;li>Protecting a resource from accidental deletion.&lt;/li>
&lt;li>Deletion ordering by ensuring that a resource isn&amp;rsquo;t deleted before the
deletion of its dependent resources.&lt;/li>
&lt;/ol>
&lt;p>See the section &lt;a href="#usage-for-deletion-protection">Usage for Deletion Protection&lt;/a> for the
first use case and the section &lt;a href="#usage-for-deletion-ordering">Usage for Deletion Ordering&lt;/a>
for the second one.&lt;/p></description></item><item><title>Connection Details</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/connection-details/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/connection-details/</guid><description>&lt;p>Using connection details in Crossplane requires the following components:&lt;/p>
&lt;ul>
&lt;li>Defining the &lt;code>writeConnectionSecretToRef.name&lt;/code> in a &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/claims/#claim-connection-secrets">Claim&lt;/a>.&lt;/li>
&lt;li>Defining the &lt;code>writeConnectionSecretsToNamespace&lt;/code> value in the &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/#composite-resource-combined-secret">Composition&lt;/a>.&lt;/li>
&lt;li>Define the &lt;code>writeConnectionSecretToRef&lt;/code> name and namespace for each resource in the
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/#composed-resource-secrets">Composition&lt;/a>.&lt;/li>
&lt;li>Define the list of secret keys produced by each composed resource with in the
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/">Composition&lt;/a>.&lt;/li>
&lt;li>Optionally, define the &lt;code>connectionSecretKeys&lt;/code> in a
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composite-resource-definitions/#manage-connection-secrets">CompositeResourceDefinition&lt;/a>.&lt;/li>
&lt;/ul>
&lt;div class="admonition note d-flex flex-column mx-4 p-0">
&lt;div class="admonition-title">
&lt;svg class="bi flex-shrink-0" role="img" aria-label="note:">&lt;use
xlink:href="#info"/>&lt;/svg>
&lt;span class="ps-1">Note&lt;/span>
&lt;/div>
&lt;div class="admonition-content">
&lt;p>This guide discusses creating Kubernetes secrets.
Crossplane also supports using external secret stores like &lt;a href="https://www.vaultproject.io/">HashiCorp Vault&lt;/a>.&lt;/p></description></item><item><title>Configuration Packages</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/packages/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/packages/</guid><description>&lt;p>A &lt;em>Configuration&lt;/em> package is an
&lt;a href="https://opencontainers.org/">OCI container image&lt;/a> containing a collection of
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/">Compositions&lt;/a>,
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/composite-resource-definitions/">Composite Resource Definitions&lt;/a>
and any required &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/providers/">Providers&lt;/a> or
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/">Functions&lt;/a>.&lt;/p>
&lt;p>Configuration packages make your Crossplane configuration fully portable.&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>Crossplane &lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/providers/">Providers&lt;/a> and
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/">Functions&lt;/a> are also Crossplane packages.&lt;/p>
&lt;p>This document describes how to install and manage configuration packages.&lt;/p>
&lt;p>Refer to the
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/providers/">Provider&lt;/a> and
&lt;a href="https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/compositions/">Composition Functions&lt;/a> chapters for
details on their usage of packages.&lt;/p>
&lt;/div>
&lt;/div>
&lt;h2 id="install-a-configuration">Install a Configuration &lt;a class="anchor-link" id="install-a-configuration" href="#install-a-configuration" aria-label="Link to this section: Install a Configuration">&lt;/a>&lt;/h2>
&lt;p>Install a Configuration with a Crossplane
&lt;code>&lt;highlight-term id="1775223277256986753" data-label=install data-line=2>Configuration&lt;/highlight-term>&lt;/code> object by setting
the &lt;code>&lt;highlight-term id="1775223277257015149" data-label=install data-line=6>spec.package&lt;/highlight-term>&lt;/code> value to the
location of the configuration package.&lt;/p></description></item><item><title>Server-Side Apply</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/server-side-apply/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/server-side-apply/</guid><description>&lt;p>Crossplane can use server-side apply to sync claims with composite resources
(XRs), and to sync composite resources with composed resources.&lt;/p>
&lt;p>When Crossplane uses server-side apply, the Kubernetes API server helps sync
resources. Using server-side apply makes syncing more predictable and less
buggy.&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">
Server-side apply is a Kubernetes feature. Read more about server-side apply in
the &lt;a href="https://kubernetes.io/docs/reference/using-api/server-side-apply/">Kubernetes documentation&lt;/a>.
&lt;/div>
&lt;/div>
&lt;h2 id="use-server-side-apply-to-sync-claims-with-composite-resources">Use server-side apply to sync claims with composite resources &lt;a class="anchor-link" id="use-server-side-apply-to-sync-claims-with-composite-resources" href="#use-server-side-apply-to-sync-claims-with-composite-resources" aria-label="Link to this section: Use server-side apply to sync claims with composite resources">&lt;/a>&lt;/h2>
&lt;p>When you create a claim, Crossplane creates a corresponding composite resource.
Crossplane keeps the claim in sync with the composite resource. When you change
the claim, Crossplane reflects those changes on the composite resource.&lt;/p></description></item><item><title>Image Configs</title><link>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/image-configs/</link><pubDate/><guid>https://deploy-preview-1077--crossplane.netlify.app/v1.20/concepts/image-configs/</guid><description>&lt;!-- vale write-good.Passive = NO -->
&lt;p>&lt;code>ImageConfig&lt;/code> is an API for centralized control over the configuration of
Crossplane package images. It allows you to configure package manager behavior
for images globally, without needing to be referenced by other objects.&lt;/p>
&lt;h2 id="matching-image-references">Matching image references &lt;a class="anchor-link" id="matching-image-references" href="#matching-image-references" aria-label="Link to this section: Matching image references">&lt;/a>&lt;/h2>
&lt;p>&lt;code>spec.matchImages&lt;/code> is a list of image references that the &lt;code>ImageConfig&lt;/code> applies
to. Each item in the list specifies the type and configuration of the image
reference to match. The only supported type is &lt;code>Prefix&lt;/code>, which matches the
prefix of the image reference. No wildcards are supported. The &lt;code>type&lt;/code> defaults
to &lt;code>Prefix&lt;/code> and can be omitted.&lt;/p></description></item></channel></rss>