<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Usage on Component Operator</title><link>https://sap.github.io/component-operator/docs/usage/</link><description>Recent content in Usage on Component Operator</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://sap.github.io/component-operator/docs/usage/index.xml" rel="self" type="application/rss+xml"/><item><title>Sources</title><link>https://sap.github.io/component-operator/docs/usage/sources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/sources/</guid><description>&lt;p&gt;The mandatory field &lt;code&gt;spec.sourceRef&lt;/code&gt; defines where component-operator retrieves the manifests used to generate the component&amp;rsquo;s dependent objects. Exactly one source type must be specified.&lt;/p&gt;
&lt;h2 id="source-types"&gt;Source Types&lt;/h2&gt;
&lt;h3 id="flux-gitrepository"&gt;Flux GitRepository&lt;/h3&gt;
&lt;p&gt;References a &lt;a href="https://fluxcd.io/flux/components/source/gitrepositories/"&gt;Flux &lt;code&gt;GitRepository&lt;/code&gt;&lt;/a&gt; object. The source controller fetches and serves the Git repository content as a tarball artifact.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sourceRef:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fluxGitRepository:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name: my-gitrepo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#008000"&gt;# namespace: source-ns # optional; defaults to component&amp;#39;s namespace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="flux-ocirepository"&gt;Flux OCIRepository&lt;/h3&gt;
&lt;p&gt;References a &lt;a href="https://fluxcd.io/flux/components/source/ocirepositories/"&gt;Flux &lt;code&gt;OCIRepository&lt;/code&gt;&lt;/a&gt; object, backed by an OCI-compatible container registry.&lt;/p&gt;</description></item><item><title>Manifests</title><link>https://sap.github.io/component-operator/docs/usage/manifests/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/manifests/</guid><description>&lt;p&gt;The files making up a component&amp;rsquo;s manifests are provided by the configured &lt;a href="../sources"&gt;source&lt;/a&gt;. The field &lt;code&gt;spec.path&lt;/code&gt; defines the subfolder within the source artifact to use as the entry point (default: the root of the artifact).&lt;/p&gt;
&lt;p&gt;Component-operator automatically determines how to render the manifests based on the contents of that directory:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If a &lt;code&gt;Chart.yaml&lt;/code&gt; file exists in &lt;code&gt;spec.path&lt;/code&gt;, the content is rendered as a &lt;strong&gt;Helm chart&lt;/strong&gt; using the &lt;a href="https://sap.github.io/component-operator-runtime/docs/generators/helm/"&gt;HelmGenerator&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Otherwise, the &lt;a href="https://sap.github.io/component-operator-runtime/docs/generators/kustomize/"&gt;KustomizeGenerator&lt;/a&gt; logic is applied, which also supports plain YAML manifests without a &lt;code&gt;kustomization.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="values-and-valuesfrom"&gt;Values and ValuesFrom&lt;/h2&gt;
&lt;p&gt;Parameters for the manifests can be provided inline via &lt;code&gt;spec.values&lt;/code&gt; or loaded from Kubernetes Secrets via &lt;code&gt;spec.valuesFrom&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Drift Detection</title><link>https://sap.github.io/component-operator/docs/usage/drift-detection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/drift-detection/</guid><description>&lt;h2 id="object-digest"&gt;Object Digest&lt;/h2&gt;
&lt;p&gt;Whenever a dependent object is to be applied to the cluster, a digest is calculated for the object. This digest value is persisted as annotation &lt;code&gt;component-operator.cs.sap.com/digest&lt;/code&gt;. The object is considered as synced if the new digest value equals the currently persisted one, and as out of sync otherwise.&lt;/p&gt;
&lt;p&gt;If the object is out of sync, component-operator reapplies it to the Kubernetes API, including the new digest value. If the object is in sync, it will normally not be reapplied, with one exception: after the effective reapply interval, the object is force-reapplied. This ensures that manual out-of-band changes are reverted, and other glitches get fixed.&lt;/p&gt;</description></item><item><title>Status Detection</title><link>https://sap.github.io/component-operator/docs/usage/status/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/status/</guid><description>&lt;p&gt;Component-operator needs to determine whether each dependent object has reached a ready state before proceeding to the next &lt;a href="../dependents"&gt;apply wave&lt;/a&gt; or completing the component reconciliation. The readiness check is based on the &lt;a href="https://pkg.go.dev/sigs.k8s.io/cli-utils/pkg/kstatus/status"&gt;kstatus&lt;/a&gt; library, with additional tuning capabilities.&lt;/p&gt;
&lt;h2 id="how-kstatus-works"&gt;How kstatus Works&lt;/h2&gt;
&lt;p&gt;For most resources, vanilla kstatus uses the following algorithm to determine if a Kubernetes object is ready (a special logic applies for some builtin types):&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1 — observedGeneration check:&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Does the object have status.observedGeneration?
 → Yes: Does status.observedGeneration equal metadata.generation?
 → Yes: proceed to readyCondition check
 → No: object is NOT ready (generation mismatch)
 → No: proceed to readyCondition check
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Step 2 — readyCondition check:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Target Namespace and Name</title><link>https://sap.github.io/component-operator/docs/usage/target-namespace/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/target-namespace/</guid><description>&lt;p&gt;The optional fields &lt;code&gt;spec.namespace&lt;/code&gt; and &lt;code&gt;spec.name&lt;/code&gt; customize the deployment namespace and name of the component, as defined by component-operator-runtime.&lt;/p&gt;
&lt;h2 id="defaulting"&gt;Defaulting&lt;/h2&gt;
&lt;p&gt;If &lt;code&gt;spec.namespace&lt;/code&gt; is not set, the target namespace defaults to &lt;code&gt;metadata.namespace&lt;/code&gt; — that is, the same namespace in which the &lt;code&gt;Component&lt;/code&gt; object itself resides.&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;spec.name&lt;/code&gt; is not set, the target name defaults to &lt;code&gt;metadata.name&lt;/code&gt; — the name of the &lt;code&gt;Component&lt;/code&gt; object.&lt;/p&gt;
&lt;h3 id="effect-on-dependent-objects"&gt;Effect on Dependent Objects&lt;/h3&gt;
&lt;p&gt;The target namespace is passed to the manifest generator. Any namespaced dependent objects whose manifest does not specify an explicit namespace will be placed in this target namespace. This allows a single set of manifests to be deployed into different namespaces simply by varying &lt;code&gt;spec.namespace&lt;/code&gt; across Component instances.&lt;/p&gt;</description></item><item><title>Dependents Lifecycle</title><link>https://sap.github.io/component-operator/docs/usage/dependents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/dependents/</guid><description>&lt;h2 id="reconciliation-in-waves"&gt;Reconciliation in Waves&lt;/h2&gt;
&lt;p&gt;Component-operator supports ordered reconciliation of dependent objects using the concept of &lt;strong&gt;waves&lt;/strong&gt;. Objects are grouped into waves and processed wave by wave, in ascending order of wave number. Wave numbers can be negative, zero (the default), or positive integers in the range -32768 to 32767.&lt;/p&gt;
&lt;h3 id="apply-waves"&gt;Apply Waves&lt;/h3&gt;
&lt;p&gt;During apply (creation or update), objects are reconciled wave by wave. The next wave only begins once &lt;strong&gt;all objects of the previous wave are fully ready&lt;/strong&gt; — not just created or updated, but actually ready according to their &lt;a href="../status"&gt;status&lt;/a&gt;. Simply initiating creation or an update is not enough.&lt;/p&gt;</description></item><item><title>Dependents Annotations</title><link>https://sap.github.io/component-operator/docs/usage/annotations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/annotations/</guid><description>&lt;p&gt;The following annotations can be added to any rendered manifest to control how component-operator handles that specific dependent object. Where a component-level default exists, it is noted in the &lt;strong&gt;Component-level default&lt;/strong&gt; column.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Annotation&lt;/th&gt;
					&lt;th&gt;Values&lt;/th&gt;
					&lt;th&gt;Component-level default&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/adoption-policy&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;if-unowned&lt;/code&gt; (default), &lt;code&gt;never&lt;/code&gt;, &lt;code&gt;always&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;spec.adoptionPolicy&lt;/code&gt; (&lt;code&gt;IfUnowned&lt;/code&gt;)&lt;/td&gt;
					&lt;td&gt;How to handle an object that already exists in the cluster. See &lt;a href="../ownership"&gt;Ownership and Adoption&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/reconcile-policy&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;on-object-change&lt;/code&gt; (default), &lt;code&gt;on-object-or-component-change&lt;/code&gt;, &lt;code&gt;once&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;When the object is reconciled. See &lt;a href="../reconcile-modes"&gt;Reconcile Modes&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/update-policy&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;ssa-override&lt;/code&gt; (default), &lt;code&gt;ssa-merge&lt;/code&gt;, &lt;code&gt;replace&lt;/code&gt;, &lt;code&gt;recreate&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;spec.updatePolicy&lt;/code&gt; (&lt;code&gt;SsaOverride&lt;/code&gt;)&lt;/td&gt;
					&lt;td&gt;How the object is updated in the Kubernetes API. See &lt;a href="../dependents#update-policy"&gt;Dependents Lifecycle&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/delete-policy&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;delete&lt;/code&gt; (default), &lt;code&gt;orphan&lt;/code&gt;, &lt;code&gt;orphan-on-apply&lt;/code&gt;, &lt;code&gt;orphan-on-delete&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;spec.deletePolicy&lt;/code&gt; (&lt;code&gt;Delete&lt;/code&gt;)&lt;/td&gt;
					&lt;td&gt;What happens to the object when it becomes redundant or the component is deleted. See &lt;a href="../dependents#delete-policy"&gt;Dependents Lifecycle&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/apply-order&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;integer (default: &lt;code&gt;0&lt;/code&gt;)&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;The wave in which the object is applied. Lower numbers are applied first. See &lt;a href="../dependents#apply-waves"&gt;Dependents Lifecycle&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/delete-order&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;integer (default: &lt;code&gt;0&lt;/code&gt;)&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;The wave in which the object is deleted. Lower numbers are deleted first. Independent of &lt;code&gt;apply-order&lt;/code&gt;. See &lt;a href="../dependents#delete-waves"&gt;Dependents Lifecycle&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/purge-order&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;integer&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;The apply wave at the end of which the object is deleted (purged) from the cluster, while its inventory record is set to &lt;code&gt;Completed&lt;/code&gt;. See &lt;a href="../dependents#purge-orders"&gt;Dependents Lifecycle&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/reapply-interval&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;duration (e.g. &lt;code&gt;30m&lt;/code&gt;)&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;spec.reapplyInterval&lt;/code&gt; (&lt;code&gt;60m&lt;/code&gt;)&lt;/td&gt;
					&lt;td&gt;How often the object is force-reapplied even when in sync. See &lt;a href="../drift-detection"&gt;Drift Detection&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;component-operator.cs.sap.com/status-hint&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;comma-separated hints (see below)&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;Tuning hints for the kstatus-based readiness check. See &lt;a href="../status"&gt;Status Detection&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="status-hint-values"&gt;Status Hint Values&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;component-operator.cs.sap.com/status-hint&lt;/code&gt; annotation accepts a comma-separated list of the following values:&lt;/p&gt;</description></item><item><title>Component Deletion</title><link>https://sap.github.io/component-operator/docs/usage/deletion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/deletion/</guid><description>&lt;p&gt;When a &lt;code&gt;Component&lt;/code&gt; object is deleted, component-operator reconciles the deletion by removing all dependent objects it manages. The process is more nuanced than a simple bulk delete, particularly around extension types.&lt;/p&gt;
