mirror of https://github.com/crossplane/docs.git
Merge pull request #594 from negz/functional-backup
Update Composition Functions content to v1beta1
This commit is contained in:
commit
cc67ebd12e
File diff suppressed because it is too large
Load Diff
|
@ -41,8 +41,8 @@ Optionally, Compositions also support:
|
|||
* [Modifying and patching](#changing-resource-fields) resource settings.
|
||||
* [Storing connection details](#storing-connection-details) and secrets
|
||||
generated by the managed resources.
|
||||
* Using [Composition functions](#composition-functions) to allow custom
|
||||
programs to run alongside the Composition.
|
||||
* Using [Composition Functions](#use-composition-functions) to template
|
||||
resources using custom programs.
|
||||
* Creating a
|
||||
[custom check of when a resource is ready](#resource-readiness-checks)
|
||||
to use.
|
||||
|
@ -664,40 +664,72 @@ spec:
|
|||
The [EnvironmentConfigs]({{<ref "./environment-configs" >}}) page has
|
||||
more information on EnvironmentConfigs options and usage.
|
||||
|
||||
### Composition functions
|
||||
### Use composition functions
|
||||
|
||||
Composition functions (`XFNs`) are containers executing any code you define.
|
||||
Composition functions can read and write to any resource in the Composition
|
||||
they're attached to. This allows composition functions to perform complex
|
||||
operations to patch fields, determine if a resource is ready for use or notify
|
||||
an external system about the details of resource.
|
||||
Composition functions (or just functions, for short) are custom programs that
|
||||
template Crossplane resources. You can write a function to template resources
|
||||
using a general purpose programming language like Go or Python. Using a general
|
||||
purpose programming language allows a function to use more advanced logic to
|
||||
template resources, like loops and conditionals.
|
||||
|
||||
{{<hint "important" >}}
|
||||
Composition functions are an alpha feature. Alpha features aren't enabled by
|
||||
default.
|
||||
Composition functions is a beta feature. Crossplane enables beta functions by
|
||||
default. The
|
||||
[Composition Functions]({{<ref "./composition-functions#disable-composition-functions">}})
|
||||
page explains how to disable composition functions.
|
||||
{{< /hint >}}
|
||||
|
||||
To attach a composition function to a Composition define a
|
||||
{{<hover label="xfn" line="7">}}function{{</hover>}} inside the Composition
|
||||
{{<hover label="xfn" line="4">}}spec{{</hover>}}.
|
||||
To use composition functions set the Composition
|
||||
{{<hover label="xfn" line="6">}}mode{{</hover>}} to
|
||||
{{<hover label="xfn" line="6">}}Pipeline{{</hover>}}.
|
||||
|
||||
Provide a {{<hover label="xfn" line="8">}}name{{</hover>}} for the function.
|
||||
The {{<hover label="xfn" line="9">}}type{{</hover>}} is always `Container`.
|
||||
The {{<hover label="xfn" line="11">}}container.image{{</hover>}} is the
|
||||
location of the composition function container image.
|
||||
Define a {{<hover label="xfn" line="7">}}pipeline{{</hover>}} of
|
||||
{{<hover label="xfn" line="8">}}steps{{</hover>}}. Each
|
||||
{{<hover label="xfn" line="8">}}step{{</hover>}} calls a Function.
|
||||
|
||||
Each {{<hover label="xfn" line="8">}}step{{</hover>}} uses a
|
||||
{{<hover label="xfn" line="9">}}functionRef{{</hover>}} to reference the
|
||||
{{<hover label="xfn" line="10">}}name{{</hover>}} of the Function to call.
|
||||
|
||||
Some Functions also allow you to specify an
|
||||
{{<hover label="xfn" line="11">}}input{{</hover>}}.
|
||||
The function defines the
|
||||
{{<hover label="xfn" line="13">}}kind{{</hover>}} of input.
|
||||
|
||||
{{<hint "important" >}}
|
||||
Compositions using {{<hover label="xfn" line="6">}}mode: Pipeline{{</hover>}}
|
||||
can't specify resource templates with a `resources` field.
|
||||
|
||||
Use function "Patch and Transform" to create resource templates.
|
||||
{{< /hint >}}
|
||||
|
||||
This example uses Function Patch and Transform. Function Patch and Transform is
|
||||
a function that implements Crossplane resource templates. You can use Function
|
||||
Patch and Transform to specify resource templates in a pipeline with other
|
||||
Functions.
|
||||
|
||||
```yaml {label="xfn",copy-lines="none"}
|
||||
apiVersion: apiextensions.crossplane.io/v1
|
||||
kind: Composition
|
||||
# Removed for Brevity
|
||||
spec:
|
||||
resources:
|
||||
# Removed for Brevity
|
||||
functions:
|
||||
- name: rds-instance-password
|
||||
type: Container
|
||||
container:
|
||||
image: xpkg.upbound.io/provider-aws-xfns/random-rds-password:v0.1.0
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: storage-bucket
|
||||
base:
|
||||
apiVersion: s3.aws.upbound.io/v1beta1
|
||||
kind: Bucket
|
||||
spec:
|
||||
forProvider:
|
||||
region: "us-east-2"
|
||||
```
|
||||
|
||||
Read the [composition functions]({{<ref "./composition-functions">}}) page for
|
||||
|
@ -1293,6 +1325,9 @@ Composition.
|
|||
When creating a Composition Crossplane automatically validates specific
|
||||
parameters in the Composition.
|
||||
|
||||
If using `mode: Resources`:
|
||||
|
||||
* The `resources` field isn't empty.
|
||||
* All resources either use a `name` or don't. Compositions can't use both named
|
||||
and unnamed resources.
|
||||
* No duplicate resource names.
|
||||
|
@ -1303,10 +1338,11 @@ parameters in the Composition.
|
|||
* Readiness checks using `matchString` aren't empty.
|
||||
* Readiness checks using `matchInteger` isn't `0`.
|
||||
* Readiness checks requiring a `fieldPath` value provide it.
|
||||
* If using composition functions, all resources must have names.
|
||||
* Composition function container field isn't empty.
|
||||
* Composition function `type` is `container`.
|
||||
* Composition function names are unique.
|
||||
|
||||
If using `mode: Pipeline` (Composition Functions):
|
||||
|
||||
* The `pipeline` field isn't empty.
|
||||
* No duplicate step names.
|
||||
|
||||
### Resource schema validation
|
||||
<!-- vale write-good.TooWordy = NO -->
|
||||
|
|
|
@ -127,37 +127,6 @@ serviceAccount:
|
|||
tolerations: []
|
||||
webhooks:
|
||||
enabled: true
|
||||
xfn:
|
||||
args: []
|
||||
cache:
|
||||
configMap: ""
|
||||
medium: ""
|
||||
pvc: ""
|
||||
sizeLimit: 1Gi
|
||||
enabled: false
|
||||
extraEnvVars: {}
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: crossplane/xfn
|
||||
tag: ""
|
||||
resources:
|
||||
limits:
|
||||
cpu: 2000m
|
||||
memory: 2Gi
|
||||
requests:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
add:
|
||||
- SETUID
|
||||
- SETGID
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 65532
|
||||
runAsUser: 65532
|
||||
seccompProfile:
|
||||
type: Unconfined
|
||||
|
||||
HOOKS:
|
||||
MANIFEST:
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<pre class="mermaid">
|
||||
{{- .Inner | safeHTML }}
|
||||
</pre>
|
||||
{{ .Page.Store.Set "hasMermaid" true }}
|
|
@ -75,3 +75,51 @@
|
|||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
{{ if .Page.Store.Get "hasMermaid" }}
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
|
||||
<script type="module">
|
||||
|
||||
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
|
||||
document.addEventListener("DOMContentLoaded", setMermaidStyle());
|
||||
document.addEventListener("DOMContentLoaded", colorModeListener());
|
||||
|
||||
function getMermaidConfig(){
|
||||
var style = getComputedStyle(document.body)
|
||||
var font = style.getPropertyValue("font-family")
|
||||
var fontColor = style.getPropertyValue('--body-font-color')
|
||||
var backgroundColor = style.getPropertyValue('--body-background')
|
||||
|
||||
var config = {
|
||||
"theme": "base",
|
||||
"fontFamily": font,
|
||||
"themeVariables": {
|
||||
"background": backgroundColor,
|
||||
"textColor": fontColor,
|
||||
}
|
||||
}
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
function setMermaidStyle(){
|
||||
var config = getMermaidConfig()
|
||||
mermaid.initialize( config )
|
||||
}
|
||||
|
||||
function colorModeListener(){
|
||||
darkSwitch.addEventListener("click", resetMermaidStyle())
|
||||
}
|
||||
|
||||
function resetMermaidStyle(){
|
||||
console.log("resetting")
|
||||
|
||||
var config = getMermaidConfig()
|
||||
console.log(config)
|
||||
mermaid.mermaidAPI.setConfig( config )
|
||||
mermaid.mermaidAPI.reset()
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
{{ end }}
|
|
@ -6,6 +6,7 @@ base64
|
|||
bool
|
||||
boolean
|
||||
booleans
|
||||
Buf
|
||||
CI
|
||||
CLI
|
||||
cluster-wide
|
||||
|
@ -20,6 +21,8 @@ Enum
|
|||
Env
|
||||
ESS
|
||||
float64
|
||||
Go
|
||||
gRPC
|
||||
JSONPath
|
||||
key-pair
|
||||
kube-apiserver
|
||||
|
@ -34,6 +37,8 @@ OCI
|
|||
proselint
|
||||
RBAC
|
||||
SCSS
|
||||
SDK
|
||||
SDKs
|
||||
semver
|
||||
ServiceAccount
|
||||
ServiceAccounts
|
||||
|
@ -61,6 +66,8 @@ SHA-256
|
|||
SHA-512
|
||||
base64
|
||||
RBAC
|
||||
RPC
|
||||
RPCs
|
||||
ServiceAccounts
|
||||
ServiceAccount
|
||||
ClusterRole
|
||||
|
|
|
@ -43,10 +43,14 @@ InactivePackageRevision
|
|||
initProvider
|
||||
LateInitialize
|
||||
managementPolicies
|
||||
MR
|
||||
MRs
|
||||
PatchSet
|
||||
PatchSets
|
||||
ProviderConfig
|
||||
ProviderConfigs
|
||||
RunFunctionRequest
|
||||
RunFunctionResponse
|
||||
StoreConfig
|
||||
StoreConfigs
|
||||
ToCompositeFieldPath
|
||||
|
|
|
@ -11,6 +11,7 @@ double-check
|
|||
double-checks
|
||||
dry-run
|
||||
end-points
|
||||
end-to-end
|
||||
free-form
|
||||
hands-on
|
||||
how-to
|
||||
|
|
Loading…
Reference in New Issue