<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Function Runner on Porch Documentation</title><link>/docs/6_configuration_and_deployments/configurations/components/function-runner-config/</link><description>Recent content in Function Runner on Porch Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="/docs/6_configuration_and_deployments/configurations/components/function-runner-config/index.xml" rel="self" type="application/rss+xml"/><item><title>Function Configuration</title><link>/docs/6_configuration_and_deployments/configurations/components/function-runner-config/function-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/6_configuration_and_deployments/configurations/components/function-runner-config/function-configuration/</guid><description>&lt;p&gt;&lt;strong&gt;FunctionConfig&lt;/strong&gt; is the custom resource that configures how a function image is executed: a pod, a binary, a Go call, or any combination of the three.
For how these resources are created during install, see 
&lt;a href="/docs/3_getting_started/installing-porch/"&gt;Installing Porch&lt;/a&gt; and 
&lt;a href="/docs/6_configuration_and_deployments/deployments/catalog-deployment/"&gt;Catalog Deployment&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="how-components-consume-functionconfig"&gt;How components consume FunctionConfig&lt;a class="td-heading-self-link" href="#how-components-consume-functionconfig" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The same CRD is watched independently by three processes.
Each process runs an embedded reconciler that copies matching FunctionConfig objects into its own in-memory store and records the generation it applied on the resource status:&lt;/p&gt;</description></item><item><title>Pod Templates</title><link>/docs/6_configuration_and_deployments/configurations/components/function-runner-config/pod-templates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/6_configuration_and_deployments/configurations/components/function-runner-config/pod-templates/</guid><description>&lt;p&gt;Function evaluator pods are built from the &lt;strong&gt;PodTemplate&lt;/strong&gt;/&lt;strong&gt;ServiceTemplate&lt;/strong&gt; objects &lt;code&gt;base-pod-template&lt;/code&gt; and &lt;code&gt;base-service-template&lt;/code&gt; in the function-pod namespace (default &lt;code&gt;porch-fn-system&lt;/code&gt;), plus per-function overrides from the matching 
&lt;a href="/docs/6_configuration_and_deployments/configurations/components/function-runner-config/function-configuration/"&gt;FunctionConfig&lt;/a&gt;.
There is no &lt;code&gt;--function-pod-template&lt;/code&gt; flag and no ConfigMap template.&lt;/p&gt;
&lt;p&gt;For how those templates are used during pod creation, see 
&lt;a href="/docs/5_architecture_and_components/function-runner/functionality/pod-lifecycle-management/"&gt;Pod Lifecycle Management&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="how-templates-are-applied"&gt;How templates are applied&lt;a class="td-heading-self-link" href="#how-templates-are-applied" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;On pod creation the function-runner:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Gets &lt;code&gt;base-pod-template&lt;/code&gt; (&lt;code&gt;corev1.PodTemplate&lt;/code&gt;) and &lt;code&gt;base-service-template&lt;/code&gt; (&lt;code&gt;config.porch.kpt.dev/v1alpha1&lt;/code&gt; ServiceTemplate) from the function-pod namespace (&lt;code&gt;--pod-namespace&lt;/code&gt;, default &lt;code&gt;porch-fn-system&lt;/code&gt;). If either is missing, it creates it from the inline default shipped in the binary.&lt;/li&gt;
&lt;li&gt;Patches the function container with the requested image, the wrapper-server command, the original image entrypoint as arguments, and any image-pull secret required for private registries.&lt;/li&gt;
&lt;li&gt;Patches pod metadata: &lt;code&gt;fn.kpt.dev/image&lt;/code&gt; label and &lt;code&gt;fn.kpt.dev/template-version&lt;/code&gt; set to the PodTemplate &lt;code&gt;resourceVersion&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Merges &lt;code&gt;spec.podExecutor.templateOverrides&lt;/code&gt; from the FunctionConfig for that image, if any.&lt;/li&gt;
&lt;li&gt;Creates the pod and a ClusterIP Service from the ServiceTemplate.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cluster-wide defaults (node selectors, extra volumes, security context that every function should inherit) belong on the base PodTemplate. Per-function CPU/memory, env, or service account belong on &lt;code&gt;templateOverrides&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Private Registries</title><link>/docs/6_configuration_and_deployments/configurations/components/function-runner-config/private-registries-config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/6_configuration_and_deployments/configurations/components/function-runner-config/private-registries-config/</guid><description>&lt;div class="alert alert-primary" role="alert"&gt;&lt;div class="h4 alert-heading" role="heading"&gt;Note&lt;/div&gt;
&lt;p&gt;KPT functions and KRM functions are synonymous terms referring to the same containerized functions.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Configure the Function Runner to access private container registries for KRM functions.&lt;/p&gt;
&lt;h2 id="use-cases"&gt;Use Cases&lt;a class="td-heading-self-link" href="#use-cases" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Private registries are commonly used for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enterprise environments&lt;/strong&gt; - Internal Harbor or JFrog registries&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud providers&lt;/strong&gt; - GitHub Container Registry (GHCR), AWS ECR, Azure ACR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom functions&lt;/strong&gt; - Organization-specific KRM functions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="default-public-registries"&gt;Default Public Registries&lt;a class="td-heading-self-link" href="#default-public-registries" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;By default, Function Runner uses public registries:&lt;/p&gt;</description></item></channel></rss>