&lt;h2 id="basic-deletion-flow"&gt;Basic Deletion Flow&lt;/h2&gt;
&lt;p&gt;Upon receiving a delete request, the component enters a &lt;code&gt;Deleting&lt;/code&gt; state. Dependent objects are then deleted according to their &lt;a href="../dependents"&gt;delete order&lt;/a&gt;, wave by wave. Each wave only starts once all objects of the previous wave have fully disappeared from the cluster.&lt;/p&gt;</description></item><item><title>Intervals and Timing</title><link>https://sap.github.io/component-operator/docs/usage/timing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/timing/</guid><description>&lt;p&gt;Reconciliation timing is about&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;how often a component is reconciled in success state&lt;/li&gt;
&lt;li&gt;how often a component is reconciled in various error states&lt;/li&gt;
&lt;li&gt;how often a component or single dependent object is force-reapplied to the Kubernetes cluster&lt;/li&gt;
&lt;li&gt;temporarily disabling (suspending) reconciliation of a component.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="reconciliation-intervals"&gt;Reconciliation Intervals&lt;/h2&gt;
&lt;h3 id="requeue-interval"&gt;Requeue Interval&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;spec.requeueInterval&lt;/code&gt; defines how often a component is re-reconciled after a successful reconciliation.&lt;/p&gt;
&lt;p&gt;Requeues are not particularly expensive, but depending on the number of components in a cluster it might be necessary to increase the requeue interval.&lt;/p&gt;</description></item><item><title>Ownership and Adoption</title><link>https://sap.github.io/component-operator/docs/usage/ownership/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/ownership/</guid><description>&lt;p&gt;Component-operator tracks ownership of dependent objects using a dedicated label: &lt;code&gt;component-operator.cs.sap.com/owner-id&lt;/code&gt;. This label is set on every object managed by a component and contains a globally unique identifier for the owning component (incorporating a unique ID of the component&amp;rsquo;s Kubernetes cluster). It serves as the basis for all ownership and adoption decisions.&lt;/p&gt;
&lt;h2 id="adoption-policy"&gt;Adoption Policy&lt;/h2&gt;
&lt;p&gt;It can happen that a dependent object already exists in the cluster when a component is applied — either because it was created manually, by another tool, or by a different component. The &lt;code&gt;spec.adoptionPolicy&lt;/code&gt; field on the component
(and the per-object annotation &lt;code&gt;component-operator.cs.sap.com/adoption-policy&lt;/code&gt;) controls how component-operator handles this situation.&lt;/p&gt;</description></item><item><title>Reconcile Modes</title><link>https://sap.github.io/component-operator/docs/usage/reconcile-modes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/reconcile-modes/</guid><description>&lt;p&gt;By default, component-operator reconciles a dependent object whenever its generated manifest changes.&lt;/p&gt;
&lt;p&gt;More details about drift detection can be found &lt;a href="../drift-detection"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="reconcile-policy-values"&gt;Reconcile Policy Values&lt;/h2&gt;
&lt;p&gt;This behavior can be customized per object using the annotation &lt;code&gt;component-operator.cs.sap.com/reconcile-policy&lt;/code&gt;.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Value&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;on-object-change&lt;/code&gt; (default)&lt;/td&gt;
					&lt;td&gt;The object is reconciled whenever its generated manifest changes.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;on-object-or-component-change&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;The object is reconciled whenever its manifest changes, or whenever the component itself changes (as identified by a change in the component&amp;rsquo;s generation).&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;once&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;The object is reconciled exactly once (on creation). It is never updated again by component-operator, regardless of changes to the manifest or the component.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In the &lt;code&gt;on-object-or-component-change&lt;/code&gt; case the object digest additionally incorporates a deep digest of the component.
In the &lt;code&gt;once&lt;/code&gt; case, the object digest is set to &lt;code&gt;__once__&lt;/code&gt;. Note that, when changing the effective reconcile policy to &lt;code&gt;once&lt;/code&gt;, then one last reconcile happens, caused by the change of the policy.&lt;/p&gt;</description></item><item><title>Impersonation and Remote Clusters</title><link>https://sap.github.io/component-operator/docs/usage/impersonation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/impersonation/</guid><description>&lt;p&gt;By default, component-operator uses its own controller kubeconfig to interact with the Kubernetes API when reconciling a &lt;code&gt;Component&lt;/code&gt;. Both impersonation and remote cluster deployment allow you to override this default.&lt;/p&gt;
&lt;h2 id="service-account-impersonation"&gt;Service Account Impersonation&lt;/h2&gt;
&lt;p&gt;If &lt;code&gt;spec.serviceAccountName&lt;/code&gt; is set, the controller impersonates that service account (relative to the component&amp;rsquo;s namespace) when applying and deleting dependent objects. This allows fine-grained access control: the service account determines what the component is permitted to create, modify, and delete.&lt;/p&gt;</description></item><item><title>Timeout and Stickiness</title><link>https://sap.github.io/component-operator/docs/usage/timeout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/timeout/</guid><description>&lt;h2 id="timeout"&gt;Timeout&lt;/h2&gt;
&lt;p&gt;The field &lt;code&gt;spec.timeout&lt;/code&gt; defines how long dependent objects are expected to take to reach a ready state after being applied. If not all dependents are ready within this period, the component&amp;rsquo;s state transitions from &lt;code&gt;Processing&lt;/code&gt; to &lt;code&gt;Error&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timeout: 10m
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If &lt;code&gt;spec.timeout&lt;/code&gt; is not set, it defaults to the effective requeue interval.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; reaching the timeout does not stop reconciliation. Component-operator continues to attempt reconciliation at the normal requeue interval. The timeout only affects the reported state. Whenever the component itself or any of its referenced objects (e.g., referenced secrets) change, the timeout countdown resets.&lt;/p&gt;</description></item><item><title>Dependencies</title><link>https://sap.github.io/component-operator/docs/usage/dependencies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/dependencies/</guid><description>&lt;p&gt;Component-operator supports declaring dependencies between &lt;code&gt;Component&lt;/code&gt; objects via &lt;code&gt;spec.dependencies&lt;/code&gt;. This allows you to express that a component must not be applied or deleted until other components have reached a certain state.&lt;/p&gt;
&lt;h2 id="declaring-dependencies"&gt;Declaring Dependencies&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; dependencies:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - name: database &lt;span style="color:#008000"&gt;# same namespace as this component&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - namespace: infra
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name: cert-manager &lt;span style="color:#008000"&gt;# cross-namespace reference&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If &lt;code&gt;namespace&lt;/code&gt; is omitted, the dependency is assumed to reside in the same namespace as the declaring component.&lt;/p&gt;</description></item><item><title>Notifications</title><link>https://sap.github.io/component-operator/docs/usage/notifications/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://sap.github.io/component-operator/docs/usage/notifications/</guid><description>&lt;p&gt;Component-operator can emit events to the &lt;a href="https://fluxcd.io/flux/components/notification/"&gt;Flux notification controller&lt;/a&gt;, enabling integration with Flux&amp;rsquo;s alerting and notification infrastructure.&lt;/p&gt;
&lt;h2 id="enabling-event-streaming"&gt;Enabling Event Streaming&lt;/h2&gt;
&lt;p&gt;Start the component-operator controller with the &lt;code&gt;--events-address&lt;/code&gt; flag pointing to the address of the Flux notification controller:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;--events-address=http://notification-controller.flux-system.svc.cluster.local/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When set, component-operator will stream reconciliation events (such as successful applies, errors, and state transitions) to the notification controller, which can then forward them to configured alert providers (Slack, PagerDuty, etc.).&lt;/p&gt;
&lt;h2 id="patching-the-flux-alert-crd"&gt;Patching the Flux Alert CRD&lt;/h2&gt;
&lt;p&gt;To fully leverage Flux notifications — including the ability to create &lt;code&gt;Alert&lt;/code&gt; objects that reference &lt;code&gt;Component&lt;/code&gt; as an event source — the &lt;code&gt;alerts.notification.toolkit.fluxcd.io&lt;/code&gt; CRD shipped with Flux must be patched to add &lt;code&gt;Component&lt;/code&gt; as an allowed event source kind.&lt;/p&gt;</description></item></channel></rss>