mirror of https://github.com/crossplane/docs.git
commit
22fb432c5c
|
|
@ -90,7 +90,7 @@ security:
|
||||||
# Global parameters accessible by any Page
|
# Global parameters accessible by any Page
|
||||||
params:
|
params:
|
||||||
# The current "latest" version. Used in the version dropdown
|
# The current "latest" version. Used in the version dropdown
|
||||||
latest: "1.16"
|
latest: "1.17"
|
||||||
docs: true
|
docs: true
|
||||||
anchors:
|
anchors:
|
||||||
# Generate heading anchors for any heading between min and max
|
# Generate heading anchors for any heading between min and max
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -32,9 +33,12 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
A CompositeResourceDefinition defines a new kind of composite infrastructure
|
A CompositeResourceDefinition defines the schema for a new custom Kubernetes
|
||||||
resource. The new resource is composed of other composite or managed
|
API.
|
||||||
infrastructure resources.
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about CustomResourceDefinitions](https://docs.crossplane.io/latest/concepts/composite-resource-definitions).
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -76,6 +80,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
kind:
|
kind:
|
||||||
description: |-
|
description: |-
|
||||||
kind is the serialized kind of the resource. It is normally CamelCase and singular.
|
kind is the serialized kind of the resource. It is normally CamelCase and singular.
|
||||||
|
|
@ -100,6 +105,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
singular:
|
singular:
|
||||||
description: singular is the singular name of the resource. It
|
description: singular is the singular name of the resource. It
|
||||||
must be all lowercase. Defaults to lowercased `kind`.
|
must be all lowercase. Defaults to lowercased `kind`.
|
||||||
|
|
@ -108,6 +114,9 @@ spec:
|
||||||
- kind
|
- kind
|
||||||
- plural
|
- plural
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
connectionSecretKeys:
|
connectionSecretKeys:
|
||||||
description: |-
|
description: |-
|
||||||
ConnectionSecretKeys is the list of keys that will be exposed to the end
|
ConnectionSecretKeys is the list of keys that will be exposed to the end
|
||||||
|
|
@ -219,6 +228,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- conversionReviewVersions
|
- conversionReviewVersions
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -265,12 +275,18 @@ spec:
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
group:
|
group:
|
||||||
description: |-
|
description: |-
|
||||||
Group specifies the API group of the defined composite resource.
|
Group specifies the API group of the defined composite resource.
|
||||||
Composite resources are served under `/apis/<group>/...`. Must match the
|
Composite resources are served under `/apis/<group>/...`. Must match the
|
||||||
name of the XRD (in the form `<names.plural>.<group>`).
|
name of the XRD (in the form `<names.plural>.<group>`).
|
||||||
type: string
|
type: string
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
metadata:
|
metadata:
|
||||||
description: Metadata specifies the desired metadata for the defined
|
description: Metadata specifies the desired metadata for the defined
|
||||||
composite resource and claim CRD's.
|
composite resource and claim CRD's.
|
||||||
|
|
@ -309,6 +325,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
kind:
|
kind:
|
||||||
description: |-
|
description: |-
|
||||||
kind is the serialized kind of the resource. It is normally CamelCase and singular.
|
kind is the serialized kind of the resource. It is normally CamelCase and singular.
|
||||||
|
|
@ -333,6 +350,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
singular:
|
singular:
|
||||||
description: singular is the singular name of the resource. It
|
description: singular is the singular name of the resource. It
|
||||||
must be all lowercase. Defaults to lowercased `kind`.
|
must be all lowercase. Defaults to lowercased `kind`.
|
||||||
|
|
@ -341,6 +359,9 @@ spec:
|
||||||
- kind
|
- kind
|
||||||
- plural
|
- plural
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
versions:
|
versions:
|
||||||
description: |-
|
description: |-
|
||||||
Versions is the list of all API versions of the defined composite
|
Versions is the list of all API versions of the defined composite
|
||||||
|
|
@ -480,6 +501,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -34,8 +35,12 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
A CompositionRevision represents a revision in time of a Composition.
|
A CompositionRevision represents a revision of a Composition. Crossplane
|
||||||
Revisions are created by Crossplane; they should be treated as immutable.
|
creates new revisions when there are changes to the Composition.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages CompositionRevisions. Don't directly edit
|
||||||
|
CompositionRevisions.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -74,6 +79,9 @@ spec:
|
||||||
- apiVersion
|
- apiVersion
|
||||||
- kind
|
- kind
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
environment:
|
environment:
|
||||||
description: |-
|
description: |-
|
||||||
Environment configures the environment in which resources are rendered.
|
Environment configures the environment in which resources are rendered.
|
||||||
|
|
@ -283,7 +291,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options on
|
description: MergeOptions Specifies merge options on
|
||||||
a field path
|
a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -458,6 +466,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -467,6 +476,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -578,17 +588,20 @@ spec:
|
||||||
Mode controls what type or "mode" of Composition will be used.
|
Mode controls what type or "mode" of Composition will be used.
|
||||||
|
|
||||||
|
|
||||||
"Resources" (the default) indicates that a Composition uses what is
|
"Pipeline" indicates that a Composition specifies a pipeline of
|
||||||
commonly referred to as "Patch & Transform" or P&T composition. This mode
|
Composition Functions, each of which is responsible for producing
|
||||||
of Composition uses an array of resources, each a template for a composed
|
composed resources that Crossplane should create or update.
|
||||||
resource.
|
|
||||||
|
|
||||||
|
|
||||||
"Pipeline" indicates that a Composition specifies a pipeline
|
"Resources" indicates that a Composition uses what is commonly referred
|
||||||
of Composition Functions, each of which is responsible for producing
|
to as "Patch & Transform" or P&T composition. This mode of Composition
|
||||||
composed resources that Crossplane should create or update. THE PIPELINE
|
uses an array of resources, each a template for a composed resource.
|
||||||
MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane
|
|
||||||
feature flag is disabled.
|
|
||||||
|
All Compositions should use Pipeline mode. Resources mode is deprecated.
|
||||||
|
Resources mode won't be removed in Crossplane 1.x, and will remain the
|
||||||
|
default to avoid breaking legacy Compositions. However, it's no longer
|
||||||
|
accepting new features, and only accepting security related bug fixes.
|
||||||
enum:
|
enum:
|
||||||
- Resources
|
- Resources
|
||||||
- Pipeline
|
- Pipeline
|
||||||
|
|
@ -602,6 +615,9 @@ spec:
|
||||||
|
|
||||||
PatchSets are only used by the "Resources" mode of Composition. They
|
PatchSets are only used by the "Resources" mode of Composition. They
|
||||||
are ignored by other modes.
|
are ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
|
Deprecated: Use Composition Functions instead.
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
A PatchSet is a set of patches that can be reused from all resources within
|
A PatchSet is a set of patches that can be reused from all resources within
|
||||||
|
|
@ -695,7 +711,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options
|
description: MergeOptions Specifies merge options
|
||||||
on a field path
|
on a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -871,6 +887,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -880,6 +897,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -976,13 +994,49 @@ spec:
|
||||||
|
|
||||||
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
||||||
ignored by other modes.
|
ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
THIS IS A BETA FIELD. It is not honored if the relevant Crossplane
|
|
||||||
feature flag is disabled.
|
|
||||||
items:
|
items:
|
||||||
description: A PipelineStep in a Composition Function pipeline.
|
description: A PipelineStep in a Composition Function pipeline.
|
||||||
properties:
|
properties:
|
||||||
|
credentials:
|
||||||
|
description: Credentials are optional credentials that the Composition
|
||||||
|
Function needs.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
FunctionCredentials are optional credentials that a Composition Function
|
||||||
|
needs to run.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of this set of credentials.
|
||||||
|
type: string
|
||||||
|
secretRef:
|
||||||
|
description: |-
|
||||||
|
A SecretRef is a reference to a secret containing credentials that should
|
||||||
|
be supplied to the function.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the secret.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: Namespace of the secret.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- namespace
|
||||||
|
type: object
|
||||||
|
source:
|
||||||
|
description: Source of the function credentials.
|
||||||
|
enum:
|
||||||
|
- None
|
||||||
|
- Secret
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- source
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- name
|
||||||
|
x-kubernetes-list-type: map
|
||||||
functionRef:
|
functionRef:
|
||||||
description: |-
|
description: |-
|
||||||
FunctionRef is a reference to the Composition Function this step should
|
FunctionRef is a reference to the Composition Function this step should
|
||||||
|
|
@ -1010,6 +1064,9 @@ spec:
|
||||||
- step
|
- step
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- step
|
||||||
|
x-kubernetes-list-type: map
|
||||||
publishConnectionDetailsWithStoreConfigRef:
|
publishConnectionDetailsWithStoreConfigRef:
|
||||||
default:
|
default:
|
||||||
name: default
|
name: default
|
||||||
|
|
@ -1037,6 +1094,9 @@ spec:
|
||||||
|
|
||||||
Resources are only used by the "Resources" mode of Composition. They are
|
Resources are only used by the "Resources" mode of Composition. They are
|
||||||
ignored by other modes.
|
ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
|
Deprecated: Use Composition Functions instead.
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
ComposedTemplate is used to provide information about how the composed resource
|
ComposedTemplate is used to provide information about how the composed resource
|
||||||
|
|
@ -1191,7 +1251,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options
|
description: MergeOptions Specifies merge options
|
||||||
on a field path
|
on a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -1367,6 +1427,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -1376,6 +1437,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -1471,7 +1533,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
||||||
for consumption
|
for consumption.
|
||||||
properties:
|
properties:
|
||||||
fieldPath:
|
fieldPath:
|
||||||
description: FieldPath shows the path of the field whose
|
description: FieldPath shows the path of the field whose
|
||||||
|
|
@ -1528,6 +1590,9 @@ spec:
|
||||||
description: Revision number. Newer revisions have larger numbers.
|
description: Revision number. Newer revisions have larger numbers.
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
writeConnectionSecretsToNamespace:
|
writeConnectionSecretsToNamespace:
|
||||||
description: |-
|
description: |-
|
||||||
WriteConnectionSecretsToNamespace specifies the namespace in which the
|
WriteConnectionSecretsToNamespace specifies the namespace in which the
|
||||||
|
|
@ -1564,6 +1629,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
@ -1610,8 +1682,12 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
A CompositionRevision represents a revision in time of a Composition.
|
A CompositionRevision represents a revision of a Composition. Crossplane
|
||||||
Revisions are created by Crossplane; they should be treated as immutable.
|
creates new revisions when there are changes to the Composition.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages CompositionRevisions. Don't directly edit
|
||||||
|
CompositionRevisions.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -1650,6 +1726,9 @@ spec:
|
||||||
- apiVersion
|
- apiVersion
|
||||||
- kind
|
- kind
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
environment:
|
environment:
|
||||||
description: |-
|
description: |-
|
||||||
Environment configures the environment in which resources are rendered.
|
Environment configures the environment in which resources are rendered.
|
||||||
|
|
@ -1859,7 +1938,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options on
|
description: MergeOptions Specifies merge options on
|
||||||
a field path
|
a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -2034,6 +2113,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -2043,6 +2123,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -2154,17 +2235,20 @@ spec:
|
||||||
Mode controls what type or "mode" of Composition will be used.
|
Mode controls what type or "mode" of Composition will be used.
|
||||||
|
|
||||||
|
|
||||||
"Resources" (the default) indicates that a Composition uses what is
|
"Pipeline" indicates that a Composition specifies a pipeline of
|
||||||
commonly referred to as "Patch & Transform" or P&T composition. This mode
|
Composition Functions, each of which is responsible for producing
|
||||||
of Composition uses an array of resources, each a template for a composed
|
composed resources that Crossplane should create or update.
|
||||||
resource.
|
|
||||||
|
|
||||||
|
|
||||||
"Pipeline" indicates that a Composition specifies a pipeline
|
"Resources" indicates that a Composition uses what is commonly referred
|
||||||
of Composition Functions, each of which is responsible for producing
|
to as "Patch & Transform" or P&T composition. This mode of Composition
|
||||||
composed resources that Crossplane should create or update. THE PIPELINE
|
uses an array of resources, each a template for a composed resource.
|
||||||
MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane
|
|
||||||
feature flag is disabled.
|
|
||||||
|
All Compositions should use Pipeline mode. Resources mode is deprecated.
|
||||||
|
Resources mode won't be removed in Crossplane 1.x, and will remain the
|
||||||
|
default to avoid breaking legacy Compositions. However, it's no longer
|
||||||
|
accepting new features, and only accepting security related bug fixes.
|
||||||
enum:
|
enum:
|
||||||
- Resources
|
- Resources
|
||||||
- Pipeline
|
- Pipeline
|
||||||
|
|
@ -2178,6 +2262,9 @@ spec:
|
||||||
|
|
||||||
PatchSets are only used by the "Resources" mode of Composition. They
|
PatchSets are only used by the "Resources" mode of Composition. They
|
||||||
are ignored by other modes.
|
are ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
|
Deprecated: Use Composition Functions instead.
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
A PatchSet is a set of patches that can be reused from all resources within
|
A PatchSet is a set of patches that can be reused from all resources within
|
||||||
|
|
@ -2271,7 +2358,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options
|
description: MergeOptions Specifies merge options
|
||||||
on a field path
|
on a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -2447,6 +2534,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -2456,6 +2544,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -2552,13 +2641,49 @@ spec:
|
||||||
|
|
||||||
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
||||||
ignored by other modes.
|
ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
THIS IS A BETA FIELD. It is not honored if the relevant Crossplane
|
|
||||||
feature flag is disabled.
|
|
||||||
items:
|
items:
|
||||||
description: A PipelineStep in a Composition Function pipeline.
|
description: A PipelineStep in a Composition Function pipeline.
|
||||||
properties:
|
properties:
|
||||||
|
credentials:
|
||||||
|
description: Credentials are optional credentials that the Composition
|
||||||
|
Function needs.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
FunctionCredentials are optional credentials that a Composition Function
|
||||||
|
needs to run.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of this set of credentials.
|
||||||
|
type: string
|
||||||
|
secretRef:
|
||||||
|
description: |-
|
||||||
|
A SecretRef is a reference to a secret containing credentials that should
|
||||||
|
be supplied to the function.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the secret.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: Namespace of the secret.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- namespace
|
||||||
|
type: object
|
||||||
|
source:
|
||||||
|
description: Source of the function credentials.
|
||||||
|
enum:
|
||||||
|
- None
|
||||||
|
- Secret
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- source
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- name
|
||||||
|
x-kubernetes-list-type: map
|
||||||
functionRef:
|
functionRef:
|
||||||
description: |-
|
description: |-
|
||||||
FunctionRef is a reference to the Composition Function this step should
|
FunctionRef is a reference to the Composition Function this step should
|
||||||
|
|
@ -2586,6 +2711,9 @@ spec:
|
||||||
- step
|
- step
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- step
|
||||||
|
x-kubernetes-list-type: map
|
||||||
publishConnectionDetailsWithStoreConfigRef:
|
publishConnectionDetailsWithStoreConfigRef:
|
||||||
default:
|
default:
|
||||||
name: default
|
name: default
|
||||||
|
|
@ -2613,6 +2741,9 @@ spec:
|
||||||
|
|
||||||
Resources are only used by the "Resources" mode of Composition. They are
|
Resources are only used by the "Resources" mode of Composition. They are
|
||||||
ignored by other modes.
|
ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
|
Deprecated: Use Composition Functions instead.
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
ComposedTemplate is used to provide information about how the composed resource
|
ComposedTemplate is used to provide information about how the composed resource
|
||||||
|
|
@ -2767,7 +2898,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options
|
description: MergeOptions Specifies merge options
|
||||||
on a field path
|
on a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -2943,6 +3074,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -2952,6 +3084,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -3047,7 +3180,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
||||||
for consumption
|
for consumption.
|
||||||
properties:
|
properties:
|
||||||
fieldPath:
|
fieldPath:
|
||||||
description: FieldPath shows the path of the field whose
|
description: FieldPath shows the path of the field whose
|
||||||
|
|
@ -3104,6 +3237,9 @@ spec:
|
||||||
description: Revision number. Newer revisions have larger numbers.
|
description: Revision number. Newer revisions have larger numbers.
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
writeConnectionSecretsToNamespace:
|
writeConnectionSecretsToNamespace:
|
||||||
description: |-
|
description: |-
|
||||||
WriteConnectionSecretsToNamespace specifies the namespace in which the
|
WriteConnectionSecretsToNamespace specifies the namespace in which the
|
||||||
|
|
@ -3140,6 +3276,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -30,7 +31,13 @@ spec:
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A Composition specifies how a composite resource should be composed.
|
description: |-
|
||||||
|
A Composition defines a collection of managed resources or functions that
|
||||||
|
Crossplane uses to create and manage new composite resources.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Compositions](https://docs.crossplane.io/latest/concepts/compositions).
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -67,6 +74,9 @@ spec:
|
||||||
- apiVersion
|
- apiVersion
|
||||||
- kind
|
- kind
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
environment:
|
environment:
|
||||||
description: |-
|
description: |-
|
||||||
Environment configures the environment in which resources are rendered.
|
Environment configures the environment in which resources are rendered.
|
||||||
|
|
@ -276,7 +286,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options on
|
description: MergeOptions Specifies merge options on
|
||||||
a field path
|
a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -451,6 +461,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -460,6 +471,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -571,17 +583,20 @@ spec:
|
||||||
Mode controls what type or "mode" of Composition will be used.
|
Mode controls what type or "mode" of Composition will be used.
|
||||||
|
|
||||||
|
|
||||||
"Resources" (the default) indicates that a Composition uses what is
|
"Pipeline" indicates that a Composition specifies a pipeline of
|
||||||
commonly referred to as "Patch & Transform" or P&T composition. This mode
|
Composition Functions, each of which is responsible for producing
|
||||||
of Composition uses an array of resources, each a template for a composed
|
composed resources that Crossplane should create or update.
|
||||||
resource.
|
|
||||||
|
|
||||||
|
|
||||||
"Pipeline" indicates that a Composition specifies a pipeline
|
"Resources" indicates that a Composition uses what is commonly referred
|
||||||
of Composition Functions, each of which is responsible for producing
|
to as "Patch & Transform" or P&T composition. This mode of Composition
|
||||||
composed resources that Crossplane should create or update. THE PIPELINE
|
uses an array of resources, each a template for a composed resource.
|
||||||
MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane
|
|
||||||
feature flag is disabled.
|
|
||||||
|
All Compositions should use Pipeline mode. Resources mode is deprecated.
|
||||||
|
Resources mode won't be removed in Crossplane 1.x, and will remain the
|
||||||
|
default to avoid breaking legacy Compositions. However, it's no longer
|
||||||
|
accepting new features, and only accepting security related bug fixes.
|
||||||
enum:
|
enum:
|
||||||
- Resources
|
- Resources
|
||||||
- Pipeline
|
- Pipeline
|
||||||
|
|
@ -595,6 +610,9 @@ spec:
|
||||||
|
|
||||||
PatchSets are only used by the "Resources" mode of Composition. They
|
PatchSets are only used by the "Resources" mode of Composition. They
|
||||||
are ignored by other modes.
|
are ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
|
Deprecated: Use Composition Functions instead.
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
A PatchSet is a set of patches that can be reused from all resources within
|
A PatchSet is a set of patches that can be reused from all resources within
|
||||||
|
|
@ -688,7 +706,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options
|
description: MergeOptions Specifies merge options
|
||||||
on a field path
|
on a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -864,6 +882,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -873,6 +892,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -969,13 +989,49 @@ spec:
|
||||||
|
|
||||||
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
||||||
ignored by other modes.
|
ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
THIS IS A BETA FIELD. It is not honored if the relevant Crossplane
|
|
||||||
feature flag is disabled.
|
|
||||||
items:
|
items:
|
||||||
description: A PipelineStep in a Composition Function pipeline.
|
description: A PipelineStep in a Composition Function pipeline.
|
||||||
properties:
|
properties:
|
||||||
|
credentials:
|
||||||
|
description: Credentials are optional credentials that the Composition
|
||||||
|
Function needs.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
FunctionCredentials are optional credentials that a Composition Function
|
||||||
|
needs to run.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of this set of credentials.
|
||||||
|
type: string
|
||||||
|
secretRef:
|
||||||
|
description: |-
|
||||||
|
A SecretRef is a reference to a secret containing credentials that should
|
||||||
|
be supplied to the function.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the secret.
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: Namespace of the secret.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- namespace
|
||||||
|
type: object
|
||||||
|
source:
|
||||||
|
description: Source of the function credentials.
|
||||||
|
enum:
|
||||||
|
- None
|
||||||
|
- Secret
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- source
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- name
|
||||||
|
x-kubernetes-list-type: map
|
||||||
functionRef:
|
functionRef:
|
||||||
description: |-
|
description: |-
|
||||||
FunctionRef is a reference to the Composition Function this step should
|
FunctionRef is a reference to the Composition Function this step should
|
||||||
|
|
@ -1003,6 +1059,9 @@ spec:
|
||||||
- step
|
- step
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- step
|
||||||
|
x-kubernetes-list-type: map
|
||||||
publishConnectionDetailsWithStoreConfigRef:
|
publishConnectionDetailsWithStoreConfigRef:
|
||||||
default:
|
default:
|
||||||
name: default
|
name: default
|
||||||
|
|
@ -1030,6 +1089,9 @@ spec:
|
||||||
|
|
||||||
Resources are only used by the "Resources" mode of Composition. They are
|
Resources are only used by the "Resources" mode of Composition. They are
|
||||||
ignored by other modes.
|
ignored by other modes.
|
||||||
|
|
||||||
|
|
||||||
|
Deprecated: Use Composition Functions instead.
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
ComposedTemplate is used to provide information about how the composed resource
|
ComposedTemplate is used to provide information about how the composed resource
|
||||||
|
|
@ -1184,7 +1246,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
mergeOptions:
|
mergeOptions:
|
||||||
description: MergeOptions Specifies merge options
|
description: MergeOptions Specifies merge options
|
||||||
on a field path
|
on a field path.
|
||||||
properties:
|
properties:
|
||||||
appendSlice:
|
appendSlice:
|
||||||
description: Specifies that already existing elements
|
description: Specifies that already existing elements
|
||||||
|
|
@ -1360,6 +1422,7 @@ spec:
|
||||||
`ToJson` converts any input value into its raw JSON representation.
|
`ToJson` converts any input value into its raw JSON representation.
|
||||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||||
converted to JSON.
|
converted to JSON.
|
||||||
|
`ToAdler32` generate a addler32 hash based on the input string.
|
||||||
enum:
|
enum:
|
||||||
- ToUpper
|
- ToUpper
|
||||||
- ToLower
|
- ToLower
|
||||||
|
|
@ -1369,6 +1432,7 @@ spec:
|
||||||
- ToSha1
|
- ToSha1
|
||||||
- ToSha256
|
- ToSha256
|
||||||
- ToSha512
|
- ToSha512
|
||||||
|
- ToAdler32
|
||||||
type: string
|
type: string
|
||||||
fmt:
|
fmt:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -1464,7 +1528,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
description: |-
|
description: |-
|
||||||
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
||||||
for consumption
|
for consumption.
|
||||||
properties:
|
properties:
|
||||||
fieldPath:
|
fieldPath:
|
||||||
description: FieldPath shows the path of the field whose
|
description: FieldPath shows the path of the field whose
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -24,8 +25,13 @@ spec:
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A EnvironmentConfig contains a set of arbitrary, unstructured
|
description: |-
|
||||||
values.
|
An EnvironmentConfig contains user-defined unstructured values for
|
||||||
|
use in a Composition.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about EnvironmentConfigs](https://docs.crossplane.io/latest/concepts/environment-configs).
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -28,8 +29,16 @@ spec:
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A Usage defines a deletion blocking relationship between two
|
description: |-
|
||||||
resources.
|
A Usage defines a deletion blocking relationship between two resources.
|
||||||
|
|
||||||
|
|
||||||
|
Usages prevent accidental deletion of a single resource or deletion of
|
||||||
|
resources with dependent resources.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Compositions](https://docs.crossplane.io/latest/concepts/usages).
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -168,6 +177,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -41,7 +42,13 @@ spec:
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A ConfigurationRevision that has been added to Crossplane.
|
description: |-
|
||||||
|
A ConfigurationRevision represents a revision of a Configuration. Crossplane
|
||||||
|
creates new revisions when there are changes to a Configuration.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages ConfigurationRevision. Don't directly edit
|
||||||
|
ConfigurationRevisions.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -70,7 +77,7 @@ spec:
|
||||||
Map of string keys and values that can be used to organize and categorize
|
Map of string keys and values that can be used to organize and categorize
|
||||||
(scope and select) objects. May match selectors of replication controllers
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
and services.
|
and services.
|
||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
desiredState:
|
desiredState:
|
||||||
description: DesiredState of the PackageRevision. Can be either Active
|
description: DesiredState of the PackageRevision. Can be either Active
|
||||||
|
|
@ -153,6 +160,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
@ -229,6 +243,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
nonResourceURLs:
|
nonResourceURLs:
|
||||||
description: |-
|
description: |-
|
||||||
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
||||||
|
|
@ -237,6 +252,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resourceNames:
|
resourceNames:
|
||||||
description: ResourceNames is an optional white list of names
|
description: ResourceNames is an optional white list of names
|
||||||
that the rule applies to. An empty set means that everything
|
that the rule applies to. An empty set means that everything
|
||||||
|
|
@ -244,18 +260,21 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resources:
|
resources:
|
||||||
description: Resources is a list of resources this rule applies
|
description: Resources is a list of resources this rule applies
|
||||||
to. '*' represents all resources.
|
to. '*' represents all resources.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
verbs:
|
verbs:
|
||||||
description: Verbs is a list of Verbs that apply to ALL the
|
description: Verbs is a list of Verbs that apply to ALL the
|
||||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- verbs
|
- verbs
|
||||||
type: object
|
type: object
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -32,8 +33,14 @@ spec:
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: Configuration is the CRD type for a request to add a configuration
|
description: |-
|
||||||
to Crossplane.
|
A Configuration installs an OCI compatible Crossplane package, extending
|
||||||
|
Crossplane with support for new kinds of CompositeResourceDefinitions and
|
||||||
|
Compositions.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Configuration packages](https://docs.crossplane.io/latest/concepts/packages).
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -64,7 +71,7 @@ spec:
|
||||||
Map of string keys and values that can be used to organize and categorize
|
Map of string keys and values that can be used to organize and categorize
|
||||||
(scope and select) objects. May match selectors of replication controllers
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
and services.
|
and services.
|
||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
ignoreCrossplaneConstraints:
|
ignoreCrossplaneConstraints:
|
||||||
default: false
|
default: false
|
||||||
|
|
@ -145,6 +152,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -24,10 +25,15 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
ControllerConfig is the CRD type for a packaged controller configuration.
|
A ControllerConfig applies settings to controllers like Provider pods.
|
||||||
Deprecated: This API is replaced by DeploymentRuntimeConfig, and is scheduled
|
Deprecated: Use the
|
||||||
to be removed in a future release. See the design doc for more details:
|
[DeploymentRuntimeConfig](https://docs.crossplane.io/latest/concepts/providers#runtime-configuration)
|
||||||
https://github.com/crossplane/crossplane/blob/11bbe13ea3604928cc4e24e8d0d18f3f5f7e847c/design/one-pager-package-runtime-config.md
|
instead.
|
||||||
|
|
||||||
|
|
||||||
|
Read the
|
||||||
|
[Package Runtime Configuration](https://github.com/crossplane/crossplane/blob/11bbe13ea3604928cc4e24e8d0d18f3f5f7e847c/design/one-pager-package-runtime-config.md)
|
||||||
|
design document for more details.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -106,11 +112,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchFields:
|
matchFields:
|
||||||
description: A list of node selector requirements
|
description: A list of node selector requirements
|
||||||
by node's fields.
|
by node's fields.
|
||||||
|
|
@ -138,11 +146,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
weight:
|
weight:
|
||||||
|
|
@ -155,6 +165,7 @@ spec:
|
||||||
- weight
|
- weight
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
requiredDuringSchedulingIgnoredDuringExecution:
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
description: |-
|
description: |-
|
||||||
If the affinity requirements specified by this field are not met at
|
If the affinity requirements specified by this field are not met at
|
||||||
|
|
@ -199,11 +210,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchFields:
|
matchFields:
|
||||||
description: A list of node selector requirements
|
description: A list of node selector requirements
|
||||||
by node's fields.
|
by node's fields.
|
||||||
|
|
@ -231,14 +244,17 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- nodeSelectorTerms
|
- nodeSelectorTerms
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -299,11 +315,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -318,12 +336,12 @@ spec:
|
||||||
description: |-
|
description: |-
|
||||||
MatchLabelKeys is a set of pod label keys to select which pods will
|
MatchLabelKeys is a set of pod label keys to select which pods will
|
||||||
be taken into consideration. The keys are used to lookup values from the
|
be taken into consideration. The keys are used to lookup values from the
|
||||||
incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`
|
incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
|
||||||
to select the group of existing pods which pods will be taken into consideration
|
to select the group of existing pods which pods will be taken into consideration
|
||||||
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
||||||
pod labels will be ignored. The default value is empty.
|
pod labels will be ignored. The default value is empty.
|
||||||
The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
|
The same key is forbidden to exist in both matchLabelKeys and labelSelector.
|
||||||
Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
|
Also, matchLabelKeys cannot be set when labelSelector isn't set.
|
||||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -333,12 +351,12 @@ spec:
|
||||||
description: |-
|
description: |-
|
||||||
MismatchLabelKeys is a set of pod label keys to select which pods will
|
MismatchLabelKeys is a set of pod label keys to select which pods will
|
||||||
be taken into consideration. The keys are used to lookup values from the
|
be taken into consideration. The keys are used to lookup values from the
|
||||||
incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`
|
incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
|
||||||
to select the group of existing pods which pods will be taken into consideration
|
to select the group of existing pods which pods will be taken into consideration
|
||||||
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
||||||
pod labels will be ignored. The default value is empty.
|
pod labels will be ignored. The default value is empty.
|
||||||
The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
|
The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
|
||||||
Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
|
Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
|
||||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -379,11 +397,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -403,6 +423,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
topologyKey:
|
topologyKey:
|
||||||
description: |-
|
description: |-
|
||||||
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
||||||
|
|
@ -425,6 +446,7 @@ spec:
|
||||||
- weight
|
- weight
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
requiredDuringSchedulingIgnoredDuringExecution:
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
description: |-
|
description: |-
|
||||||
If the affinity requirements specified by this field are not met at
|
If the affinity requirements specified by this field are not met at
|
||||||
|
|
@ -474,11 +496,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -493,12 +517,12 @@ spec:
|
||||||
description: |-
|
description: |-
|
||||||
MatchLabelKeys is a set of pod label keys to select which pods will
|
MatchLabelKeys is a set of pod label keys to select which pods will
|
||||||
be taken into consideration. The keys are used to lookup values from the
|
be taken into consideration. The keys are used to lookup values from the
|
||||||
incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`
|
incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
|
||||||
to select the group of existing pods which pods will be taken into consideration
|
to select the group of existing pods which pods will be taken into consideration
|
||||||
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
||||||
pod labels will be ignored. The default value is empty.
|
pod labels will be ignored. The default value is empty.
|
||||||
The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
|
The same key is forbidden to exist in both matchLabelKeys and labelSelector.
|
||||||
Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
|
Also, matchLabelKeys cannot be set when labelSelector isn't set.
|
||||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -508,12 +532,12 @@ spec:
|
||||||
description: |-
|
description: |-
|
||||||
MismatchLabelKeys is a set of pod label keys to select which pods will
|
MismatchLabelKeys is a set of pod label keys to select which pods will
|
||||||
be taken into consideration. The keys are used to lookup values from the
|
be taken into consideration. The keys are used to lookup values from the
|
||||||
incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`
|
incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
|
||||||
to select the group of existing pods which pods will be taken into consideration
|
to select the group of existing pods which pods will be taken into consideration
|
||||||
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
||||||
pod labels will be ignored. The default value is empty.
|
pod labels will be ignored. The default value is empty.
|
||||||
The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
|
The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
|
||||||
Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
|
Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
|
||||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -553,11 +577,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -577,6 +603,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
topologyKey:
|
topologyKey:
|
||||||
description: |-
|
description: |-
|
||||||
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
||||||
|
|
@ -589,6 +616,7 @@ spec:
|
||||||
- topologyKey
|
- topologyKey
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
podAntiAffinity:
|
podAntiAffinity:
|
||||||
description: Describes pod anti-affinity scheduling rules (e.g.
|
description: Describes pod anti-affinity scheduling rules (e.g.
|
||||||
|
|
@ -646,11 +674,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -665,12 +695,12 @@ spec:
|
||||||
description: |-
|
description: |-
|
||||||
MatchLabelKeys is a set of pod label keys to select which pods will
|
MatchLabelKeys is a set of pod label keys to select which pods will
|
||||||
be taken into consideration. The keys are used to lookup values from the
|
be taken into consideration. The keys are used to lookup values from the
|
||||||
incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`
|
incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
|
||||||
to select the group of existing pods which pods will be taken into consideration
|
to select the group of existing pods which pods will be taken into consideration
|
||||||
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
||||||
pod labels will be ignored. The default value is empty.
|
pod labels will be ignored. The default value is empty.
|
||||||
The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
|
The same key is forbidden to exist in both matchLabelKeys and labelSelector.
|
||||||
Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
|
Also, matchLabelKeys cannot be set when labelSelector isn't set.
|
||||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -680,12 +710,12 @@ spec:
|
||||||
description: |-
|
description: |-
|
||||||
MismatchLabelKeys is a set of pod label keys to select which pods will
|
MismatchLabelKeys is a set of pod label keys to select which pods will
|
||||||
be taken into consideration. The keys are used to lookup values from the
|
be taken into consideration. The keys are used to lookup values from the
|
||||||
incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`
|
incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
|
||||||
to select the group of existing pods which pods will be taken into consideration
|
to select the group of existing pods which pods will be taken into consideration
|
||||||
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
||||||
pod labels will be ignored. The default value is empty.
|
pod labels will be ignored. The default value is empty.
|
||||||
The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
|
The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
|
||||||
Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
|
Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
|
||||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -726,11 +756,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -750,6 +782,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
topologyKey:
|
topologyKey:
|
||||||
description: |-
|
description: |-
|
||||||
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
||||||
|
|
@ -772,6 +805,7 @@ spec:
|
||||||
- weight
|
- weight
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
requiredDuringSchedulingIgnoredDuringExecution:
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
description: |-
|
description: |-
|
||||||
If the anti-affinity requirements specified by this field are not met at
|
If the anti-affinity requirements specified by this field are not met at
|
||||||
|
|
@ -821,11 +855,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -840,12 +876,12 @@ spec:
|
||||||
description: |-
|
description: |-
|
||||||
MatchLabelKeys is a set of pod label keys to select which pods will
|
MatchLabelKeys is a set of pod label keys to select which pods will
|
||||||
be taken into consideration. The keys are used to lookup values from the
|
be taken into consideration. The keys are used to lookup values from the
|
||||||
incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`
|
incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
|
||||||
to select the group of existing pods which pods will be taken into consideration
|
to select the group of existing pods which pods will be taken into consideration
|
||||||
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
||||||
pod labels will be ignored. The default value is empty.
|
pod labels will be ignored. The default value is empty.
|
||||||
The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
|
The same key is forbidden to exist in both matchLabelKeys and labelSelector.
|
||||||
Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
|
Also, matchLabelKeys cannot be set when labelSelector isn't set.
|
||||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -855,12 +891,12 @@ spec:
|
||||||
description: |-
|
description: |-
|
||||||
MismatchLabelKeys is a set of pod label keys to select which pods will
|
MismatchLabelKeys is a set of pod label keys to select which pods will
|
||||||
be taken into consideration. The keys are used to lookup values from the
|
be taken into consideration. The keys are used to lookup values from the
|
||||||
incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`
|
incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
|
||||||
to select the group of existing pods which pods will be taken into consideration
|
to select the group of existing pods which pods will be taken into consideration
|
||||||
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
|
||||||
pod labels will be ignored. The default value is empty.
|
pod labels will be ignored. The default value is empty.
|
||||||
The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
|
The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
|
||||||
Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
|
Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
|
||||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -900,11 +936,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -924,6 +962,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
topologyKey:
|
topologyKey:
|
||||||
description: |-
|
description: |-
|
||||||
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
||||||
|
|
@ -936,6 +975,7 @@ spec:
|
||||||
- topologyKey
|
- topologyKey
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
args:
|
args:
|
||||||
|
|
@ -1157,7 +1197,7 @@ spec:
|
||||||
Annotations is an unstructured key value map stored with a resource that may be
|
Annotations is an unstructured key value map stored with a resource that may be
|
||||||
set by external tools to store and retrieve arbitrary metadata. They are not
|
set by external tools to store and retrieve arbitrary metadata. They are not
|
||||||
queryable and should be preserved when modifying objects.
|
queryable and should be preserved when modifying objects.
|
||||||
More info: http://kubernetes.io/docs/user-guide/annotations
|
More info: http:https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
|
||||||
type: object
|
type: object
|
||||||
labels:
|
labels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -1168,7 +1208,7 @@ spec:
|
||||||
labels on the pod, not the pod selector. Labels will be merged
|
labels on the pod, not the pod selector. Labels will be merged
|
||||||
with internal labels used by crossplane, and labels with a
|
with internal labels used by crossplane, and labels with a
|
||||||
crossplane.io key might be overwritten.
|
crossplane.io key might be overwritten.
|
||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
nodeName:
|
nodeName:
|
||||||
|
|
@ -1190,6 +1230,29 @@ spec:
|
||||||
PodSecurityContext holds pod-level security attributes and common container settings.
|
PodSecurityContext holds pod-level security attributes and common container settings.
|
||||||
Optional: Defaults to empty. See type description for default values of each field.
|
Optional: Defaults to empty. See type description for default values of each field.
|
||||||
properties:
|
properties:
|
||||||
|
appArmorProfile:
|
||||||
|
description: |-
|
||||||
|
appArmorProfile is the AppArmor options to use by the containers in this pod.
|
||||||
|
Note that this field cannot be set when spec.os.name is windows.
|
||||||
|
properties:
|
||||||
|
localhostProfile:
|
||||||
|
description: |-
|
||||||
|
localhostProfile indicates a profile loaded on the node that should be used.
|
||||||
|
The profile must be preconfigured on the node to work.
|
||||||
|
Must match the loaded name of the profile.
|
||||||
|
Must be set if and only if type is "Localhost".
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
type indicates which kind of AppArmor profile will be applied.
|
||||||
|
Valid options are:
|
||||||
|
Localhost - a profile pre-loaded on the node.
|
||||||
|
RuntimeDefault - the container runtime's default profile.
|
||||||
|
Unconfined - no AppArmor enforcement.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
fsGroup:
|
fsGroup:
|
||||||
description: |-
|
description: |-
|
||||||
A special supplemental group that applies to all containers in a pod.
|
A special supplemental group that applies to all containers in a pod.
|
||||||
|
|
@ -1309,6 +1372,7 @@ spec:
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
sysctls:
|
sysctls:
|
||||||
description: |-
|
description: |-
|
||||||
Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
|
Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
|
||||||
|
|
@ -1328,6 +1392,7 @@ spec:
|
||||||
- value
|
- value
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
windowsOptions:
|
windowsOptions:
|
||||||
description: |-
|
description: |-
|
||||||
The Windows specific settings applied to all containers.
|
The Windows specific settings applied to all containers.
|
||||||
|
|
@ -1482,7 +1547,7 @@ spec:
|
||||||
to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
|
to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
|
||||||
If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
|
If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
|
||||||
empty definition that uses the default runtime handler.
|
empty definition that uses the default runtime handler.
|
||||||
More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md
|
More info: https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/585-runtime-class/README.md
|
||||||
This is a beta feature as of Kubernetes v1.14.
|
This is a beta feature as of Kubernetes v1.14.
|
||||||
type: string
|
type: string
|
||||||
securityContext:
|
securityContext:
|
||||||
|
|
@ -1500,6 +1565,30 @@ spec:
|
||||||
2) has CAP_SYS_ADMIN
|
2) has CAP_SYS_ADMIN
|
||||||
Note that this field cannot be set when spec.os.name is windows.
|
Note that this field cannot be set when spec.os.name is windows.
|
||||||
type: boolean
|
type: boolean
|
||||||
|
appArmorProfile:
|
||||||
|
description: |-
|
||||||
|
appArmorProfile is the AppArmor options to use by this container. If set, this profile
|
||||||
|
overrides the pod's appArmorProfile.
|
||||||
|
Note that this field cannot be set when spec.os.name is windows.
|
||||||
|
properties:
|
||||||
|
localhostProfile:
|
||||||
|
description: |-
|
||||||
|
localhostProfile indicates a profile loaded on the node that should be used.
|
||||||
|
The profile must be preconfigured on the node to work.
|
||||||
|
Must match the loaded name of the profile.
|
||||||
|
Must be set if and only if type is "Localhost".
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
type indicates which kind of AppArmor profile will be applied.
|
||||||
|
Valid options are:
|
||||||
|
Localhost - a profile pre-loaded on the node.
|
||||||
|
RuntimeDefault - the container runtime's default profile.
|
||||||
|
Unconfined - no AppArmor enforcement.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
capabilities:
|
capabilities:
|
||||||
description: |-
|
description: |-
|
||||||
The capabilities to add/drop when running containers.
|
The capabilities to add/drop when running containers.
|
||||||
|
|
@ -1512,12 +1601,14 @@ spec:
|
||||||
description: Capability represent POSIX capabilities type
|
description: Capability represent POSIX capabilities type
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
drop:
|
drop:
|
||||||
description: Removed capabilities
|
description: Removed capabilities
|
||||||
items:
|
items:
|
||||||
description: Capability represent POSIX capabilities type
|
description: Capability represent POSIX capabilities type
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
privileged:
|
privileged:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -1725,6 +1816,8 @@ spec:
|
||||||
to container and the other way around.
|
to container and the other way around.
|
||||||
When not set, MountPropagationNone is used.
|
When not set, MountPropagationNone is used.
|
||||||
This field is beta in 1.10.
|
This field is beta in 1.10.
|
||||||
|
When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
|
||||||
|
(which defaults to None).
|
||||||
type: string
|
type: string
|
||||||
name:
|
name:
|
||||||
description: This must match the Name of a Volume.
|
description: This must match the Name of a Volume.
|
||||||
|
|
@ -1734,6 +1827,29 @@ spec:
|
||||||
Mounted read-only if true, read-write otherwise (false or unspecified).
|
Mounted read-only if true, read-write otherwise (false or unspecified).
|
||||||
Defaults to false.
|
Defaults to false.
|
||||||
type: boolean
|
type: boolean
|
||||||
|
recursiveReadOnly:
|
||||||
|
description: |-
|
||||||
|
RecursiveReadOnly specifies whether read-only mounts should be handled
|
||||||
|
recursively.
|
||||||
|
|
||||||
|
|
||||||
|
If ReadOnly is false, this field has no meaning and must be unspecified.
|
||||||
|
|
||||||
|
|
||||||
|
If ReadOnly is true, and this field is set to Disabled, the mount is not made
|
||||||
|
recursively read-only. If this field is set to IfPossible, the mount is made
|
||||||
|
recursively read-only, if it is supported by the container runtime. If this
|
||||||
|
field is set to Enabled, the mount is made recursively read-only if it is
|
||||||
|
supported by the container runtime, otherwise the pod will not be started and
|
||||||
|
an error will be generated to indicate the reason.
|
||||||
|
|
||||||
|
|
||||||
|
If this field is set to IfPossible or Enabled, MountPropagation must be set to
|
||||||
|
None (or be unspecified, which defaults to None).
|
||||||
|
|
||||||
|
|
||||||
|
If this field is not specified, it is treated as an equivalent of Disabled.
|
||||||
|
type: string
|
||||||
subPath:
|
subPath:
|
||||||
description: |-
|
description: |-
|
||||||
Path within the volume from which the container's volume should be mounted.
|
Path within the volume from which the container's volume should be mounted.
|
||||||
|
|
@ -1862,6 +1978,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
path:
|
path:
|
||||||
description: 'path is Optional: Used as the mounted root,
|
description: 'path is Optional: Used as the mounted root,
|
||||||
rather than the full Ceph tree, default is /'
|
rather than the full Ceph tree, default is /'
|
||||||
|
|
@ -1989,6 +2106,7 @@ spec:
|
||||||
- path
|
- path
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
name:
|
name:
|
||||||
description: |-
|
description: |-
|
||||||
Name of the referent.
|
Name of the referent.
|
||||||
|
|
@ -2072,8 +2190,8 @@ spec:
|
||||||
properties:
|
properties:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
description: 'Required: Selects a field of the pod:
|
description: 'Required: Selects a field of the pod:
|
||||||
only annotations, labels, name and namespace are
|
only annotations, labels, name, namespace and uid
|
||||||
supported.'
|
are supported.'
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: Version of the schema the FieldPath
|
description: Version of the schema the FieldPath
|
||||||
|
|
@ -2132,6 +2250,7 @@ spec:
|
||||||
- path
|
- path
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
emptyDir:
|
emptyDir:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -2254,6 +2373,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
dataSource:
|
dataSource:
|
||||||
description: |-
|
description: |-
|
||||||
dataSource field can be used to specify either:
|
dataSource field can be used to specify either:
|
||||||
|
|
@ -2398,11 +2518,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -2430,7 +2552,7 @@ spec:
|
||||||
If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
|
If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
|
||||||
set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
|
set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
|
||||||
exists.
|
exists.
|
||||||
More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass
|
More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
|
||||||
(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
|
(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled.
|
||||||
type: string
|
type: string
|
||||||
volumeMode:
|
volumeMode:
|
||||||
|
|
@ -2474,6 +2596,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
wwids:
|
wwids:
|
||||||
description: |-
|
description: |-
|
||||||
wwids Optional: FC volume world wide identifiers (wwids)
|
wwids Optional: FC volume world wide identifiers (wwids)
|
||||||
|
|
@ -2481,6 +2604,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
flexVolume:
|
flexVolume:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -2701,6 +2825,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
readOnly:
|
readOnly:
|
||||||
description: |-
|
description: |-
|
||||||
readOnly here will force the ReadOnly setting in VolumeMounts.
|
readOnly here will force the ReadOnly setting in VolumeMounts.
|
||||||
|
|
@ -2889,11 +3014,13 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- operator
|
- operator
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -2972,6 +3099,7 @@ spec:
|
||||||
- path
|
- path
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
name:
|
name:
|
||||||
description: |-
|
description: |-
|
||||||
Name of the referent.
|
Name of the referent.
|
||||||
|
|
@ -2999,7 +3127,7 @@ spec:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
description: 'Required: Selects a field
|
description: 'Required: Selects a field
|
||||||
of the pod: only annotations, labels,
|
of the pod: only annotations, labels,
|
||||||
name and namespace are supported.'
|
name, namespace and uid are supported.'
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: Version of the schema the
|
description: Version of the schema the
|
||||||
|
|
@ -3062,6 +3190,7 @@ spec:
|
||||||
- path
|
- path
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
secret:
|
secret:
|
||||||
description: secret information about the secret data
|
description: secret information about the secret data
|
||||||
|
|
@ -3105,6 +3234,7 @@ spec:
|
||||||
- path
|
- path
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
name:
|
name:
|
||||||
description: |-
|
description: |-
|
||||||
Name of the referent.
|
Name of the referent.
|
||||||
|
|
@ -3148,6 +3278,7 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
type: object
|
type: object
|
||||||
quobyte:
|
quobyte:
|
||||||
description: quobyte represents a Quobyte mount on the host
|
description: quobyte represents a Quobyte mount on the host
|
||||||
|
|
@ -3218,6 +3349,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
pool:
|
pool:
|
||||||
description: |-
|
description: |-
|
||||||
pool is the rados pool name.
|
pool is the rados pool name.
|
||||||
|
|
@ -3372,6 +3504,7 @@ spec:
|
||||||
- path
|
- path
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
optional:
|
optional:
|
||||||
description: optional field specify whether the Secret or
|
description: optional field specify whether the Secret or
|
||||||
its keys must be defined
|
its keys must be defined
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -38,10 +39,16 @@ spec:
|
||||||
- jsonPath: .metadata.creationTimestamp
|
- jsonPath: .metadata.creationTimestamp
|
||||||
name: AGE
|
name: AGE
|
||||||
type: date
|
type: date
|
||||||
name: v1beta1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A FunctionRevision that has been added to Crossplane.
|
description: |-
|
||||||
|
A FunctionRevision represents a revision of a Function. Crossplane
|
||||||
|
creates new revisions when there are changes to the Function.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages FunctionRevisions. Don't directly edit
|
||||||
|
FunctionRevisions.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -70,7 +77,7 @@ spec:
|
||||||
Map of string keys and values that can be used to organize and categorize
|
Map of string keys and values that can be used to organize and categorize
|
||||||
(scope and select) objects. May match selectors of replication controllers
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
and services.
|
and services.
|
||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
controllerConfigRef:
|
controllerConfigRef:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -196,6 +203,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
@ -277,6 +291,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
nonResourceURLs:
|
nonResourceURLs:
|
||||||
description: |-
|
description: |-
|
||||||
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
||||||
|
|
@ -285,6 +300,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resourceNames:
|
resourceNames:
|
||||||
description: ResourceNames is an optional white list of names
|
description: ResourceNames is an optional white list of names
|
||||||
that the rule applies to. An empty set means that everything
|
that the rule applies to. An empty set means that everything
|
||||||
|
|
@ -292,18 +308,21 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resources:
|
resources:
|
||||||
description: Resources is a list of resources this rule applies
|
description: Resources is a list of resources this rule applies
|
||||||
to. '*' represents all resources.
|
to. '*' represents all resources.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
verbs:
|
verbs:
|
||||||
description: Verbs is a list of Verbs that apply to ALL the
|
description: Verbs is a list of Verbs that apply to ALL the
|
||||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- verbs
|
- verbs
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -314,3 +333,319 @@ spec:
|
||||||
storage: true
|
storage: true
|
||||||
subresources:
|
subresources:
|
||||||
status: {}
|
status: {}
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||||
|
name: HEALTHY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.revision
|
||||||
|
name: REVISION
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.image
|
||||||
|
name: IMAGE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.desiredState
|
||||||
|
name: STATE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.foundDependencies
|
||||||
|
name: DEP-FOUND
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.installedDependencies
|
||||||
|
name: DEP-INSTALLED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A FunctionRevision represents a revision of a Function. Crossplane
|
||||||
|
creates new revisions when there are changes to the Function.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages FunctionRevisions. Don't directly edit
|
||||||
|
FunctionRevisions.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: FunctionRevisionSpec specifies configuration for a FunctionRevision.
|
||||||
|
properties:
|
||||||
|
commonLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
type: object
|
||||||
|
controllerConfigRef:
|
||||||
|
description: |-
|
||||||
|
ControllerConfigRef references a ControllerConfig resource that will be
|
||||||
|
used to configure the packaged controller Deployment.
|
||||||
|
Deprecated: Use RuntimeConfigReference instead.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the ControllerConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
desiredState:
|
||||||
|
description: DesiredState of the PackageRevision. Can be either Active
|
||||||
|
or Inactive.
|
||||||
|
type: string
|
||||||
|
ignoreCrossplaneConstraints:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
image:
|
||||||
|
description: Package image used by install Pod to extract package
|
||||||
|
contents.
|
||||||
|
type: string
|
||||||
|
packagePullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
description: |-
|
||||||
|
PackagePullPolicy defines the pull policy for the package. It is also
|
||||||
|
applied to any images pulled for the package, such as a provider's
|
||||||
|
controller image.
|
||||||
|
Default is IfNotPresent.
|
||||||
|
type: string
|
||||||
|
packagePullSecrets:
|
||||||
|
description: |-
|
||||||
|
PackagePullSecrets are named secrets in the same namespace that can be
|
||||||
|
used to fetch packages from private registries. They are also applied to
|
||||||
|
any images pulled for the package, such as a provider's controller image.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: array
|
||||||
|
revision:
|
||||||
|
description: |-
|
||||||
|
Revision number. Indicates when the revision will be garbage collected
|
||||||
|
based on the parent's RevisionHistoryLimit.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
runtimeConfigRef:
|
||||||
|
default:
|
||||||
|
name: default
|
||||||
|
description: |-
|
||||||
|
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||||
|
to configure the package runtime.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
default: pkg.crossplane.io/v1beta1
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
default: DeploymentRuntimeConfig
|
||||||
|
description: Kind of the referent.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the RuntimeConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
skipDependencyResolution:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
tlsClientSecretName:
|
||||||
|
description: |-
|
||||||
|
TLSClientSecretName is the name of the TLS Secret that stores client
|
||||||
|
certificates of the Provider.
|
||||||
|
type: string
|
||||||
|
tlsServerSecretName:
|
||||||
|
description: |-
|
||||||
|
TLSServerSecretName is the name of the TLS Secret that stores server
|
||||||
|
certificates of the Provider.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- desiredState
|
||||||
|
- image
|
||||||
|
- revision
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: FunctionRevisionStatus represents the observed state of a
|
||||||
|
FunctionRevision.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
endpoint:
|
||||||
|
description: |-
|
||||||
|
Endpoint is the gRPC endpoint where Crossplane will send
|
||||||
|
RunFunctionRequests.
|
||||||
|
type: string
|
||||||
|
foundDependencies:
|
||||||
|
description: Dependency information.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
installedDependencies:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
invalidDependencies:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
objectRefs:
|
||||||
|
description: References to objects owned by PackageRevision.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
A TypedReference refers to an object by Name, Kind, and APIVersion. It is
|
||||||
|
commonly used to reference cluster-scoped objects or objects where the
|
||||||
|
namespace is already known.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: APIVersion of the referenced object.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: Kind of the referenced object.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the referenced object.
|
||||||
|
type: string
|
||||||
|
uid:
|
||||||
|
description: UID of the referenced object.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- apiVersion
|
||||||
|
- kind
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
permissionRequests:
|
||||||
|
description: |-
|
||||||
|
PermissionRequests made by this package. The package declares that its
|
||||||
|
controller needs these permissions to run. The RBAC manager is
|
||||||
|
responsible for granting them.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
PolicyRule holds information that describes a policy rule, but does not contain information
|
||||||
|
about who the rule applies to or which namespace the rule applies to.
|
||||||
|
properties:
|
||||||
|
apiGroups:
|
||||||
|
description: |-
|
||||||
|
APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of
|
||||||
|
the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
nonResourceURLs:
|
||||||
|
description: |-
|
||||||
|
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
||||||
|
Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
|
||||||
|
Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
resourceNames:
|
||||||
|
description: ResourceNames is an optional white list of names
|
||||||
|
that the rule applies to. An empty set means that everything
|
||||||
|
is allowed.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
resources:
|
||||||
|
description: Resources is a list of resources this rule applies
|
||||||
|
to. '*' represents all resources.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
verbs:
|
||||||
|
description: Verbs is a list of Verbs that apply to ALL the
|
||||||
|
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
required:
|
||||||
|
- verbs
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: false
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -29,11 +30,16 @@ spec:
|
||||||
- jsonPath: .metadata.creationTimestamp
|
- jsonPath: .metadata.creationTimestamp
|
||||||
name: AGE
|
name: AGE
|
||||||
type: date
|
type: date
|
||||||
name: v1beta1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: Function is the CRD type for a request to deploy a long-running
|
description: |-
|
||||||
Function.
|
A Function installs an OCI compatible Crossplane package, extending
|
||||||
|
Crossplane with support for a new kind of composition function.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Functions](https://docs.crossplane.io/latest/concepts/composition-functions).
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -62,7 +68,7 @@ spec:
|
||||||
Map of string keys and values that can be used to organize and categorize
|
Map of string keys and values that can be used to organize and categorize
|
||||||
(scope and select) objects. May match selectors of replication controllers
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
and services.
|
and services.
|
||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
controllerConfigRef:
|
controllerConfigRef:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -176,6 +182,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
@ -220,3 +233,219 @@ spec:
|
||||||
storage: true
|
storage: true
|
||||||
subresources:
|
subresources:
|
||||||
status: {}
|
status: {}
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
||||||
|
name: INSTALLED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||||
|
name: HEALTHY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.package
|
||||||
|
name: PACKAGE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A Function installs an OCI compatible Crossplane package, extending
|
||||||
|
Crossplane with support for a new kind of composition function.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Functions](https://docs.crossplane.io/latest/concepts/composition-functions).
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: FunctionSpec specifies the configuration of a Function.
|
||||||
|
properties:
|
||||||
|
commonLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
type: object
|
||||||
|
controllerConfigRef:
|
||||||
|
description: |-
|
||||||
|
ControllerConfigRef references a ControllerConfig resource that will be
|
||||||
|
used to configure the packaged controller Deployment.
|
||||||
|
Deprecated: Use RuntimeConfigReference instead.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the ControllerConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
ignoreCrossplaneConstraints:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
package:
|
||||||
|
description: Package is the name of the package that is being requested.
|
||||||
|
type: string
|
||||||
|
packagePullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
description: |-
|
||||||
|
PackagePullPolicy defines the pull policy for the package.
|
||||||
|
Default is IfNotPresent.
|
||||||
|
type: string
|
||||||
|
packagePullSecrets:
|
||||||
|
description: |-
|
||||||
|
PackagePullSecrets are named secrets in the same namespace that can be used
|
||||||
|
to fetch packages from private registries.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: array
|
||||||
|
revisionActivationPolicy:
|
||||||
|
default: Automatic
|
||||||
|
description: |-
|
||||||
|
RevisionActivationPolicy specifies how the package controller should
|
||||||
|
update from one revision to the next. Options are Automatic or Manual.
|
||||||
|
Default is Automatic.
|
||||||
|
type: string
|
||||||
|
revisionHistoryLimit:
|
||||||
|
default: 1
|
||||||
|
description: |-
|
||||||
|
RevisionHistoryLimit dictates how the package controller cleans up old
|
||||||
|
inactive package revisions.
|
||||||
|
Defaults to 1. Can be disabled by explicitly setting to 0.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
runtimeConfigRef:
|
||||||
|
default:
|
||||||
|
name: default
|
||||||
|
description: |-
|
||||||
|
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||||
|
to configure the package runtime.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
default: pkg.crossplane.io/v1beta1
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
default: DeploymentRuntimeConfig
|
||||||
|
description: Kind of the referent.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the RuntimeConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
skipDependencyResolution:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- package
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: FunctionStatus represents the observed state of a Function.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
currentIdentifier:
|
||||||
|
description: |-
|
||||||
|
CurrentIdentifier is the most recent package source that was used to
|
||||||
|
produce a revision. The package manager uses this field to determine
|
||||||
|
whether to check for package updates for a given source when
|
||||||
|
packagePullPolicy is set to IfNotPresent. Manually removing this field
|
||||||
|
will cause the package manager to check that the current revision is
|
||||||
|
correct for the given package source.
|
||||||
|
type: string
|
||||||
|
currentRevision:
|
||||||
|
description: |-
|
||||||
|
CurrentRevision is the name of the current package revision. It will
|
||||||
|
reflect the most up to date revision, whether it has been activated or
|
||||||
|
not.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: false
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -41,7 +42,13 @@ spec:
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A ProviderRevision that has been added to Crossplane.
|
description: |-
|
||||||
|
A ProviderRevision represents a revision of a Provider. Crossplane
|
||||||
|
creates new revisions when there are changes to a Provider.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages ProviderRevisions. Don't directly edit
|
||||||
|
ProviderRevisions.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -70,7 +77,7 @@ spec:
|
||||||
Map of string keys and values that can be used to organize and categorize
|
Map of string keys and values that can be used to organize and categorize
|
||||||
(scope and select) objects. May match selectors of replication controllers
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
and services.
|
and services.
|
||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
controllerConfigRef:
|
controllerConfigRef:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -196,6 +203,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
@ -272,6 +286,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
nonResourceURLs:
|
nonResourceURLs:
|
||||||
description: |-
|
description: |-
|
||||||
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
||||||
|
|
@ -280,6 +295,7 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resourceNames:
|
resourceNames:
|
||||||
description: ResourceNames is an optional white list of names
|
description: ResourceNames is an optional white list of names
|
||||||
that the rule applies to. An empty set means that everything
|
that the rule applies to. An empty set means that everything
|
||||||
|
|
@ -287,18 +303,21 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resources:
|
resources:
|
||||||
description: Resources is a list of resources this rule applies
|
description: Resources is a list of resources this rule applies
|
||||||
to. '*' represents all resources.
|
to. '*' represents all resources.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
verbs:
|
verbs:
|
||||||
description: Verbs is a list of Verbs that apply to ALL the
|
description: Verbs is a list of Verbs that apply to ALL the
|
||||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- verbs
|
- verbs
|
||||||
type: object
|
type: object
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -32,7 +33,13 @@ spec:
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: Provider is the CRD type for a request to add a provider to Crossplane.
|
description: |-
|
||||||
|
A Provider installs an OCI compatible Crossplane package, extending
|
||||||
|
Crossplane with support for new kinds of managed resources.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Providers](https://docs.crossplane.io/latest/concepts/providers).
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -63,7 +70,7 @@ spec:
|
||||||
Map of string keys and values that can be used to organize and categorize
|
Map of string keys and values that can be used to organize and categorize
|
||||||
(scope and select) objects. May match selectors of replication controllers
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
and services.
|
and services.
|
||||||
More info: http://kubernetes.io/docs/user-guide/labels
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
controllerConfigRef:
|
controllerConfigRef:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -177,6 +184,13 @@ spec:
|
||||||
A Message containing details about this condition's last transition from
|
A Message containing details about this condition's last transition from
|
||||||
one status to another, if any.
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
|
|
@ -29,8 +30,9 @@ spec:
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A StoreConfig configures how Crossplane controllers should store
|
description: |-
|
||||||
connection details.
|
A StoreConfig configures how Crossplane controllers should store connection
|
||||||
|
details in an external secret store.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
|
|
|
||||||
|
|
@ -1,518 +0,0 @@
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
|
||||||
name: compositeresourcedefinitions.apiextensions.crossplane.io
|
|
||||||
spec:
|
|
||||||
group: apiextensions.crossplane.io
|
|
||||||
names:
|
|
||||||
categories:
|
|
||||||
- crossplane
|
|
||||||
kind: CompositeResourceDefinition
|
|
||||||
listKind: CompositeResourceDefinitionList
|
|
||||||
plural: compositeresourcedefinitions
|
|
||||||
shortNames:
|
|
||||||
- xrd
|
|
||||||
- xrds
|
|
||||||
singular: compositeresourcedefinition
|
|
||||||
scope: Cluster
|
|
||||||
versions:
|
|
||||||
- additionalPrinterColumns:
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Established')].status
|
|
||||||
name: ESTABLISHED
|
|
||||||
type: string
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Offered')].status
|
|
||||||
name: OFFERED
|
|
||||||
type: string
|
|
||||||
- jsonPath: .metadata.creationTimestamp
|
|
||||||
name: AGE
|
|
||||||
type: date
|
|
||||||
name: v1
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
description: A CompositeResourceDefinition defines a new kind of composite
|
|
||||||
infrastructure resource. The new resource is composed of other composite
|
|
||||||
or managed infrastructure resources.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: 'Kind is a string value representing the REST resource this
|
|
||||||
object represents. Servers may infer this from the endpoint the client
|
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
||||||
type: string
|
|
||||||
metadata:
|
|
||||||
type: object
|
|
||||||
spec:
|
|
||||||
description: CompositeResourceDefinitionSpec specifies the desired state
|
|
||||||
of the definition.
|
|
||||||
properties:
|
|
||||||
claimNames:
|
|
||||||
description: ClaimNames specifies the names of an optional composite
|
|
||||||
resource claim. When claim names are specified Crossplane will create
|
|
||||||
a namespaced 'composite resource claim' CRD that corresponds to
|
|
||||||
the defined composite resource. This composite resource claim acts
|
|
||||||
as a namespaced proxy for the composite resource; creating, updating,
|
|
||||||
or deleting the claim will create, update, or delete a corresponding
|
|
||||||
composite resource. You may add claim names to an existing CompositeResourceDefinition,
|
|
||||||
but they cannot be changed or removed once they have been set.
|
|
||||||
properties:
|
|
||||||
categories:
|
|
||||||
description: categories is a list of grouped resources this custom
|
|
||||||
resource belongs to (e.g. 'all'). This is published in API discovery
|
|
||||||
documents, and used by clients to support invocations like `kubectl
|
|
||||||
get all`.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
kind:
|
|
||||||
description: kind is the serialized kind of the resource. It is
|
|
||||||
normally CamelCase and singular. Custom resource instances will
|
|
||||||
use this value as the `kind` attribute in API calls.
|
|
||||||
type: string
|
|
||||||
listKind:
|
|
||||||
description: listKind is the serialized kind of the list for this
|
|
||||||
resource. Defaults to "`kind`List".
|
|
||||||
type: string
|
|
||||||
plural:
|
|
||||||
description: plural is the plural name of the resource to serve.
|
|
||||||
The custom resources are served under `/apis/<group>/<version>/.../<plural>`.
|
|
||||||
Must match the name of the CustomResourceDefinition (in the
|
|
||||||
form `<names.plural>.<group>`). Must be all lowercase.
|
|
||||||
type: string
|
|
||||||
shortNames:
|
|
||||||
description: shortNames are short names for the resource, exposed
|
|
||||||
in API discovery documents, and used by clients to support invocations
|
|
||||||
like `kubectl get <shortname>`. It must be all lowercase.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
singular:
|
|
||||||
description: singular is the singular name of the resource. It
|
|
||||||
must be all lowercase. Defaults to lowercased `kind`.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- kind
|
|
||||||
- plural
|
|
||||||
type: object
|
|
||||||
connectionSecretKeys:
|
|
||||||
description: ConnectionSecretKeys is the list of keys that will be
|
|
||||||
exposed to the end user of the defined kind. If the list is empty,
|
|
||||||
all keys will be published.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
conversion:
|
|
||||||
description: Conversion defines all conversion settings for the defined
|
|
||||||
Composite resource.
|
|
||||||
properties:
|
|
||||||
strategy:
|
|
||||||
description: 'strategy specifies how custom resources are converted
|
|
||||||
between versions. Allowed values are: - `"None"`: The converter
|
|
||||||
only change the apiVersion and would not touch any other field
|
|
||||||
in the custom resource. - `"Webhook"`: API Server will call
|
|
||||||
to an external webhook to do the conversion. Additional information
|
|
||||||
is needed for this option. This requires spec.preserveUnknownFields
|
|
||||||
to be false, and spec.conversion.webhook to be set.'
|
|
||||||
type: string
|
|
||||||
webhook:
|
|
||||||
description: webhook describes how to call the conversion webhook.
|
|
||||||
Required when `strategy` is set to `"Webhook"`.
|
|
||||||
properties:
|
|
||||||
clientConfig:
|
|
||||||
description: clientConfig is the instructions for how to call
|
|
||||||
the webhook if strategy is `Webhook`.
|
|
||||||
properties:
|
|
||||||
caBundle:
|
|
||||||
description: caBundle is a PEM encoded CA bundle which
|
|
||||||
will be used to validate the webhook's server certificate.
|
|
||||||
If unspecified, system trust roots on the apiserver
|
|
||||||
are used.
|
|
||||||
format: byte
|
|
||||||
type: string
|
|
||||||
service:
|
|
||||||
description: "service is a reference to the service for
|
|
||||||
this webhook. Either service or url must be specified.
|
|
||||||
\n If the webhook is running within the cluster, then
|
|
||||||
you should use `service`."
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: name is the name of the service. Required
|
|
||||||
type: string
|
|
||||||
namespace:
|
|
||||||
description: namespace is the namespace of the service.
|
|
||||||
Required
|
|
||||||
type: string
|
|
||||||
path:
|
|
||||||
description: path is an optional URL path at which
|
|
||||||
the webhook will be contacted.
|
|
||||||
type: string
|
|
||||||
port:
|
|
||||||
description: port is an optional service port at which
|
|
||||||
the webhook will be contacted. `port` should be
|
|
||||||
a valid port number (1-65535, inclusive). Defaults
|
|
||||||
to 443 for backward compatibility.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- namespace
|
|
||||||
type: object
|
|
||||||
url:
|
|
||||||
description: "url gives the location of the webhook, in
|
|
||||||
standard URL form (`scheme://host:port/path`). Exactly
|
|
||||||
one of `url` or `service` must be specified. \n The
|
|
||||||
`host` should not refer to a service running in the
|
|
||||||
cluster; use the `service` field instead. The host might
|
|
||||||
be resolved via external DNS in some apiservers (e.g.,
|
|
||||||
`kube-apiserver` cannot resolve in-cluster DNS as that
|
|
||||||
would be a layering violation). `host` may also be an
|
|
||||||
IP address. \n Please note that using `localhost` or
|
|
||||||
`127.0.0.1` as a `host` is risky unless you take great
|
|
||||||
care to run this webhook on all hosts which run an apiserver
|
|
||||||
which might need to make calls to this webhook. Such
|
|
||||||
installs are likely to be non-portable, i.e., not easy
|
|
||||||
to turn up in a new cluster. \n The scheme must be \"https\";
|
|
||||||
the URL must begin with \"https://\". \n A path is optional,
|
|
||||||
and if present may be any string permissible in a URL.
|
|
||||||
You may use the path to pass an arbitrary string to
|
|
||||||
the webhook, for example, a cluster identifier. \n Attempting
|
|
||||||
to use a user or basic auth e.g. \"user:password@\"
|
|
||||||
is not allowed. Fragments (\"#...\") and query parameters
|
|
||||||
(\"?...\") are not allowed, either."
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
conversionReviewVersions:
|
|
||||||
description: conversionReviewVersions is an ordered list of
|
|
||||||
preferred `ConversionReview` versions the Webhook expects.
|
|
||||||
The API server will use the first version in the list which
|
|
||||||
it supports. If none of the versions specified in this list
|
|
||||||
are supported by API server, conversion will fail for the
|
|
||||||
custom resource. If a persisted Webhook configuration specifies
|
|
||||||
allowed versions and does not include any versions known
|
|
||||||
to the API Server, calls to the webhook will fail.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- conversionReviewVersions
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- strategy
|
|
||||||
type: object
|
|
||||||
defaultCompositeDeletePolicy:
|
|
||||||
default: Background
|
|
||||||
description: DefaultCompositeDeletePolicy is the policy used when
|
|
||||||
deleting the Composite that is associated with the Claim if no policy
|
|
||||||
has been specified.
|
|
||||||
enum:
|
|
||||||
- Background
|
|
||||||
- Foreground
|
|
||||||
type: string
|
|
||||||
defaultCompositionRef:
|
|
||||||
description: DefaultCompositionRef refers to the Composition resource
|
|
||||||
that will be used in case no composition selector is given.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Name of the Composition.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
defaultCompositionUpdatePolicy:
|
|
||||||
default: Automatic
|
|
||||||
description: DefaultCompositionUpdatePolicy is the policy used when
|
|
||||||
updating composites after a new Composition Revision has been created
|
|
||||||
if no policy has been specified on the composite.
|
|
||||||
enum:
|
|
||||||
- Automatic
|
|
||||||
- Manual
|
|
||||||
type: string
|
|
||||||
enforcedCompositionRef:
|
|
||||||
description: EnforcedCompositionRef refers to the Composition resource
|
|
||||||
that will be used by all composite instances whose schema is defined
|
|
||||||
by this definition.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Name of the Composition.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
group:
|
|
||||||
description: Group specifies the API group of the defined composite
|
|
||||||
resource. Composite resources are served under `/apis/<group>/...`.
|
|
||||||
Must match the name of the XRD (in the form `<names.plural>.<group>`).
|
|
||||||
type: string
|
|
||||||
metadata:
|
|
||||||
description: Metadata specifies the desired metadata for the defined
|
|
||||||
composite resource and claim CRD's.
|
|
||||||
properties:
|
|
||||||
annotations:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
description: 'Annotations is an unstructured key value map stored
|
|
||||||
with a resource that may be set by external tools to store and
|
|
||||||
retrieve arbitrary metadata. They are not queryable and should
|
|
||||||
be preserved when modifying objects. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations'
|
|
||||||
type: object
|
|
||||||
labels:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
description: 'Map of string keys and values that can be used to
|
|
||||||
organize and categorize (scope and select) objects. May match
|
|
||||||
selectors of replication controllers More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
|
|
||||||
and services. These labels are added to the composite resource
|
|
||||||
and claim CRD''s in addition to any labels defined by `CompositionResourceDefinition`
|
|
||||||
`metadata.labels`.'
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
names:
|
|
||||||
description: Names specifies the resource and kind names of the defined
|
|
||||||
composite resource.
|
|
||||||
properties:
|
|
||||||
categories:
|
|
||||||
description: categories is a list of grouped resources this custom
|
|
||||||
resource belongs to (e.g. 'all'). This is published in API discovery
|
|
||||||
documents, and used by clients to support invocations like `kubectl
|
|
||||||
get all`.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
kind:
|
|
||||||
description: kind is the serialized kind of the resource. It is
|
|
||||||
normally CamelCase and singular. Custom resource instances will
|
|
||||||
use this value as the `kind` attribute in API calls.
|
|
||||||
type: string
|
|
||||||
listKind:
|
|
||||||
description: listKind is the serialized kind of the list for this
|
|
||||||
resource. Defaults to "`kind`List".
|
|
||||||
type: string
|
|
||||||
plural:
|
|
||||||
description: plural is the plural name of the resource to serve.
|
|
||||||
The custom resources are served under `/apis/<group>/<version>/.../<plural>`.
|
|
||||||
Must match the name of the CustomResourceDefinition (in the
|
|
||||||
form `<names.plural>.<group>`). Must be all lowercase.
|
|
||||||
type: string
|
|
||||||
shortNames:
|
|
||||||
description: shortNames are short names for the resource, exposed
|
|
||||||
in API discovery documents, and used by clients to support invocations
|
|
||||||
like `kubectl get <shortname>`. It must be all lowercase.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
singular:
|
|
||||||
description: singular is the singular name of the resource. It
|
|
||||||
must be all lowercase. Defaults to lowercased `kind`.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- kind
|
|
||||||
- plural
|
|
||||||
type: object
|
|
||||||
versions:
|
|
||||||
description: 'Versions is the list of all API versions of the defined
|
|
||||||
composite resource. Version names are used to compute the order
|
|
||||||
in which served versions are listed in API discovery. If the version
|
|
||||||
string is "kube-like", it will sort above non "kube-like" version
|
|
||||||
strings, which are ordered lexicographically. "Kube-like" versions
|
|
||||||
start with a "v", then are followed by a number (the major version),
|
|
||||||
then optionally the string "alpha" or "beta" and another number
|
|
||||||
(the minor version). These are sorted first by GA > beta > alpha
|
|
||||||
(where GA is a version with no suffix such as beta or alpha), and
|
|
||||||
then by comparing major version, then minor version. An example
|
|
||||||
sorted list of versions: v10, v2, v1, v11beta2, v10beta3, v3beta1,
|
|
||||||
v12alpha1, v11alpha2, foo1, foo10.'
|
|
||||||
items:
|
|
||||||
description: CompositeResourceDefinitionVersion describes a version
|
|
||||||
of an XR.
|
|
||||||
properties:
|
|
||||||
additionalPrinterColumns:
|
|
||||||
description: 'AdditionalPrinterColumns specifies additional
|
|
||||||
columns returned in Table output. If no columns are specified,
|
|
||||||
a single column displaying the age of the custom resource
|
|
||||||
is used. See the following link for details: https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables'
|
|
||||||
items:
|
|
||||||
description: CustomResourceColumnDefinition specifies a column
|
|
||||||
for server side printing.
|
|
||||||
properties:
|
|
||||||
description:
|
|
||||||
description: description is a human readable description
|
|
||||||
of this column.
|
|
||||||
type: string
|
|
||||||
format:
|
|
||||||
description: format is an optional OpenAPI type definition
|
|
||||||
for this column. The 'name' format is applied to the
|
|
||||||
primary identifier column to assist in clients identifying
|
|
||||||
column is the resource name. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types
|
|
||||||
for details.
|
|
||||||
type: string
|
|
||||||
jsonPath:
|
|
||||||
description: jsonPath is a simple JSON path (i.e. with
|
|
||||||
array notation) which is evaluated against each custom
|
|
||||||
resource to produce the value for this column.
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
description: name is a human readable name for the column.
|
|
||||||
type: string
|
|
||||||
priority:
|
|
||||||
description: priority is an integer defining the relative
|
|
||||||
importance of this column compared to others. Lower
|
|
||||||
numbers are considered higher priority. Columns that
|
|
||||||
may be omitted in limited space scenarios should be
|
|
||||||
given a priority greater than 0.
|
|
||||||
format: int32
|
|
||||||
type: integer
|
|
||||||
type:
|
|
||||||
description: type is an OpenAPI type definition for this
|
|
||||||
column. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types
|
|
||||||
for details.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- jsonPath
|
|
||||||
- name
|
|
||||||
- type
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
deprecated:
|
|
||||||
description: The deprecated field specifies that this version
|
|
||||||
is deprecated and should not be used.
|
|
||||||
type: boolean
|
|
||||||
deprecationWarning:
|
|
||||||
description: DeprecationWarning specifies the message that should
|
|
||||||
be shown to the user when using this version.
|
|
||||||
maxLength: 256
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
description: Name of this version, e.g. “v1”, “v2beta1”, etc.
|
|
||||||
Composite resources are served under this version at `/apis/<group>/<version>/...`
|
|
||||||
if `served` is true.
|
|
||||||
type: string
|
|
||||||
referenceable:
|
|
||||||
description: Referenceable specifies that this version may be
|
|
||||||
referenced by a Composition in order to configure which resources
|
|
||||||
an XR may be composed of. Exactly one version must be marked
|
|
||||||
as referenceable; all Compositions must target only the referenceable
|
|
||||||
version. The referenceable version must be served. It's mapped
|
|
||||||
to the CRD's `spec.versions[*].storage` field.
|
|
||||||
type: boolean
|
|
||||||
schema:
|
|
||||||
description: Schema describes the schema used for validation,
|
|
||||||
pruning, and defaulting of this version of the defined composite
|
|
||||||
resource. Fields required by all composite resources will
|
|
||||||
be injected into this schema automatically, and will override
|
|
||||||
equivalently named fields in this schema. Omitting this schema
|
|
||||||
results in a schema that contains only the fields required
|
|
||||||
by all composite resources.
|
|
||||||
properties:
|
|
||||||
openAPIV3Schema:
|
|
||||||
description: OpenAPIV3Schema is the OpenAPI v3 schema to
|
|
||||||
use for validation and pruning.
|
|
||||||
type: object
|
|
||||||
x-kubernetes-preserve-unknown-fields: true
|
|
||||||
type: object
|
|
||||||
served:
|
|
||||||
description: Served specifies that this version should be served
|
|
||||||
via REST APIs.
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- referenceable
|
|
||||||
- served
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- group
|
|
||||||
- names
|
|
||||||
- versions
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
description: CompositeResourceDefinitionStatus shows the observed state
|
|
||||||
of the definition.
|
|
||||||
properties:
|
|
||||||
conditions:
|
|
||||||
description: Conditions of the resource.
|
|
||||||
items:
|
|
||||||
description: A Condition that may apply to a resource.
|
|
||||||
properties:
|
|
||||||
lastTransitionTime:
|
|
||||||
description: LastTransitionTime is the last time this condition
|
|
||||||
transitioned from one status to another.
|
|
||||||
format: date-time
|
|
||||||
type: string
|
|
||||||
message:
|
|
||||||
description: A Message containing details about this condition's
|
|
||||||
last transition from one status to another, if any.
|
|
||||||
type: string
|
|
||||||
reason:
|
|
||||||
description: A Reason for this condition's last transition from
|
|
||||||
one status to another.
|
|
||||||
type: string
|
|
||||||
status:
|
|
||||||
description: Status of this condition; is it currently True,
|
|
||||||
False, or Unknown?
|
|
||||||
type: string
|
|
||||||
type:
|
|
||||||
description: Type of this condition. At most one of each condition
|
|
||||||
type may apply to a resource at any point in time.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- lastTransitionTime
|
|
||||||
- reason
|
|
||||||
- status
|
|
||||||
- type
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
x-kubernetes-list-map-keys:
|
|
||||||
- type
|
|
||||||
x-kubernetes-list-type: map
|
|
||||||
controllers:
|
|
||||||
description: Controllers represents the status of the controllers
|
|
||||||
that power this composite resource definition.
|
|
||||||
properties:
|
|
||||||
compositeResourceClaimType:
|
|
||||||
description: The CompositeResourceClaimTypeRef is the type of
|
|
||||||
composite resource claim that Crossplane is currently reconciling
|
|
||||||
for this definition. Its version will eventually become consistent
|
|
||||||
with the definition's referenceable version. Note that clients
|
|
||||||
may interact with any served type; this is simply the type that
|
|
||||||
Crossplane interacts with.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: APIVersion of the type.
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: Kind of the type.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- apiVersion
|
|
||||||
- kind
|
|
||||||
type: object
|
|
||||||
compositeResourceType:
|
|
||||||
description: The CompositeResourceTypeRef is the type of composite
|
|
||||||
resource that Crossplane is currently reconciling for this definition.
|
|
||||||
Its version will eventually become consistent with the definition's
|
|
||||||
referenceable version. Note that clients may interact with any
|
|
||||||
served type; this is simply the type that Crossplane interacts
|
|
||||||
with.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: APIVersion of the type.
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: Kind of the type.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- apiVersion
|
|
||||||
- kind
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
|
||||||
name: environmentconfigs.apiextensions.crossplane.io
|
|
||||||
spec:
|
|
||||||
group: apiextensions.crossplane.io
|
|
||||||
names:
|
|
||||||
categories:
|
|
||||||
- crossplane
|
|
||||||
kind: EnvironmentConfig
|
|
||||||
listKind: EnvironmentConfigList
|
|
||||||
plural: environmentconfigs
|
|
||||||
shortNames:
|
|
||||||
- envcfg
|
|
||||||
singular: environmentconfig
|
|
||||||
scope: Cluster
|
|
||||||
versions:
|
|
||||||
- additionalPrinterColumns:
|
|
||||||
- jsonPath: .metadata.creationTimestamp
|
|
||||||
name: AGE
|
|
||||||
type: date
|
|
||||||
name: v1alpha1
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
description: A EnvironmentConfig contains a set of arbitrary, unstructured
|
|
||||||
values.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
||||||
type: string
|
|
||||||
data:
|
|
||||||
additionalProperties:
|
|
||||||
x-kubernetes-preserve-unknown-fields: true
|
|
||||||
description: The data of this EnvironmentConfig. This may contain any
|
|
||||||
kind of structure that can be serialized into JSON.
|
|
||||||
type: object
|
|
||||||
kind:
|
|
||||||
description: 'Kind is a string value representing the REST resource this
|
|
||||||
object represents. Servers may infer this from the endpoint the client
|
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
||||||
type: string
|
|
||||||
metadata:
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
subresources: {}
|
|
||||||
|
|
@ -1,168 +0,0 @@
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
|
||||||
name: configurations.pkg.crossplane.io
|
|
||||||
spec:
|
|
||||||
group: pkg.crossplane.io
|
|
||||||
names:
|
|
||||||
categories:
|
|
||||||
- crossplane
|
|
||||||
- pkg
|
|
||||||
kind: Configuration
|
|
||||||
listKind: ConfigurationList
|
|
||||||
plural: configurations
|
|
||||||
singular: configuration
|
|
||||||
scope: Cluster
|
|
||||||
versions:
|
|
||||||
- additionalPrinterColumns:
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
|
||||||
name: INSTALLED
|
|
||||||
type: string
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
|
||||||
name: HEALTHY
|
|
||||||
type: string
|
|
||||||
- jsonPath: .spec.package
|
|
||||||
name: PACKAGE
|
|
||||||
type: string
|
|
||||||
- jsonPath: .metadata.creationTimestamp
|
|
||||||
name: AGE
|
|
||||||
type: date
|
|
||||||
name: v1
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
description: Configuration is the CRD type for a request to add a configuration
|
|
||||||
to Crossplane.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: 'Kind is a string value representing the REST resource this
|
|
||||||
object represents. Servers may infer this from the endpoint the client
|
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
||||||
type: string
|
|
||||||
metadata:
|
|
||||||
type: object
|
|
||||||
spec:
|
|
||||||
description: ConfigurationSpec specifies details about a request to install
|
|
||||||
a configuration to Crossplane.
|
|
||||||
properties:
|
|
||||||
commonLabels:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
description: 'Map of string keys and values that can be used to organize
|
|
||||||
and categorize (scope and select) objects. May match selectors of
|
|
||||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
|
||||||
type: object
|
|
||||||
ignoreCrossplaneConstraints:
|
|
||||||
default: false
|
|
||||||
description: IgnoreCrossplaneConstraints indicates to the package
|
|
||||||
manager whether to honor Crossplane version constrains specified
|
|
||||||
by the package. Default is false.
|
|
||||||
type: boolean
|
|
||||||
package:
|
|
||||||
description: Package is the name of the package that is being requested.
|
|
||||||
type: string
|
|
||||||
packagePullPolicy:
|
|
||||||
default: IfNotPresent
|
|
||||||
description: PackagePullPolicy defines the pull policy for the package.
|
|
||||||
Default is IfNotPresent.
|
|
||||||
type: string
|
|
||||||
packagePullSecrets:
|
|
||||||
description: PackagePullSecrets are named secrets in the same namespace
|
|
||||||
that can be used to fetch packages from private registries.
|
|
||||||
items:
|
|
||||||
description: LocalObjectReference contains enough information to
|
|
||||||
let you locate the referenced object inside the same namespace.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
x-kubernetes-map-type: atomic
|
|
||||||
type: array
|
|
||||||
revisionActivationPolicy:
|
|
||||||
default: Automatic
|
|
||||||
description: RevisionActivationPolicy specifies how the package controller
|
|
||||||
should update from one revision to the next. Options are Automatic
|
|
||||||
or Manual. Default is Automatic.
|
|
||||||
type: string
|
|
||||||
revisionHistoryLimit:
|
|
||||||
default: 1
|
|
||||||
description: RevisionHistoryLimit dictates how the package controller
|
|
||||||
cleans up old inactive package revisions. Defaults to 1. Can be
|
|
||||||
disabled by explicitly setting to 0.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
skipDependencyResolution:
|
|
||||||
default: false
|
|
||||||
description: SkipDependencyResolution indicates to the package manager
|
|
||||||
whether to skip resolving dependencies for a package. Setting this
|
|
||||||
value to true may have unintended consequences. Default is false.
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- package
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
description: ConfigurationStatus represents the observed state of a Configuration.
|
|
||||||
properties:
|
|
||||||
conditions:
|
|
||||||
description: Conditions of the resource.
|
|
||||||
items:
|
|
||||||
description: A Condition that may apply to a resource.
|
|
||||||
properties:
|
|
||||||
lastTransitionTime:
|
|
||||||
description: LastTransitionTime is the last time this condition
|
|
||||||
transitioned from one status to another.
|
|
||||||
format: date-time
|
|
||||||
type: string
|
|
||||||
message:
|
|
||||||
description: A Message containing details about this condition's
|
|
||||||
last transition from one status to another, if any.
|
|
||||||
type: string
|
|
||||||
reason:
|
|
||||||
description: A Reason for this condition's last transition from
|
|
||||||
one status to another.
|
|
||||||
type: string
|
|
||||||
status:
|
|
||||||
description: Status of this condition; is it currently True,
|
|
||||||
False, or Unknown?
|
|
||||||
type: string
|
|
||||||
type:
|
|
||||||
description: Type of this condition. At most one of each condition
|
|
||||||
type may apply to a resource at any point in time.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- lastTransitionTime
|
|
||||||
- reason
|
|
||||||
- status
|
|
||||||
- type
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
x-kubernetes-list-map-keys:
|
|
||||||
- type
|
|
||||||
x-kubernetes-list-type: map
|
|
||||||
currentIdentifier:
|
|
||||||
description: CurrentIdentifier is the most recent package source that
|
|
||||||
was used to produce a revision. The package manager uses this field
|
|
||||||
to determine whether to check for package updates for a given source
|
|
||||||
when packagePullPolicy is set to IfNotPresent. Manually removing
|
|
||||||
this field will cause the package manager to check that the current
|
|
||||||
revision is correct for the given package source.
|
|
||||||
type: string
|
|
||||||
currentRevision:
|
|
||||||
description: CurrentRevision is the name of the current package revision.
|
|
||||||
It will reflect the most up to date revision, whether it has been
|
|
||||||
activated or not.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,295 +0,0 @@
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
|
||||||
name: functionrevisions.pkg.crossplane.io
|
|
||||||
spec:
|
|
||||||
group: pkg.crossplane.io
|
|
||||||
names:
|
|
||||||
categories:
|
|
||||||
- crossplane
|
|
||||||
- pkgrev
|
|
||||||
kind: FunctionRevision
|
|
||||||
listKind: FunctionRevisionList
|
|
||||||
plural: functionrevisions
|
|
||||||
singular: functionrevision
|
|
||||||
scope: Cluster
|
|
||||||
versions:
|
|
||||||
- additionalPrinterColumns:
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
|
||||||
name: HEALTHY
|
|
||||||
type: string
|
|
||||||
- jsonPath: .spec.revision
|
|
||||||
name: REVISION
|
|
||||||
type: string
|
|
||||||
- jsonPath: .spec.image
|
|
||||||
name: IMAGE
|
|
||||||
type: string
|
|
||||||
- jsonPath: .spec.desiredState
|
|
||||||
name: STATE
|
|
||||||
type: string
|
|
||||||
- jsonPath: .status.foundDependencies
|
|
||||||
name: DEP-FOUND
|
|
||||||
type: string
|
|
||||||
- jsonPath: .status.installedDependencies
|
|
||||||
name: DEP-INSTALLED
|
|
||||||
type: string
|
|
||||||
- jsonPath: .metadata.creationTimestamp
|
|
||||||
name: AGE
|
|
||||||
type: date
|
|
||||||
name: v1beta1
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
description: A FunctionRevision that has been added to Crossplane.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: 'Kind is a string value representing the REST resource this
|
|
||||||
object represents. Servers may infer this from the endpoint the client
|
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
||||||
type: string
|
|
||||||
metadata:
|
|
||||||
type: object
|
|
||||||
spec:
|
|
||||||
description: FunctionRevisionSpec specifies configuration for a FunctionRevision.
|
|
||||||
properties:
|
|
||||||
commonLabels:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
description: 'Map of string keys and values that can be used to organize
|
|
||||||
and categorize (scope and select) objects. May match selectors of
|
|
||||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
|
||||||
type: object
|
|
||||||
controllerConfigRef:
|
|
||||||
description: 'ControllerConfigRef references a ControllerConfig resource
|
|
||||||
that will be used to configure the packaged controller Deployment.
|
|
||||||
Deprecated: Use RuntimeConfigReference instead.'
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Name of the ControllerConfig.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
desiredState:
|
|
||||||
description: DesiredState of the PackageRevision. Can be either Active
|
|
||||||
or Inactive.
|
|
||||||
type: string
|
|
||||||
ignoreCrossplaneConstraints:
|
|
||||||
default: false
|
|
||||||
description: IgnoreCrossplaneConstraints indicates to the package
|
|
||||||
manager whether to honor Crossplane version constrains specified
|
|
||||||
by the package. Default is false.
|
|
||||||
type: boolean
|
|
||||||
image:
|
|
||||||
description: Package image used by install Pod to extract package
|
|
||||||
contents.
|
|
||||||
type: string
|
|
||||||
packagePullPolicy:
|
|
||||||
default: IfNotPresent
|
|
||||||
description: PackagePullPolicy defines the pull policy for the package.
|
|
||||||
It is also applied to any images pulled for the package, such as
|
|
||||||
a provider's controller image. Default is IfNotPresent.
|
|
||||||
type: string
|
|
||||||
packagePullSecrets:
|
|
||||||
description: PackagePullSecrets are named secrets in the same namespace
|
|
||||||
that can be used to fetch packages from private registries. They
|
|
||||||
are also applied to any images pulled for the package, such as a
|
|
||||||
provider's controller image.
|
|
||||||
items:
|
|
||||||
description: LocalObjectReference contains enough information to
|
|
||||||
let you locate the referenced object inside the same namespace.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
x-kubernetes-map-type: atomic
|
|
||||||
type: array
|
|
||||||
revision:
|
|
||||||
description: Revision number. Indicates when the revision will be
|
|
||||||
garbage collected based on the parent's RevisionHistoryLimit.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
runtimeConfigRef:
|
|
||||||
default:
|
|
||||||
name: default
|
|
||||||
description: RuntimeConfigRef references a RuntimeConfig resource
|
|
||||||
that will be used to configure the package runtime.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
default: pkg.crossplane.io/v1beta1
|
|
||||||
description: API version of the referent.
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
default: DeploymentRuntimeConfig
|
|
||||||
description: Kind of the referent.
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
description: Name of the RuntimeConfig.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
skipDependencyResolution:
|
|
||||||
default: false
|
|
||||||
description: SkipDependencyResolution indicates to the package manager
|
|
||||||
whether to skip resolving dependencies for a package. Setting this
|
|
||||||
value to true may have unintended consequences. Default is false.
|
|
||||||
type: boolean
|
|
||||||
tlsClientSecretName:
|
|
||||||
description: TLSClientSecretName is the name of the TLS Secret that
|
|
||||||
stores client certificates of the Provider.
|
|
||||||
type: string
|
|
||||||
tlsServerSecretName:
|
|
||||||
description: TLSServerSecretName is the name of the TLS Secret that
|
|
||||||
stores server certificates of the Provider.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- desiredState
|
|
||||||
- image
|
|
||||||
- revision
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
description: FunctionRevisionStatus represents the observed state of a
|
|
||||||
FunctionRevision.
|
|
||||||
properties:
|
|
||||||
conditions:
|
|
||||||
description: Conditions of the resource.
|
|
||||||
items:
|
|
||||||
description: A Condition that may apply to a resource.
|
|
||||||
properties:
|
|
||||||
lastTransitionTime:
|
|
||||||
description: LastTransitionTime is the last time this condition
|
|
||||||
transitioned from one status to another.
|
|
||||||
format: date-time
|
|
||||||
type: string
|
|
||||||
message:
|
|
||||||
description: A Message containing details about this condition's
|
|
||||||
last transition from one status to another, if any.
|
|
||||||
type: string
|
|
||||||
reason:
|
|
||||||
description: A Reason for this condition's last transition from
|
|
||||||
one status to another.
|
|
||||||
type: string
|
|
||||||
status:
|
|
||||||
description: Status of this condition; is it currently True,
|
|
||||||
False, or Unknown?
|
|
||||||
type: string
|
|
||||||
type:
|
|
||||||
description: Type of this condition. At most one of each condition
|
|
||||||
type may apply to a resource at any point in time.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- lastTransitionTime
|
|
||||||
- reason
|
|
||||||
- status
|
|
||||||
- type
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
x-kubernetes-list-map-keys:
|
|
||||||
- type
|
|
||||||
x-kubernetes-list-type: map
|
|
||||||
endpoint:
|
|
||||||
description: Endpoint is the gRPC endpoint where Crossplane will send
|
|
||||||
RunFunctionRequests.
|
|
||||||
type: string
|
|
||||||
foundDependencies:
|
|
||||||
description: Dependency information.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
installedDependencies:
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
invalidDependencies:
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
objectRefs:
|
|
||||||
description: References to objects owned by PackageRevision.
|
|
||||||
items:
|
|
||||||
description: A TypedReference refers to an object by Name, Kind,
|
|
||||||
and APIVersion. It is commonly used to reference cluster-scoped
|
|
||||||
objects or objects where the namespace is already known.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: APIVersion of the referenced object.
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: Kind of the referenced object.
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
description: Name of the referenced object.
|
|
||||||
type: string
|
|
||||||
uid:
|
|
||||||
description: UID of the referenced object.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- apiVersion
|
|
||||||
- kind
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
permissionRequests:
|
|
||||||
description: PermissionRequests made by this package. The package
|
|
||||||
declares that its controller needs these permissions to run. The
|
|
||||||
RBAC manager is responsible for granting them.
|
|
||||||
items:
|
|
||||||
description: PolicyRule holds information that describes a policy
|
|
||||||
rule, but does not contain information about who the rule applies
|
|
||||||
to or which namespace the rule applies to.
|
|
||||||
properties:
|
|
||||||
apiGroups:
|
|
||||||
description: APIGroups is the name of the APIGroup that contains
|
|
||||||
the resources. If multiple API groups are specified, any
|
|
||||||
action requested against one of the enumerated resources in
|
|
||||||
any API group will be allowed. "" represents the core API
|
|
||||||
group and "*" represents all API groups.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
nonResourceURLs:
|
|
||||||
description: NonResourceURLs is a set of partial urls that a
|
|
||||||
user should have access to. *s are allowed, but only as the
|
|
||||||
full, final step in the path Since non-resource URLs are not
|
|
||||||
namespaced, this field is only applicable for ClusterRoles
|
|
||||||
referenced from a ClusterRoleBinding. Rules can either apply
|
|
||||||
to API resources (such as "pods" or "secrets") or non-resource
|
|
||||||
URL paths (such as "/api"), but not both.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
resourceNames:
|
|
||||||
description: ResourceNames is an optional white list of names
|
|
||||||
that the rule applies to. An empty set means that everything
|
|
||||||
is allowed.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
resources:
|
|
||||||
description: Resources is a list of resources this rule applies
|
|
||||||
to. '*' represents all resources.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
verbs:
|
|
||||||
description: Verbs is a list of Verbs that apply to ALL the
|
|
||||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
type: array
|
|
||||||
required:
|
|
||||||
- verbs
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
|
|
@ -1,198 +0,0 @@
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
|
||||||
name: functions.pkg.crossplane.io
|
|
||||||
spec:
|
|
||||||
group: pkg.crossplane.io
|
|
||||||
names:
|
|
||||||
categories:
|
|
||||||
- crossplane
|
|
||||||
- pkg
|
|
||||||
kind: Function
|
|
||||||
listKind: FunctionList
|
|
||||||
plural: functions
|
|
||||||
singular: function
|
|
||||||
scope: Cluster
|
|
||||||
versions:
|
|
||||||
- additionalPrinterColumns:
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
|
||||||
name: INSTALLED
|
|
||||||
type: string
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
|
||||||
name: HEALTHY
|
|
||||||
type: string
|
|
||||||
- jsonPath: .spec.package
|
|
||||||
name: PACKAGE
|
|
||||||
type: string
|
|
||||||
- jsonPath: .metadata.creationTimestamp
|
|
||||||
name: AGE
|
|
||||||
type: date
|
|
||||||
name: v1beta1
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
description: Function is the CRD type for a request to deploy a long-running
|
|
||||||
Function.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: 'Kind is a string value representing the REST resource this
|
|
||||||
object represents. Servers may infer this from the endpoint the client
|
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
||||||
type: string
|
|
||||||
metadata:
|
|
||||||
type: object
|
|
||||||
spec:
|
|
||||||
description: FunctionSpec specifies the configuration of a Function.
|
|
||||||
properties:
|
|
||||||
commonLabels:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
description: 'Map of string keys and values that can be used to organize
|
|
||||||
and categorize (scope and select) objects. May match selectors of
|
|
||||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
|
||||||
type: object
|
|
||||||
controllerConfigRef:
|
|
||||||
description: 'ControllerConfigRef references a ControllerConfig resource
|
|
||||||
that will be used to configure the packaged controller Deployment.
|
|
||||||
Deprecated: Use RuntimeConfigReference instead.'
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Name of the ControllerConfig.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
ignoreCrossplaneConstraints:
|
|
||||||
default: false
|
|
||||||
description: IgnoreCrossplaneConstraints indicates to the package
|
|
||||||
manager whether to honor Crossplane version constrains specified
|
|
||||||
by the package. Default is false.
|
|
||||||
type: boolean
|
|
||||||
package:
|
|
||||||
description: Package is the name of the package that is being requested.
|
|
||||||
type: string
|
|
||||||
packagePullPolicy:
|
|
||||||
default: IfNotPresent
|
|
||||||
description: PackagePullPolicy defines the pull policy for the package.
|
|
||||||
Default is IfNotPresent.
|
|
||||||
type: string
|
|
||||||
packagePullSecrets:
|
|
||||||
description: PackagePullSecrets are named secrets in the same namespace
|
|
||||||
that can be used to fetch packages from private registries.
|
|
||||||
items:
|
|
||||||
description: LocalObjectReference contains enough information to
|
|
||||||
let you locate the referenced object inside the same namespace.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
x-kubernetes-map-type: atomic
|
|
||||||
type: array
|
|
||||||
revisionActivationPolicy:
|
|
||||||
default: Automatic
|
|
||||||
description: RevisionActivationPolicy specifies how the package controller
|
|
||||||
should update from one revision to the next. Options are Automatic
|
|
||||||
or Manual. Default is Automatic.
|
|
||||||
type: string
|
|
||||||
revisionHistoryLimit:
|
|
||||||
default: 1
|
|
||||||
description: RevisionHistoryLimit dictates how the package controller
|
|
||||||
cleans up old inactive package revisions. Defaults to 1. Can be
|
|
||||||
disabled by explicitly setting to 0.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
runtimeConfigRef:
|
|
||||||
default:
|
|
||||||
name: default
|
|
||||||
description: RuntimeConfigRef references a RuntimeConfig resource
|
|
||||||
that will be used to configure the package runtime.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
default: pkg.crossplane.io/v1beta1
|
|
||||||
description: API version of the referent.
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
default: DeploymentRuntimeConfig
|
|
||||||
description: Kind of the referent.
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
description: Name of the RuntimeConfig.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
skipDependencyResolution:
|
|
||||||
default: false
|
|
||||||
description: SkipDependencyResolution indicates to the package manager
|
|
||||||
whether to skip resolving dependencies for a package. Setting this
|
|
||||||
value to true may have unintended consequences. Default is false.
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- package
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
description: FunctionStatus represents the observed state of a Function.
|
|
||||||
properties:
|
|
||||||
conditions:
|
|
||||||
description: Conditions of the resource.
|
|
||||||
items:
|
|
||||||
description: A Condition that may apply to a resource.
|
|
||||||
properties:
|
|
||||||
lastTransitionTime:
|
|
||||||
description: LastTransitionTime is the last time this condition
|
|
||||||
transitioned from one status to another.
|
|
||||||
format: date-time
|
|
||||||
type: string
|
|
||||||
message:
|
|
||||||
description: A Message containing details about this condition's
|
|
||||||
last transition from one status to another, if any.
|
|
||||||
type: string
|
|
||||||
reason:
|
|
||||||
description: A Reason for this condition's last transition from
|
|
||||||
one status to another.
|
|
||||||
type: string
|
|
||||||
status:
|
|
||||||
description: Status of this condition; is it currently True,
|
|
||||||
False, or Unknown?
|
|
||||||
type: string
|
|
||||||
type:
|
|
||||||
description: Type of this condition. At most one of each condition
|
|
||||||
type may apply to a resource at any point in time.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- lastTransitionTime
|
|
||||||
- reason
|
|
||||||
- status
|
|
||||||
- type
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
x-kubernetes-list-map-keys:
|
|
||||||
- type
|
|
||||||
x-kubernetes-list-type: map
|
|
||||||
currentIdentifier:
|
|
||||||
description: CurrentIdentifier is the most recent package source that
|
|
||||||
was used to produce a revision. The package manager uses this field
|
|
||||||
to determine whether to check for package updates for a given source
|
|
||||||
when packagePullPolicy is set to IfNotPresent. Manually removing
|
|
||||||
this field will cause the package manager to check that the current
|
|
||||||
revision is correct for the given package source.
|
|
||||||
type: string
|
|
||||||
currentRevision:
|
|
||||||
description: CurrentRevision is the name of the current package revision.
|
|
||||||
It will reflect the most up to date revision, whether it has been
|
|
||||||
activated or not.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
|
|
@ -1,198 +0,0 @@
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
|
||||||
name: providers.pkg.crossplane.io
|
|
||||||
spec:
|
|
||||||
group: pkg.crossplane.io
|
|
||||||
names:
|
|
||||||
categories:
|
|
||||||
- crossplane
|
|
||||||
- pkg
|
|
||||||
kind: Provider
|
|
||||||
listKind: ProviderList
|
|
||||||
plural: providers
|
|
||||||
singular: provider
|
|
||||||
scope: Cluster
|
|
||||||
versions:
|
|
||||||
- additionalPrinterColumns:
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
|
||||||
name: INSTALLED
|
|
||||||
type: string
|
|
||||||
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
|
||||||
name: HEALTHY
|
|
||||||
type: string
|
|
||||||
- jsonPath: .spec.package
|
|
||||||
name: PACKAGE
|
|
||||||
type: string
|
|
||||||
- jsonPath: .metadata.creationTimestamp
|
|
||||||
name: AGE
|
|
||||||
type: date
|
|
||||||
name: v1
|
|
||||||
schema:
|
|
||||||
openAPIV3Schema:
|
|
||||||
description: Provider is the CRD type for a request to add a provider to Crossplane.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
description: 'Kind is a string value representing the REST resource this
|
|
||||||
object represents. Servers may infer this from the endpoint the client
|
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
||||||
type: string
|
|
||||||
metadata:
|
|
||||||
type: object
|
|
||||||
spec:
|
|
||||||
description: ProviderSpec specifies details about a request to install
|
|
||||||
a provider to Crossplane.
|
|
||||||
properties:
|
|
||||||
commonLabels:
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
description: 'Map of string keys and values that can be used to organize
|
|
||||||
and categorize (scope and select) objects. May match selectors of
|
|
||||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
|
||||||
type: object
|
|
||||||
controllerConfigRef:
|
|
||||||
description: 'ControllerConfigRef references a ControllerConfig resource
|
|
||||||
that will be used to configure the packaged controller Deployment.
|
|
||||||
Deprecated: Use RuntimeConfigReference instead.'
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: Name of the ControllerConfig.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
ignoreCrossplaneConstraints:
|
|
||||||
default: false
|
|
||||||
description: IgnoreCrossplaneConstraints indicates to the package
|
|
||||||
manager whether to honor Crossplane version constrains specified
|
|
||||||
by the package. Default is false.
|
|
||||||
type: boolean
|
|
||||||
package:
|
|
||||||
description: Package is the name of the package that is being requested.
|
|
||||||
type: string
|
|
||||||
packagePullPolicy:
|
|
||||||
default: IfNotPresent
|
|
||||||
description: PackagePullPolicy defines the pull policy for the package.
|
|
||||||
Default is IfNotPresent.
|
|
||||||
type: string
|
|
||||||
packagePullSecrets:
|
|
||||||
description: PackagePullSecrets are named secrets in the same namespace
|
|
||||||
that can be used to fetch packages from private registries.
|
|
||||||
items:
|
|
||||||
description: LocalObjectReference contains enough information to
|
|
||||||
let you locate the referenced object inside the same namespace.
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
x-kubernetes-map-type: atomic
|
|
||||||
type: array
|
|
||||||
revisionActivationPolicy:
|
|
||||||
default: Automatic
|
|
||||||
description: RevisionActivationPolicy specifies how the package controller
|
|
||||||
should update from one revision to the next. Options are Automatic
|
|
||||||
or Manual. Default is Automatic.
|
|
||||||
type: string
|
|
||||||
revisionHistoryLimit:
|
|
||||||
default: 1
|
|
||||||
description: RevisionHistoryLimit dictates how the package controller
|
|
||||||
cleans up old inactive package revisions. Defaults to 1. Can be
|
|
||||||
disabled by explicitly setting to 0.
|
|
||||||
format: int64
|
|
||||||
type: integer
|
|
||||||
runtimeConfigRef:
|
|
||||||
default:
|
|
||||||
name: default
|
|
||||||
description: RuntimeConfigRef references a RuntimeConfig resource
|
|
||||||
that will be used to configure the package runtime.
|
|
||||||
properties:
|
|
||||||
apiVersion:
|
|
||||||
default: pkg.crossplane.io/v1beta1
|
|
||||||
description: API version of the referent.
|
|
||||||
type: string
|
|
||||||
kind:
|
|
||||||
default: DeploymentRuntimeConfig
|
|
||||||
description: Kind of the referent.
|
|
||||||
type: string
|
|
||||||
name:
|
|
||||||
description: Name of the RuntimeConfig.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
type: object
|
|
||||||
skipDependencyResolution:
|
|
||||||
default: false
|
|
||||||
description: SkipDependencyResolution indicates to the package manager
|
|
||||||
whether to skip resolving dependencies for a package. Setting this
|
|
||||||
value to true may have unintended consequences. Default is false.
|
|
||||||
type: boolean
|
|
||||||
required:
|
|
||||||
- package
|
|
||||||
type: object
|
|
||||||
status:
|
|
||||||
description: ProviderStatus represents the observed state of a Provider.
|
|
||||||
properties:
|
|
||||||
conditions:
|
|
||||||
description: Conditions of the resource.
|
|
||||||
items:
|
|
||||||
description: A Condition that may apply to a resource.
|
|
||||||
properties:
|
|
||||||
lastTransitionTime:
|
|
||||||
description: LastTransitionTime is the last time this condition
|
|
||||||
transitioned from one status to another.
|
|
||||||
format: date-time
|
|
||||||
type: string
|
|
||||||
message:
|
|
||||||
description: A Message containing details about this condition's
|
|
||||||
last transition from one status to another, if any.
|
|
||||||
type: string
|
|
||||||
reason:
|
|
||||||
description: A Reason for this condition's last transition from
|
|
||||||
one status to another.
|
|
||||||
type: string
|
|
||||||
status:
|
|
||||||
description: Status of this condition; is it currently True,
|
|
||||||
False, or Unknown?
|
|
||||||
type: string
|
|
||||||
type:
|
|
||||||
description: Type of this condition. At most one of each condition
|
|
||||||
type may apply to a resource at any point in time.
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- lastTransitionTime
|
|
||||||
- reason
|
|
||||||
- status
|
|
||||||
- type
|
|
||||||
type: object
|
|
||||||
type: array
|
|
||||||
x-kubernetes-list-map-keys:
|
|
||||||
- type
|
|
||||||
x-kubernetes-list-type: map
|
|
||||||
currentIdentifier:
|
|
||||||
description: CurrentIdentifier is the most recent package source that
|
|
||||||
was used to produce a revision. The package manager uses this field
|
|
||||||
to determine whether to check for package updates for a given source
|
|
||||||
when packagePullPolicy is set to IfNotPresent. Manually removing
|
|
||||||
this field will cause the package manager to check that the current
|
|
||||||
revision is correct for the given package source.
|
|
||||||
type: string
|
|
||||||
currentRevision:
|
|
||||||
description: CurrentRevision is the name of the current package revision.
|
|
||||||
It will reflect the most up to date revision, whether it has been
|
|
||||||
activated or not.
|
|
||||||
type: string
|
|
||||||
type: object
|
|
||||||
type: object
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
subresources:
|
|
||||||
status: {}
|
|
||||||
|
|
@ -1,611 +0,0 @@
|
||||||
---
|
|
||||||
weight: 50
|
|
||||||
title: Command Reference
|
|
||||||
description: "Command reference for the Crossplane CLI"
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- vale Google.Headings = NO -->
|
|
||||||
The `crossplane` CLI provides utilities to make using Crossplane easier.
|
|
||||||
|
|
||||||
Read the [Crossplane CLI overview]({{<ref "../cli">}}) page for information on
|
|
||||||
installing `crossplane`.
|
|
||||||
|
|
||||||
## Global flags
|
|
||||||
The following flags are available for all commands.
|
|
||||||
|
|
||||||
{{< table "table table-sm table-striped">}}
|
|
||||||
| Short flag | Long flag | Description |
|
|
||||||
|------------|-------------|------------------------------|
|
|
||||||
| `-h` | `--help` | Show context sensitive help. |
|
|
||||||
| `-v` | `--version` | Print version and exit. |
|
|
||||||
| | `--verbose` | Print verbose output. |
|
|
||||||
{{< /table >}}
|
|
||||||
|
|
||||||
## xpkg
|
|
||||||
|
|
||||||
The `crossplane xpkg` commands create, install and update Crossplane
|
|
||||||
[packages]({{<ref "../concepts/packages">}}) as well as enable authentication
|
|
||||||
and publishing of Crossplane packages to a Crossplane package registry.
|
|
||||||
|
|
||||||
### xpkg build
|
|
||||||
|
|
||||||
Using `crossplane xpkg build` provides automation and simplification to build
|
|
||||||
Crossplane packages.
|
|
||||||
|
|
||||||
The Crossplane CLI combines a directory of YAML files and packages them as
|
|
||||||
an [OCI container image](https://opencontainers.org/).
|
|
||||||
|
|
||||||
The CLI applies the required annotations and values to meet the
|
|
||||||
[Crossplane XPKG specification](https://github.com/crossplane/crossplane/blob/master/contributing/specifications/xpkg.md).
|
|
||||||
|
|
||||||
The `crossplane` CLI supports building
|
|
||||||
[configuration]({{< ref "../concepts/packages" >}}),
|
|
||||||
[function]({{<ref "../concepts/composition-functions">}}) and
|
|
||||||
[provider]({{<ref "../concepts/providers" >}}) package types.
|
|
||||||
|
|
||||||
|
|
||||||
#### Flags
|
|
||||||
{{< table "table table-sm table-striped">}}
|
|
||||||
| Short flag | Long flag | Description |
|
|
||||||
| ------------ | ------------- | ------------------------------ |
|
|
||||||
| | `--embed-runtime-image-name=NAME` | The image name and tag of an image to include in the package. Only for provider and function packages. |
|
|
||||||
| | `--embed-runtime-image-tarball=PATH` | The filename of an image to include in the package. Only for provider and function packages. |
|
|
||||||
| `-e` | `--examples-root="./examples"` | The path to a directory of examples related to the package. |
|
|
||||||
| | `--ignore=PATH,...` | List of files and directories to ignore. |
|
|
||||||
| `-o` | `--package-file=PATH` | Directory and filename of the created package. |
|
|
||||||
| `-f` | `--package-root="."` | Directory to search for YAML files. |
|
|
||||||
{{< /table >}}
|
|
||||||
|
|
||||||
The `crossplane xpkg build` command recursively looks in the directory set by
|
|
||||||
`--package-root` and attempts to combine any files ending in `.yml` or `.yaml`
|
|
||||||
into a package.
|
|
||||||
|
|
||||||
All YAML files must be valid Kubernetes manifests with `apiVersion`, `kind`,
|
|
||||||
`metadata` and `spec` fields.
|
|
||||||
|
|
||||||
#### Ignore files
|
|
||||||
|
|
||||||
Use `--ignore` to provide a list of files and directories to ignore.
|
|
||||||
|
|
||||||
For example,
|
|
||||||
`crossplane xpkg build --ignore="./test/*,kind-config.yaml"`
|
|
||||||
|
|
||||||
#### Set the package name
|
|
||||||
|
|
||||||
`crossplane` automatically names the new package a combination of the
|
|
||||||
`metadata.name` and a hash of the package contents and saves the contents
|
|
||||||
in the same location as `--package-root`. Define a specific location and
|
|
||||||
filename with `--package-file` or `-o`.
|
|
||||||
|
|
||||||
For example,
|
|
||||||
`crossplane xpkg build -o /home/crossplane/example.xpkg`.
|
|
||||||
|
|
||||||
|
|
||||||
#### Include examples
|
|
||||||
|
|
||||||
Include YAML files demonstrating how to use the package with `--examples-root`.
|
|
||||||
|
|
||||||
[Upbound Marketplace](https://marketplace.upbound.io/) uses files included with
|
|
||||||
`--examples-root` as documentation for published packages.
|
|
||||||
|
|
||||||
#### Include a runtime image
|
|
||||||
|
|
||||||
Functions and Providers require YAML files describing their dependencies and
|
|
||||||
settings as well as a container image for their runtime.
|
|
||||||
|
|
||||||
Using `--embed-runtime-image-name` runs a specified image and
|
|
||||||
includes the image inside the function or provider package.
|
|
||||||
|
|
||||||
{{<hint "note" >}}
|
|
||||||
Images referenced with `--embed-runtime-image-name` must be in the local Docker
|
|
||||||
cache.
|
|
||||||
|
|
||||||
Use `docker pull` to download a missing image.
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
The `--embed-runtime-image-tarball` flag includes a local OCI image tarball
|
|
||||||
inside the function or provider package.
|
|
||||||
|
|
||||||
|
|
||||||
### xpkg install
|
|
||||||
|
|
||||||
Download and install packages into Crossplane with `crossplane xpkg install`.
|
|
||||||
|
|
||||||
By default the `crossplane xpkg install` command uses the Kubernetes
|
|
||||||
configuration defined in `~/.kube/config`.
|
|
||||||
|
|
||||||
Define a custom Kubernetes configuration file location with the environmental
|
|
||||||
variable `KUBECONFIG`.
|
|
||||||
|
|
||||||
Specify the package kind, package file and optionally a name to give the package
|
|
||||||
inside Crossplane.
|
|
||||||
|
|
||||||
`crossplane xpkg install <package-kind> <registry URL package name and tag> [<optional-name>]`
|
|
||||||
|
|
||||||
The `<package-kind>` is either a `configuration`, `function` or `provider`.
|
|
||||||
|
|
||||||
For example, to install version 0.42.0 of the
|
|
||||||
[AWS S3 provider](https://marketplace.upbound.io/providers/upbound/provider-aws-s3/v0.42.0):
|
|
||||||
|
|
||||||
`crossplane xpkg install provider xpkg.upbound.io/upbound/provider-aws-s3:v0.42.0`
|
|
||||||
|
|
||||||
#### Flags
|
|
||||||
{{< table "table table-sm table-striped">}}
|
|
||||||
| Short flag | Long flag | Description |
|
|
||||||
| ------------ | ------------- | ------------------------------ |
|
|
||||||
| | `--runtime-config=<runtime config name>` | Install the package with a runtime configuration. |
|
|
||||||
| `-m` | `--manual-activation` | Set the `revisionActiviationPolicy` to `Manual`. |
|
|
||||||
| | `--package-pull-secrets=<list of secrets>` | A comma-separated list of Kubernetes secrets to use for authenticating to the package registry. |
|
|
||||||
| `-r` | `--revision-history-limit=<number of revisions>` | Set the `revisionHistoryLimit`. Defaults to `1`. |
|
|
||||||
| `-w` | `--wait=<number of seconds>` | Number of seconds to wait for a package to install. |
|
|
||||||
|
|
||||||
{{< /table >}}
|
|
||||||
|
|
||||||
#### Wait for package install
|
|
||||||
|
|
||||||
When installing a package the `crossplane xpkg install` command doesn't wait for
|
|
||||||
the package to download and install. View any download or installation problems
|
|
||||||
by inspecting the `configuration` with `kubectl describe configuration`.
|
|
||||||
|
|
||||||
Use `--wait` to have the `crossplane xpkg install` command to wait for a
|
|
||||||
package to have the condition `HEALTHY` before continuing. The command
|
|
||||||
returns an error if the `wait` time expires before the package is `HEALTHY`.
|
|
||||||
|
|
||||||
#### Require manual package activation
|
|
||||||
|
|
||||||
Set the package to require
|
|
||||||
[manual activation]({{<ref "../concepts/packages#revision-activation-policy" >}}),
|
|
||||||
preventing an automatic upgrade of a package with `--manual-activation`
|
|
||||||
|
|
||||||
#### Authenticate to a private registry
|
|
||||||
|
|
||||||
To authenticate to a private package registry use `--package-pull-secrets` and
|
|
||||||
provide a list of Kubernetes Secret objects.
|
|
||||||
|
|
||||||
{{<hint "important" >}}
|
|
||||||
The secrets must be in the same namespace as the Crossplane pod.
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
#### Customize the number of stored package versions
|
|
||||||
|
|
||||||
By default Crossplane only stores a single inactive package in the local package
|
|
||||||
cache.
|
|
||||||
|
|
||||||
Store more inactive copies of a package with `--revision-history-limit`.
|
|
||||||
|
|
||||||
Read more about
|
|
||||||
[package revisions]({{< ref "../concepts/packages#configuration-revisions" >}})
|
|
||||||
in the package documentation.
|
|
||||||
|
|
||||||
### xpkg login
|
|
||||||
|
|
||||||
Use `xpkg login` to authenticate to `xpkg.upbound.io`, the
|
|
||||||
[Upbound Marketplace](https://marketplace.upbound.io/) container registry.
|
|
||||||
|
|
||||||
[Register with the Upbound Marketplace](https://accounts.upbound.io/register)
|
|
||||||
to push packages and create private repositories.
|
|
||||||
|
|
||||||
#### Flags
|
|
||||||
|
|
||||||
{{< table "table table-sm table-striped">}}
|
|
||||||
| Short flag | Long flag | Description |
|
|
||||||
| ------------ | ------------- | ------------------------------ |
|
|
||||||
| `-u` | `--username=<username>` | Username to use for authentication. |
|
|
||||||
| `-p` | `--password=<password>` | Password to use for authentication. |
|
|
||||||
| `-t` | `--token=<token string>` | User token string to use for authentication. |
|
|
||||||
| `-a` | `--account=<organization>` | Specify an Upbound organization during authentication. |
|
|
||||||
{{< /table >}}
|
|
||||||
|
|
||||||
|
|
||||||
#### Authentication options
|
|
||||||
|
|
||||||
The `crossplane xpkg login` command can use a username and password or Upbound API token.
|
|
||||||
|
|
||||||
By default, `crossplane xpkg login` without arguments, prompts for a username
|
|
||||||
and password.
|
|
||||||
|
|
||||||
Provide a username and password with the `--username` and `--password` flags or
|
|
||||||
set the environmental variable `UP_USER` for a username or `UP_PASSWORD` for the
|
|
||||||
password.
|
|
||||||
|
|
||||||
Use an Upbound user token instead of a username and password with `--token` or
|
|
||||||
the `UP_TOKEN` environmental variable.
|
|
||||||
|
|
||||||
{{< hint "important" >}}
|
|
||||||
The `--token` or `UP_TOKEN` environmental variables take precedence over a
|
|
||||||
username and password.
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
Using `-` as the input for `--password` or `--token` reads the input from stdin.
|
|
||||||
For example, `crossplane xpkg login --password -`.
|
|
||||||
|
|
||||||
After logging in the Crossplane CLI creates a `profile` in
|
|
||||||
`.crossplane/config.json` to cache unprivileged account information.
|
|
||||||
|
|
||||||
{{<hint "note" >}}
|
|
||||||
The `session` field of `config.json` file is a session cookie identifier.
|
|
||||||
|
|
||||||
The `session` value isn't used for authentication. This isn't a `token`.
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
#### Authenticate with a registered Upbound organization
|
|
||||||
|
|
||||||
Authenticate to a registered organization in the Upbound Marketplace with the
|
|
||||||
`--account` option, along with the username and password or token.
|
|
||||||
|
|
||||||
For example,
|
|
||||||
`crossplane xpkg login --account=Upbound --username=my-user --password -`.
|
|
||||||
|
|
||||||
### xpkg logout
|
|
||||||
|
|
||||||
Use `crossplane xpkg logout` to invalidate the current `crossplane xpkg login`
|
|
||||||
session.
|
|
||||||
|
|
||||||
{{< hint "note" >}}
|
|
||||||
Using `crossplane xpkg logout` removes the `session` from the
|
|
||||||
`~/.crossplane/config.json` file, but doesn't delete the configuration file.
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
### xpkg push
|
|
||||||
|
|
||||||
Push a Crossplane package file to a package registry.
|
|
||||||
|
|
||||||
The Crossplane CLI pushes images to the
|
|
||||||
[Upbound Marketplace](https://marketplace.upbound.io/) at `xpkg.upbound.io` by
|
|
||||||
default.
|
|
||||||
|
|
||||||
{{< hint "note" >}}
|
|
||||||
Pushing a package may require authentication with
|
|
||||||
[`crossplane xpkg login`](#xpkg-login)
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
Specify the organization, package name and tag with
|
|
||||||
`crossplane xpkg push <package>`
|
|
||||||
|
|
||||||
By default the command looks in the current directory for a single `.xpkg` file
|
|
||||||
to push.
|
|
||||||
|
|
||||||
To push multiple files or to specify a specific `.xpkg` file use the `-f` flag.
|
|
||||||
|
|
||||||
For example, to push a local package named `my-package` to
|
|
||||||
`crossplane-docs/my-package:v0.14.0` use:
|
|
||||||
|
|
||||||
`crossplane xpkg push -f my-package.xpkg crossplane-docs/my-package:v0.14.0`
|
|
||||||
|
|
||||||
To push to another package registry, like [DockerHub](https://hub.docker.com/)
|
|
||||||
provide the full URL along with the package name.
|
|
||||||
|
|
||||||
For example, to push a local package named `my-package` to
|
|
||||||
DockerHub organization `crossplane-docs/my-package:v0.14.0` use:
|
|
||||||
`crossplane xpkg push -f my-package.xpkg index.docker.io/crossplane-docs/my-package:v0.14.0`.
|
|
||||||
|
|
||||||
|
|
||||||
#### Flags
|
|
||||||
|
|
||||||
{{< table "table table-sm table-striped">}}
|
|
||||||
| Short flag | Long flag | Description |
|
|
||||||
| ------------ | ------------- | ------------------------------ |
|
|
||||||
| `-f` | `--package-files=PATH` | A comma-separated list of xpkg files to push. |
|
|
||||||
{{< /table >}}
|
|
||||||
|
|
||||||
### xpkg update
|
|
||||||
|
|
||||||
The `crossplane xpkg update` command downloads and updates an existing package.
|
|
||||||
|
|
||||||
By default the `crossplane xpkg update` command uses the Kubernetes
|
|
||||||
configuration defined in `~/.kube/config`.
|
|
||||||
|
|
||||||
Define a custom Kubernetes configuration file location with the environmental
|
|
||||||
variable `KUBECONFIG`.
|
|
||||||
|
|
||||||
Specify the package kind, package file and optionally the name of the package
|
|
||||||
already installed in Crossplane.
|
|
||||||
|
|
||||||
`crossplane xpkg update <package-kind> <registry package name and tag> [<optional-name>]`
|
|
||||||
|
|
||||||
The package file must be an organization, image and tag on the `xpkg.upbound.io`
|
|
||||||
registry on [Upbound Marketplace](https://marketplace.upbound.io/).
|
|
||||||
|
|
||||||
For example, to update to version 0.42.0 of the
|
|
||||||
[AWS S3 provider](https://marketplace.upbound.io/providers/upbound/provider-aws-s3/v0.42.0):
|
|
||||||
|
|
||||||
`crossplane xpkg update provider xpkg.upbound.io/upbound/provider-aws-s3:v0.42.0`
|
|
||||||
|
|
||||||
|
|
||||||
## beta
|
|
||||||
|
|
||||||
Crossplane `beta` commands are experimental. These commands may change the
|
|
||||||
flags, options or outputs in future releases.
|
|
||||||
|
|
||||||
Crossplane maintainers may promote or remove commands under `beta` in future
|
|
||||||
releases.
|
|
||||||
|
|
||||||
### beta render
|
|
||||||
|
|
||||||
The `crossplane beta render` command previews the output of a
|
|
||||||
[composite resource]({{<ref "../concepts/composite-resources">}}) after applying
|
|
||||||
any [composition functions]({{<ref "../concepts/composition-functions">}}).
|
|
||||||
|
|
||||||
{{< hint "important" >}}
|
|
||||||
The `crossplane beta render` command doesn't apply
|
|
||||||
[patch and transform composition patches]({{<ref "../concepts/patch-and-transform">}}).
|
|
||||||
|
|
||||||
The command only supports function "patch and transforms."
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
The `crossplane beta render` command connects to the locally running Docker
|
|
||||||
Engine to pull and run composition functions.
|
|
||||||
|
|
||||||
{{<hint "important">}}
|
|
||||||
Running `crossplane beta render` requires [Docker](https://www.docker.com/).
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
Provide a composite resource, composition and composition function YAML
|
|
||||||
definition with the command to render the output locally.
|
|
||||||
|
|
||||||
For example,
|
|
||||||
`crossplane beta render xr.yaml composition.yaml function.yaml`
|
|
||||||
|
|
||||||
The output includes the original composite resource followed by the generated
|
|
||||||
managed resources.
|
|
||||||
|
|
||||||
{{<expand "An example render output" >}}
|
|
||||||
```yaml
|
|
||||||
---
|
|
||||||
apiVersion: nopexample.org/v1
|
|
||||||
kind: XBucket
|
|
||||||
metadata:
|
|
||||||
name: test-xrender
|
|
||||||
status:
|
|
||||||
bucketRegion: us-east-2
|
|
||||||
---
|
|
||||||
apiVersion: s3.aws.upbound.io/v1beta1
|
|
||||||
kind: Bucket
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
crossplane.io/composition-resource-name: my-bucket
|
|
||||||
generateName: test-xrender-
|
|
||||||
labels:
|
|
||||||
crossplane.io/composite: test-xrender
|
|
||||||
ownerReferences:
|
|
||||||
- apiVersion: nopexample.org/v1
|
|
||||||
blockOwnerDeletion: true
|
|
||||||
controller: true
|
|
||||||
kind: XBucket
|
|
||||||
name: test-xrender
|
|
||||||
uid: ""
|
|
||||||
spec:
|
|
||||||
forProvider:
|
|
||||||
region: us-east-2
|
|
||||||
```
|
|
||||||
{{< /expand >}}
|
|
||||||
|
|
||||||
#### Flags
|
|
||||||
|
|
||||||
{{< table "table table-sm table-striped">}}
|
|
||||||
| Short flag | Long flag | Description |
|
|
||||||
| ------------ | ------------- | ------------------------------ |
|
|
||||||
| | `--context-files=<key>=<file>,<key>=<file>` | A comma separated list of files to load for function "contexts." |
|
|
||||||
| | `--context-values=<key>=<value>,<key>=<value>` | A comma separated list of key-value pairs to load for function "contexts." |
|
|
||||||
| `-r` | `--include-function-results` | Include the "results" or events from the function. |
|
|
||||||
| `-o` | `--observed-resources=<directory or file>` | Provide artificial managed resource data to the function. |
|
|
||||||
| | `--timeout=` | Amount of time to wait for a function to finish. |
|
|
||||||
{{< /table >}}
|
|
||||||
|
|
||||||
The `crossplane beta render` command relies on standard
|
|
||||||
[Docker environmental variables](https://docs.docker.com/engine/reference/commandline/cli/#environment-variables)
|
|
||||||
to connect to the local Docker engine and run composition functions.
|
|
||||||
|
|
||||||
|
|
||||||
#### Provide function context
|
|
||||||
|
|
||||||
The `--context-files` and `--context-values` flags can provide data
|
|
||||||
to a function's `context`.
|
|
||||||
The context is JSON formatted data.
|
|
||||||
|
|
||||||
#### Include function results
|
|
||||||
|
|
||||||
If a function produces Kubernetes events with statuses use the
|
|
||||||
`--include-function-results` to print them along with the managed resource
|
|
||||||
outputs.
|
|
||||||
|
|
||||||
#### Mock managed resources
|
|
||||||
|
|
||||||
Provide mocked, or artificial data representing a managed resource with
|
|
||||||
`--observed-resources`. The `crossplane beta render` command treats the
|
|
||||||
provided inputs as if they were resources in a Crossplane cluster.
|
|
||||||
|
|
||||||
A function can reference and manipulate the included resource as part of
|
|
||||||
running the function.
|
|
||||||
|
|
||||||
The `observed-resources` may be a single YAML file with multiple resources or a
|
|
||||||
directory of YAML files representing multiple resources.
|
|
||||||
|
|
||||||
Inside the YAML file include an
|
|
||||||
{{<hover label="apiVersion" line="1">}}apiVersion{{</hover>}},
|
|
||||||
{{<hover label="apiVersion" line="2">}}kind{{</hover>}},
|
|
||||||
{{<hover label="apiVersion" line="3">}}metadata{{</hover>}} and
|
|
||||||
{{<hover label="apiVersion" line="7">}}spec{{</hover>}}.
|
|
||||||
|
|
||||||
```yaml {label="or"}
|
|
||||||
apiVersion: example.org/v1alpha1
|
|
||||||
kind: ComposedResource
|
|
||||||
metadata:
|
|
||||||
name: test-render-b
|
|
||||||
annotations:
|
|
||||||
crossplane.io/composition-resource-name: resource-b
|
|
||||||
spec:
|
|
||||||
coolerField: "I'm cooler!"
|
|
||||||
```
|
|
||||||
|
|
||||||
The schema of the resource isn't validated and may contain any data.
|
|
||||||
|
|
||||||
|
|
||||||
### beta trace
|
|
||||||
|
|
||||||
Use the `crossplane beta trace` command to display a visual relationship of
|
|
||||||
Crossplane objects. The `trace` command supports claims, compositions or
|
|
||||||
managed resources.
|
|
||||||
|
|
||||||
The command requires a resource type and a resource name.
|
|
||||||
|
|
||||||
`crossplane beta trace <resource kind> <resource name>`
|
|
||||||
|
|
||||||
For example to view a resource named `my-claim` of type `example.crossplane.io`:
|
|
||||||
`crossplane beta trace example.crossplane.io my-claim`
|
|
||||||
|
|
||||||
The command also accepts Kubernetes CLI style `<kind>/<name>` input.
|
|
||||||
For example,
|
|
||||||
`crossplane beta trace example.crossplane.io/my-claim`
|
|
||||||
|
|
||||||
By default the `crossplane beta trace` command uses the Kubernetes
|
|
||||||
configuration defined in `~/.kube/config`.
|
|
||||||
|
|
||||||
Define a custom Kubernetes configuration file location with the environmental
|
|
||||||
variable `KUBECONFIG`.
|
|
||||||
|
|
||||||
#### Flags
|
|
||||||
{{< table "table table-sm table-striped">}}
|
|
||||||
<!-- vale Crossplane.Spelling = NO -->
|
|
||||||
<!-- vale flags `dot` as an error but only the trailing tick. -->
|
|
||||||
| Short flag | Long flag | Description |
|
|
||||||
| ------------ | ------------- | ------------------------------ |
|
|
||||||
| `-n` | `--namespace` | The namespace of the resource. |
|
|
||||||
| `-o` | `--output=` | Change the graph output with `wide`, `json`, or `dot` for a [Graphviz dot](https://graphviz.org/docs/layouts/dot/) output. |
|
|
||||||
| `-s` | `--show-connection-secrets` | Print any connection secret names. Doesn't print the secret values. |
|
|
||||||
<!-- vale Crossplane.Spelling = YES -->
|
|
||||||
{{< /table >}}
|
|
||||||
|
|
||||||
#### Output options
|
|
||||||
|
|
||||||
By default `crossplane beta trace` prints directly to the terminal, limiting the
|
|
||||||
"Ready" condition and "Status" messages to 64 characters.
|
|
||||||
|
|
||||||
The following an example output a "cluster" claim from the AWS reference
|
|
||||||
platform, which includes multiple Compositions and composed resources:
|
|
||||||
|
|
||||||
```shell {copy-lines="1"}
|
|
||||||
crossplane beta trace cluster.aws.platformref.upbound.io platform-ref-aws
|
|
||||||
NAME SYNCED READY STATUS
|
|
||||||
Cluster/platform-ref-aws (default) True True Available
|
|
||||||
└─ XCluster/platform-ref-aws-mlnwb True True Available
|
|
||||||
├─ XNetwork/platform-ref-aws-mlnwb-6nvkx True True Available
|
|
||||||
│ ├─ VPC/platform-ref-aws-mlnwb-ckblr True True Available
|
|
||||||
│ ├─ InternetGateway/platform-ref-aws-mlnwb-r7w47 True True Available
|
|
||||||
│ ├─ Subnet/platform-ref-aws-mlnwb-lhr4h True True Available
|
|
||||||
│ ├─ Subnet/platform-ref-aws-mlnwb-bss4b True True Available
|
|
||||||
│ ├─ Subnet/platform-ref-aws-mlnwb-fzbxx True True Available
|
|
||||||
│ ├─ Subnet/platform-ref-aws-mlnwb-vxbf4 True True Available
|
|
||||||
│ ├─ RouteTable/platform-ref-aws-mlnwb-cs9nl True True Available
|
|
||||||
│ ├─ Route/platform-ref-aws-mlnwb-vpxdg True True Available
|
|
||||||
│ ├─ MainRouteTableAssociation/platform-ref-aws-mlnwb-sngx5 True True Available
|
|
||||||
│ ├─ RouteTableAssociation/platform-ref-aws-mlnwb-hprsp True True Available
|
|
||||||
│ ├─ RouteTableAssociation/platform-ref-aws-mlnwb-shb8f True True Available
|
|
||||||
│ ├─ RouteTableAssociation/platform-ref-aws-mlnwb-hvb2h True True Available
|
|
||||||
│ ├─ RouteTableAssociation/platform-ref-aws-mlnwb-m58vl True True Available
|
|
||||||
│ ├─ SecurityGroup/platform-ref-aws-mlnwb-xxbl2 True True Available
|
|
||||||
│ ├─ SecurityGroupRule/platform-ref-aws-mlnwb-7qt56 True True Available
|
|
||||||
│ └─ SecurityGroupRule/platform-ref-aws-mlnwb-szgxp True True Available
|
|
||||||
├─ XEKS/platform-ref-aws-mlnwb-fqjzz True True Available
|
|
||||||
│ ├─ Role/platform-ref-aws-mlnwb-gmpqv True True Available
|
|
||||||
│ ├─ RolePolicyAttachment/platform-ref-aws-mlnwb-t6rct True True Available
|
|
||||||
│ ├─ Cluster/platform-ref-aws-mlnwb-crrt8 True True Available
|
|
||||||
│ ├─ ClusterAuth/platform-ref-aws-mlnwb-dgn6f True True Available
|
|
||||||
│ ├─ Role/platform-ref-aws-mlnwb-tdnx4 True True Available
|
|
||||||
│ ├─ RolePolicyAttachment/platform-ref-aws-mlnwb-qzljh True True Available
|
|
||||||
│ ├─ RolePolicyAttachment/platform-ref-aws-mlnwb-l64q2 True True Available
|
|
||||||
│ ├─ RolePolicyAttachment/platform-ref-aws-mlnwb-xn2px True True Available
|
|
||||||
│ ├─ NodeGroup/platform-ref-aws-mlnwb-4sfss True True Available
|
|
||||||
│ ├─ OpenIDConnectProvider/platform-ref-aws-mlnwb-h26xx True True Available
|
|
||||||
│ └─ ProviderConfig/platform-ref-aws - -
|
|
||||||
└─ XServices/platform-ref-aws-mlnwb-bgndx True True Available
|
|
||||||
├─ Release/platform-ref-aws-mlnwb-bcj7r True True Available
|
|
||||||
└─ Release/platform-ref-aws-mlnwb-7hfkv True True Available
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Wide outputs
|
|
||||||
Print the entire "Ready" or "Status" message if they're longer than
|
|
||||||
64 characters with `--output=wide`.
|
|
||||||
|
|
||||||
For example, the output truncates the "Status" message that's too long.
|
|
||||||
|
|
||||||
```shell {copy-lines="1"
|
|
||||||
crossplane trace cluster.aws.platformref.upbound.io platform-ref-aws
|
|
||||||
NAME SYNCED READY STATUS
|
|
||||||
Cluster/platform-ref-aws (default) True False Waiting: ...resource claim is waiting for composite resource to become Ready
|
|
||||||
```
|
|
||||||
|
|
||||||
Use `--output=wide` to see the full message.
|
|
||||||
|
|
||||||
```shell {copy-lines="1"
|
|
||||||
crossplane trace cluster.aws.platformref.upbound.io platform-ref-aws --output=wide
|
|
||||||
NAME SYNCED READY STATUS
|
|
||||||
Cluster/platform-ref-aws (default) True False Waiting: Composite resource claim is waiting for composite resource to become Ready
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Graphviz dot file output
|
|
||||||
|
|
||||||
Use the `--output=dot` to print out a textual
|
|
||||||
[Graphviz dot](https://graphviz.org/docs/layouts/dot/) output.
|
|
||||||
|
|
||||||
Save the output and export it or the output directly to Graphviz `dot` to
|
|
||||||
render an image.
|
|
||||||
|
|
||||||
For example, to save the output as a `graph.png` file use
|
|
||||||
`dot -Tpng -o graph.png`.
|
|
||||||
|
|
||||||
`crossplane beta trace cluster.aws.platformref.upbound.io platform-ref-aws -o dot | dot -Tpng -o graph.png`
|
|
||||||
|
|
||||||
#### Print connection secrets
|
|
||||||
|
|
||||||
Use `-s` to print any connection secret names along with the other resources.
|
|
||||||
|
|
||||||
{{<hint "important">}}
|
|
||||||
The `crossplane beta trace` command doesn't print secret values.
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
The output includes both the secret name along with the secret's namespace.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
NAME SYNCED READY STATUS
|
|
||||||
Cluster/platform-ref-aws (default) True True Available
|
|
||||||
└─ XCluster/platform-ref-aws-mlnwb True True Available
|
|
||||||
├─ XNetwork/platform-ref-aws-mlnwb-6nvkx True True Available
|
|
||||||
│ ├─ SecurityGroupRule/platform-ref-aws-mlnwb-szgxp True True Available
|
|
||||||
│ └─ Secret/3f11c30b-dd94-4f5b-aff7-10fe4318ab1f (upbound-system) - -
|
|
||||||
├─ XEKS/platform-ref-aws-mlnwb-fqjzz True True Available
|
|
||||||
│ ├─ OpenIDConnectProvider/platform-ref-aws-mlnwb-h26xx True True Available
|
|
||||||
│ └─ Secret/9666eccd-929c-4452-8658-c8c881aee137-eks (upbound-system) - -
|
|
||||||
├─ XServices/platform-ref-aws-mlnwb-bgndx True True Available
|
|
||||||
│ ├─ Release/platform-ref-aws-mlnwb-7hfkv True True Available
|
|
||||||
│ └─ Secret/d0955929-892d-40c3-b0e0-a8cabda55895 (upbound-system) - -
|
|
||||||
└─ Secret/9666eccd-929c-4452-8658-c8c881aee137 (upbound-system) - -
|
|
||||||
```
|
|
||||||
|
|
||||||
### beta xpkg init
|
|
||||||
|
|
||||||
The `crossplane beta xpkg init` command populates the current directory with
|
|
||||||
files to build a package.
|
|
||||||
|
|
||||||
Provide a name to use for the package and the package template to start from
|
|
||||||
with the command
|
|
||||||
`crossplane beta xpkg init <name> <template>`
|
|
||||||
|
|
||||||
The `<name>` input isn't used. Crossplane reserves the `<name>` for future releases.
|
|
||||||
|
|
||||||
The `<template>` value may be one of three well known templates:
|
|
||||||
* `function-template-go` - A template to build Crossplane [composition functions]({{<ref "../concepts/composition-functions">}}) from the [crossplane/function-template-go](https://github.com/crossplane/function-template-go) repository.
|
|
||||||
* `provider-template` - A template to build a basic Crossplane provider from the [Crossplane/provider-template](https://github.com/crossplane/provider-template) repository.
|
|
||||||
* `provider-template-upjet` - A template for building [Upjet](https://github.com/crossplane/upjet) based Crossplane providers from existing Terraform providers. Copies from the [upbound/upjet-provider-template](https://github.com/upbound/upjet-provider-template) repository.
|
|
||||||
|
|
||||||
Instead of a well known template the `<template>` value can be a git repository
|
|
||||||
URL.
|
|
||||||
|
|
||||||
#### Flags
|
|
||||||
{{< table "table table-sm table-striped">}}
|
|
||||||
| Short flag | Long flag | Description |
|
|
||||||
| ------------ | ------------- | ------------------------------ |
|
|
||||||
| `-d` | `--directory` | The directory to create and load the template files into. Uses the current directory by default. |
|
|
||||||
<!-- vale Crossplane.Spelling = YES -->
|
|
||||||
{{< /table >}}
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,7 +0,0 @@
|
||||||
---
|
|
||||||
title: Upgrade Crossplane
|
|
||||||
weight: 200
|
|
||||||
draft: true
|
|
||||||
---
|
|
||||||
|
|
||||||
Install, Uninstall, Upgrade
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
title: "Overview"
|
title: "Overview"
|
||||||
weight: -1
|
weight: -1
|
||||||
cascade:
|
cascade:
|
||||||
version: "1.14"
|
version: "1.17"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< img src="/media/banner.png" alt="Crossplane Popsicle Truck" size="large" >}}
|
{{< img src="/media/banner.png" alt="Crossplane Popsicle Truck" size="large" >}}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Crossplane API
|
title: API Reference
|
||||||
weight: 400
|
weight: 400
|
||||||
description: "API details for Crossplane's core types"
|
description: "API details for Crossplane's core types"
|
||||||
cascade:
|
cascade:
|
||||||
|
|
@ -0,0 +1,581 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
|
name: compositeresourcedefinitions.apiextensions.crossplane.io
|
||||||
|
spec:
|
||||||
|
group: apiextensions.crossplane.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- crossplane
|
||||||
|
kind: CompositeResourceDefinition
|
||||||
|
listKind: CompositeResourceDefinitionList
|
||||||
|
plural: compositeresourcedefinitions
|
||||||
|
shortNames:
|
||||||
|
- xrd
|
||||||
|
- xrds
|
||||||
|
singular: compositeresourcedefinition
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Established')].status
|
||||||
|
name: ESTABLISHED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Offered')].status
|
||||||
|
name: OFFERED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A CompositeResourceDefinition defines the schema for a new custom Kubernetes
|
||||||
|
API.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about CustomResourceDefinitions](https://docs.crossplane.io/latest/concepts/composite-resource-definitions).
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: CompositeResourceDefinitionSpec specifies the desired state
|
||||||
|
of the definition.
|
||||||
|
properties:
|
||||||
|
claimNames:
|
||||||
|
description: |-
|
||||||
|
ClaimNames specifies the names of an optional composite resource claim.
|
||||||
|
When claim names are specified Crossplane will create a namespaced
|
||||||
|
'composite resource claim' CRD that corresponds to the defined composite
|
||||||
|
resource. This composite resource claim acts as a namespaced proxy for
|
||||||
|
the composite resource; creating, updating, or deleting the claim will
|
||||||
|
create, update, or delete a corresponding composite resource. You may add
|
||||||
|
claim names to an existing CompositeResourceDefinition, but they cannot
|
||||||
|
be changed or removed once they have been set.
|
||||||
|
properties:
|
||||||
|
categories:
|
||||||
|
description: |-
|
||||||
|
categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
|
||||||
|
This is published in API discovery documents, and used by clients to support invocations like
|
||||||
|
`kubectl get all`.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
kind is the serialized kind of the resource. It is normally CamelCase and singular.
|
||||||
|
Custom resource instances will use this value as the `kind` attribute in API calls.
|
||||||
|
type: string
|
||||||
|
listKind:
|
||||||
|
description: listKind is the serialized kind of the list for this
|
||||||
|
resource. Defaults to "`kind`List".
|
||||||
|
type: string
|
||||||
|
plural:
|
||||||
|
description: |-
|
||||||
|
plural is the plural name of the resource to serve.
|
||||||
|
The custom resources are served under `/apis/<group>/<version>/.../<plural>`.
|
||||||
|
Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`).
|
||||||
|
Must be all lowercase.
|
||||||
|
type: string
|
||||||
|
shortNames:
|
||||||
|
description: |-
|
||||||
|
shortNames are short names for the resource, exposed in API discovery documents,
|
||||||
|
and used by clients to support invocations like `kubectl get <shortname>`.
|
||||||
|
It must be all lowercase.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
singular:
|
||||||
|
description: singular is the singular name of the resource. It
|
||||||
|
must be all lowercase. Defaults to lowercased `kind`.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- kind
|
||||||
|
- plural
|
||||||
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
|
connectionSecretKeys:
|
||||||
|
description: |-
|
||||||
|
ConnectionSecretKeys is the list of keys that will be exposed to the end
|
||||||
|
user of the defined kind.
|
||||||
|
If the list is empty, all keys will be published.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
conversion:
|
||||||
|
description: Conversion defines all conversion settings for the defined
|
||||||
|
Composite resource.
|
||||||
|
properties:
|
||||||
|
strategy:
|
||||||
|
description: |-
|
||||||
|
strategy specifies how custom resources are converted between versions. Allowed values are:
|
||||||
|
- `"None"`: The converter only change the apiVersion and would not touch any other field in the custom resource.
|
||||||
|
- `"Webhook"`: API Server will call to an external webhook to do the conversion. Additional information
|
||||||
|
is needed for this option. This requires spec.preserveUnknownFields to be false, and spec.conversion.webhook to be set.
|
||||||
|
type: string
|
||||||
|
webhook:
|
||||||
|
description: webhook describes how to call the conversion webhook.
|
||||||
|
Required when `strategy` is set to `"Webhook"`.
|
||||||
|
properties:
|
||||||
|
clientConfig:
|
||||||
|
description: clientConfig is the instructions for how to call
|
||||||
|
the webhook if strategy is `Webhook`.
|
||||||
|
properties:
|
||||||
|
caBundle:
|
||||||
|
description: |-
|
||||||
|
caBundle is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
|
||||||
|
If unspecified, system trust roots on the apiserver are used.
|
||||||
|
format: byte
|
||||||
|
type: string
|
||||||
|
service:
|
||||||
|
description: |-
|
||||||
|
service is a reference to the service for this webhook. Either
|
||||||
|
service or url must be specified.
|
||||||
|
|
||||||
|
|
||||||
|
If the webhook is running within the cluster, then you should use `service`.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
name is the name of the service.
|
||||||
|
Required
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: |-
|
||||||
|
namespace is the namespace of the service.
|
||||||
|
Required
|
||||||
|
type: string
|
||||||
|
path:
|
||||||
|
description: path is an optional URL path at which
|
||||||
|
the webhook will be contacted.
|
||||||
|
type: string
|
||||||
|
port:
|
||||||
|
description: |-
|
||||||
|
port is an optional service port at which the webhook will be contacted.
|
||||||
|
`port` should be a valid port number (1-65535, inclusive).
|
||||||
|
Defaults to 443 for backward compatibility.
|
||||||
|
format: int32
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- namespace
|
||||||
|
type: object
|
||||||
|
url:
|
||||||
|
description: |-
|
||||||
|
url gives the location of the webhook, in standard URL form
|
||||||
|
(`scheme://host:port/path`). Exactly one of `url` or `service`
|
||||||
|
must be specified.
|
||||||
|
|
||||||
|
|
||||||
|
The `host` should not refer to a service running in the cluster; use
|
||||||
|
the `service` field instead. The host might be resolved via external
|
||||||
|
DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
|
||||||
|
in-cluster DNS as that would be a layering violation). `host` may
|
||||||
|
also be an IP address.
|
||||||
|
|
||||||
|
|
||||||
|
Please note that using `localhost` or `127.0.0.1` as a `host` is
|
||||||
|
risky unless you take great care to run this webhook on all hosts
|
||||||
|
which run an apiserver which might need to make calls to this
|
||||||
|
webhook. Such installs are likely to be non-portable, i.e., not easy
|
||||||
|
to turn up in a new cluster.
|
||||||
|
|
||||||
|
|
||||||
|
The scheme must be "https"; the URL must begin with "https://".
|
||||||
|
|
||||||
|
|
||||||
|
A path is optional, and if present may be any string permissible in
|
||||||
|
a URL. You may use the path to pass an arbitrary string to the
|
||||||
|
webhook, for example, a cluster identifier.
|
||||||
|
|
||||||
|
|
||||||
|
Attempting to use a user or basic auth e.g. "user:password@" is not
|
||||||
|
allowed. Fragments ("#...") and query parameters ("?...") are not
|
||||||
|
allowed, either.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
conversionReviewVersions:
|
||||||
|
description: |-
|
||||||
|
conversionReviewVersions is an ordered list of preferred `ConversionReview`
|
||||||
|
versions the Webhook expects. The API server will use the first version in
|
||||||
|
the list which it supports. If none of the versions specified in this list
|
||||||
|
are supported by API server, conversion will fail for the custom resource.
|
||||||
|
If a persisted Webhook configuration specifies allowed versions and does not
|
||||||
|
include any versions known to the API Server, calls to the webhook will fail.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
required:
|
||||||
|
- conversionReviewVersions
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- strategy
|
||||||
|
type: object
|
||||||
|
defaultCompositeDeletePolicy:
|
||||||
|
default: Background
|
||||||
|
description: |-
|
||||||
|
DefaultCompositeDeletePolicy is the policy used when deleting the Composite
|
||||||
|
that is associated with the Claim if no policy has been specified.
|
||||||
|
enum:
|
||||||
|
- Background
|
||||||
|
- Foreground
|
||||||
|
type: string
|
||||||
|
defaultCompositionRef:
|
||||||
|
description: |-
|
||||||
|
DefaultCompositionRef refers to the Composition resource that will be used
|
||||||
|
in case no composition selector is given.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the Composition.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
defaultCompositionUpdatePolicy:
|
||||||
|
default: Automatic
|
||||||
|
description: |-
|
||||||
|
DefaultCompositionUpdatePolicy is the policy used when updating composites after a new
|
||||||
|
Composition Revision has been created if no policy has been specified on the composite.
|
||||||
|
enum:
|
||||||
|
- Automatic
|
||||||
|
- Manual
|
||||||
|
type: string
|
||||||
|
enforcedCompositionRef:
|
||||||
|
description: |-
|
||||||
|
EnforcedCompositionRef refers to the Composition resource that will be used
|
||||||
|
by all composite instances whose schema is defined by this definition.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the Composition.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
|
group:
|
||||||
|
description: |-
|
||||||
|
Group specifies the API group of the defined composite resource.
|
||||||
|
Composite resources are served under `/apis/<group>/...`. Must match the
|
||||||
|
name of the XRD (in the form `<names.plural>.<group>`).
|
||||||
|
type: string
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
|
metadata:
|
||||||
|
description: Metadata specifies the desired metadata for the defined
|
||||||
|
composite resource and claim CRD's.
|
||||||
|
properties:
|
||||||
|
annotations:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Annotations is an unstructured key value map stored with a resource that may be
|
||||||
|
set by external tools to store and retrieve arbitrary metadata. They are not
|
||||||
|
queryable and should be preserved when modifying objects.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
|
||||||
|
type: object
|
||||||
|
labels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
|
||||||
|
and services.
|
||||||
|
These labels are added to the composite resource and claim CRD's in addition
|
||||||
|
to any labels defined by `CompositionResourceDefinition` `metadata.labels`.
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
names:
|
||||||
|
description: |-
|
||||||
|
Names specifies the resource and kind names of the defined composite
|
||||||
|
resource.
|
||||||
|
properties:
|
||||||
|
categories:
|
||||||
|
description: |-
|
||||||
|
categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
|
||||||
|
This is published in API discovery documents, and used by clients to support invocations like
|
||||||
|
`kubectl get all`.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
kind is the serialized kind of the resource. It is normally CamelCase and singular.
|
||||||
|
Custom resource instances will use this value as the `kind` attribute in API calls.
|
||||||
|
type: string
|
||||||
|
listKind:
|
||||||
|
description: listKind is the serialized kind of the list for this
|
||||||
|
resource. Defaults to "`kind`List".
|
||||||
|
type: string
|
||||||
|
plural:
|
||||||
|
description: |-
|
||||||
|
plural is the plural name of the resource to serve.
|
||||||
|
The custom resources are served under `/apis/<group>/<version>/.../<plural>`.
|
||||||
|
Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`).
|
||||||
|
Must be all lowercase.
|
||||||
|
type: string
|
||||||
|
shortNames:
|
||||||
|
description: |-
|
||||||
|
shortNames are short names for the resource, exposed in API discovery documents,
|
||||||
|
and used by clients to support invocations like `kubectl get <shortname>`.
|
||||||
|
It must be all lowercase.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
singular:
|
||||||
|
description: singular is the singular name of the resource. It
|
||||||
|
must be all lowercase. Defaults to lowercased `kind`.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- kind
|
||||||
|
- plural
|
||||||
|
type: object
|
||||||
|
x-kubernetes-validations:
|
||||||
|
- message: Value is immutable
|
||||||
|
rule: self == oldSelf
|
||||||
|
versions:
|
||||||
|
description: |-
|
||||||
|
Versions is the list of all API versions of the defined composite
|
||||||
|
resource. Version names are used to compute the order in which served
|
||||||
|
versions are listed in API discovery. If the version string is
|
||||||
|
"kube-like", it will sort above non "kube-like" version strings, which
|
||||||
|
are ordered lexicographically. "Kube-like" versions start with a "v",
|
||||||
|
then are followed by a number (the major version), then optionally the
|
||||||
|
string "alpha" or "beta" and another number (the minor version). These
|
||||||
|
are sorted first by GA > beta > alpha (where GA is a version with no
|
||||||
|
suffix such as beta or alpha), and then by comparing major version, then
|
||||||
|
minor version. An example sorted list of versions: v10, v2, v1, v11beta2,
|
||||||
|
v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
|
||||||
|
items:
|
||||||
|
description: CompositeResourceDefinitionVersion describes a version
|
||||||
|
of an XR.
|
||||||
|
properties:
|
||||||
|
additionalPrinterColumns:
|
||||||
|
description: |-
|
||||||
|
AdditionalPrinterColumns specifies additional columns returned in Table
|
||||||
|
output. If no columns are specified, a single column displaying the age
|
||||||
|
of the custom resource is used. See the following link for details:
|
||||||
|
https://kubernetes.io/docs/reference/using-api/api-concepts/#receiving-resources-as-tables
|
||||||
|
items:
|
||||||
|
description: CustomResourceColumnDefinition specifies a column
|
||||||
|
for server side printing.
|
||||||
|
properties:
|
||||||
|
description:
|
||||||
|
description: description is a human readable description
|
||||||
|
of this column.
|
||||||
|
type: string
|
||||||
|
format:
|
||||||
|
description: |-
|
||||||
|
format is an optional OpenAPI type definition for this column. The 'name' format is applied
|
||||||
|
to the primary identifier column to assist in clients identifying column is the resource name.
|
||||||
|
See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
|
||||||
|
type: string
|
||||||
|
jsonPath:
|
||||||
|
description: |-
|
||||||
|
jsonPath is a simple JSON path (i.e. with array notation) which is evaluated against
|
||||||
|
each custom resource to produce the value for this column.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: name is a human readable name for the column.
|
||||||
|
type: string
|
||||||
|
priority:
|
||||||
|
description: |-
|
||||||
|
priority is an integer defining the relative importance of this column compared to others. Lower
|
||||||
|
numbers are considered higher priority. Columns that may be omitted in limited space scenarios
|
||||||
|
should be given a priority greater than 0.
|
||||||
|
format: int32
|
||||||
|
type: integer
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
type is an OpenAPI type definition for this column.
|
||||||
|
See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for details.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- jsonPath
|
||||||
|
- name
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
deprecated:
|
||||||
|
description: |-
|
||||||
|
The deprecated field specifies that this version is deprecated and should
|
||||||
|
not be used.
|
||||||
|
type: boolean
|
||||||
|
deprecationWarning:
|
||||||
|
description: |-
|
||||||
|
DeprecationWarning specifies the message that should be shown to the user
|
||||||
|
when using this version.
|
||||||
|
maxLength: 256
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of this version, e.g. “v1”, “v2beta1”, etc. Composite resources are
|
||||||
|
served under this version at `/apis/<group>/<version>/...` if `served` is
|
||||||
|
true.
|
||||||
|
type: string
|
||||||
|
referenceable:
|
||||||
|
description: |-
|
||||||
|
Referenceable specifies that this version may be referenced by a
|
||||||
|
Composition in order to configure which resources an XR may be composed
|
||||||
|
of. Exactly one version must be marked as referenceable; all Compositions
|
||||||
|
must target only the referenceable version. The referenceable version
|
||||||
|
must be served. It's mapped to the CRD's `spec.versions[*].storage` field.
|
||||||
|
type: boolean
|
||||||
|
schema:
|
||||||
|
description: |-
|
||||||
|
Schema describes the schema used for validation, pruning, and defaulting
|
||||||
|
of this version of the defined composite resource. Fields required by all
|
||||||
|
composite resources will be injected into this schema automatically, and
|
||||||
|
will override equivalently named fields in this schema. Omitting this
|
||||||
|
schema results in a schema that contains only the fields required by all
|
||||||
|
composite resources.
|
||||||
|
properties:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
OpenAPIV3Schema is the OpenAPI v3 schema to use for validation and
|
||||||
|
pruning.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
type: object
|
||||||
|
served:
|
||||||
|
description: Served specifies that this version should be served
|
||||||
|
via REST APIs.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
- referenceable
|
||||||
|
- served
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
required:
|
||||||
|
- group
|
||||||
|
- names
|
||||||
|
- versions
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: CompositeResourceDefinitionStatus shows the observed state
|
||||||
|
of the definition.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
controllers:
|
||||||
|
description: |-
|
||||||
|
Controllers represents the status of the controllers that power this
|
||||||
|
composite resource definition.
|
||||||
|
properties:
|
||||||
|
compositeResourceClaimType:
|
||||||
|
description: |-
|
||||||
|
The CompositeResourceClaimTypeRef is the type of composite resource claim
|
||||||
|
that Crossplane is currently reconciling for this definition. Its version
|
||||||
|
will eventually become consistent with the definition's referenceable
|
||||||
|
version. Note that clients may interact with any served type; this is
|
||||||
|
simply the type that Crossplane interacts with.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: APIVersion of the type.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: Kind of the type.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- apiVersion
|
||||||
|
- kind
|
||||||
|
type: object
|
||||||
|
compositeResourceType:
|
||||||
|
description: |-
|
||||||
|
The CompositeResourceTypeRef is the type of composite resource that
|
||||||
|
Crossplane is currently reconciling for this definition. Its version will
|
||||||
|
eventually become consistent with the definition's referenceable version.
|
||||||
|
Note that clients may interact with any served type; this is simply the
|
||||||
|
type that Crossplane interacts with.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: APIVersion of the type.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: Kind of the type.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- apiVersion
|
||||||
|
- kind
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,63 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
|
name: environmentconfigs.apiextensions.crossplane.io
|
||||||
|
spec:
|
||||||
|
group: apiextensions.crossplane.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- crossplane
|
||||||
|
kind: EnvironmentConfig
|
||||||
|
listKind: EnvironmentConfigList
|
||||||
|
plural: environmentconfigs
|
||||||
|
shortNames:
|
||||||
|
- envcfg
|
||||||
|
singular: environmentconfig
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
An EnvironmentConfig contains user-defined unstructured values for
|
||||||
|
use in a Composition.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about EnvironmentConfigs](https://docs.crossplane.io/latest/concepts/environment-configs).
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
data:
|
||||||
|
additionalProperties:
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
description: |-
|
||||||
|
The data of this EnvironmentConfig.
|
||||||
|
This may contain any kind of structure that can be serialized into JSON.
|
||||||
|
type: object
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources: {}
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
name: usages.apiextensions.crossplane.io
|
name: usages.apiextensions.crossplane.io
|
||||||
spec:
|
spec:
|
||||||
group: apiextensions.crossplane.io
|
group: apiextensions.crossplane.io
|
||||||
|
|
@ -28,18 +29,31 @@ spec:
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A Usage defines a deletion blocking relationship between two
|
description: |-
|
||||||
resources.
|
A Usage defines a deletion blocking relationship between two resources.
|
||||||
|
|
||||||
|
|
||||||
|
Usages prevent accidental deletion of a single resource or deletion of
|
||||||
|
resources with dependent resources.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Compositions](https://docs.crossplane.io/latest/concepts/usages).
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
description: |-
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
type: string
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
description: |-
|
||||||
object represents. Servers may infer this from the endpoint the client
|
Kind is a string value representing the REST resource this object represents.
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
type: string
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -53,7 +67,9 @@ spec:
|
||||||
description: API version of the referent.
|
description: API version of the referent.
|
||||||
type: string
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
description: |-
|
||||||
|
Kind of the referent.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
type: string
|
type: string
|
||||||
resourceRef:
|
resourceRef:
|
||||||
description: Reference to the resource.
|
description: Reference to the resource.
|
||||||
|
|
@ -65,12 +81,14 @@ spec:
|
||||||
- name
|
- name
|
||||||
type: object
|
type: object
|
||||||
resourceSelector:
|
resourceSelector:
|
||||||
description: Selector to the resource. This field will be ignored
|
description: |-
|
||||||
if ResourceRef is set.
|
Selector to the resource.
|
||||||
|
This field will be ignored if ResourceRef is set.
|
||||||
properties:
|
properties:
|
||||||
matchControllerRef:
|
matchControllerRef:
|
||||||
description: MatchControllerRef ensures an object with the
|
description: |-
|
||||||
same controller reference as the selecting object is selected.
|
MatchControllerRef ensures an object with the same controller reference
|
||||||
|
as the selecting object is selected.
|
||||||
type: boolean
|
type: boolean
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -91,7 +109,9 @@ spec:
|
||||||
description: API version of the referent.
|
description: API version of the referent.
|
||||||
type: string
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
description: |-
|
||||||
|
Kind of the referent.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
type: string
|
type: string
|
||||||
resourceRef:
|
resourceRef:
|
||||||
description: Reference to the resource.
|
description: Reference to the resource.
|
||||||
|
|
@ -103,12 +123,14 @@ spec:
|
||||||
- name
|
- name
|
||||||
type: object
|
type: object
|
||||||
resourceSelector:
|
resourceSelector:
|
||||||
description: Selector to the resource. This field will be ignored
|
description: |-
|
||||||
if ResourceRef is set.
|
Selector to the resource.
|
||||||
|
This field will be ignored if ResourceRef is set.
|
||||||
properties:
|
properties:
|
||||||
matchControllerRef:
|
matchControllerRef:
|
||||||
description: MatchControllerRef ensures an object with the
|
description: |-
|
||||||
same controller reference as the selecting object is selected.
|
MatchControllerRef ensures an object with the same controller reference
|
||||||
|
as the selecting object is selected.
|
||||||
type: boolean
|
type: boolean
|
||||||
matchLabels:
|
matchLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -145,14 +167,23 @@ spec:
|
||||||
description: A Condition that may apply to a resource.
|
description: A Condition that may apply to a resource.
|
||||||
properties:
|
properties:
|
||||||
lastTransitionTime:
|
lastTransitionTime:
|
||||||
description: LastTransitionTime is the last time this condition
|
description: |-
|
||||||
transitioned from one status to another.
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
format: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
message:
|
message:
|
||||||
description: A Message containing details about this condition's
|
description: |-
|
||||||
last transition from one status to another, if any.
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
@ -162,8 +193,9 @@ spec:
|
||||||
False, or Unknown?
|
False, or Unknown?
|
||||||
type: string
|
type: string
|
||||||
type:
|
type:
|
||||||
description: Type of this condition. At most one of each condition
|
description: |-
|
||||||
type may apply to a resource at any point in time.
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- lastTransitionTime
|
- lastTransitionTime
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
name: configurationrevisions.pkg.crossplane.io
|
name: configurationrevisions.pkg.crossplane.io
|
||||||
spec:
|
spec:
|
||||||
group: pkg.crossplane.io
|
group: pkg.crossplane.io
|
||||||
|
|
@ -41,17 +42,28 @@ spec:
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A ConfigurationRevision that has been added to Crossplane.
|
description: |-
|
||||||
|
A ConfigurationRevision represents a revision of a Configuration. Crossplane
|
||||||
|
creates new revisions when there are changes to a Configuration.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages ConfigurationRevision. Don't directly edit
|
||||||
|
ConfigurationRevisions.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
description: |-
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
type: string
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
description: |-
|
||||||
object represents. Servers may infer this from the endpoint the client
|
Kind is a string value representing the REST resource this object represents.
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
type: string
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -61,9 +73,11 @@ spec:
|
||||||
commonLabels:
|
commonLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
description: 'Map of string keys and values that can be used to organize
|
description: |-
|
||||||
and categorize (scope and select) objects. May match selectors of
|
Map of string keys and values that can be used to organize and categorize
|
||||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
desiredState:
|
desiredState:
|
||||||
description: DesiredState of the PackageRevision. Can be either Active
|
description: DesiredState of the PackageRevision. Can be either Active
|
||||||
|
|
@ -71,9 +85,10 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
ignoreCrossplaneConstraints:
|
ignoreCrossplaneConstraints:
|
||||||
default: false
|
default: false
|
||||||
description: IgnoreCrossplaneConstraints indicates to the package
|
description: |-
|
||||||
manager whether to honor Crossplane version constrains specified
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
by the package. Default is false.
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
type: boolean
|
type: boolean
|
||||||
image:
|
image:
|
||||||
description: Package image used by install Pod to extract package
|
description: Package image used by install Pod to extract package
|
||||||
|
|
@ -81,36 +96,44 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
packagePullPolicy:
|
packagePullPolicy:
|
||||||
default: IfNotPresent
|
default: IfNotPresent
|
||||||
description: PackagePullPolicy defines the pull policy for the package.
|
description: |-
|
||||||
It is also applied to any images pulled for the package, such as
|
PackagePullPolicy defines the pull policy for the package. It is also
|
||||||
a provider's controller image. Default is IfNotPresent.
|
applied to any images pulled for the package, such as a provider's
|
||||||
|
controller image.
|
||||||
|
Default is IfNotPresent.
|
||||||
type: string
|
type: string
|
||||||
packagePullSecrets:
|
packagePullSecrets:
|
||||||
description: PackagePullSecrets are named secrets in the same namespace
|
description: |-
|
||||||
that can be used to fetch packages from private registries. They
|
PackagePullSecrets are named secrets in the same namespace that can be
|
||||||
are also applied to any images pulled for the package, such as a
|
used to fetch packages from private registries. They are also applied to
|
||||||
provider's controller image.
|
any images pulled for the package, such as a provider's controller image.
|
||||||
items:
|
items:
|
||||||
description: LocalObjectReference contains enough information to
|
description: |-
|
||||||
let you locate the referenced object inside the same namespace.
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
description: |-
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type: array
|
type: array
|
||||||
revision:
|
revision:
|
||||||
description: Revision number. Indicates when the revision will be
|
description: |-
|
||||||
garbage collected based on the parent's RevisionHistoryLimit.
|
Revision number. Indicates when the revision will be garbage collected
|
||||||
|
based on the parent's RevisionHistoryLimit.
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
skipDependencyResolution:
|
skipDependencyResolution:
|
||||||
default: false
|
default: false
|
||||||
description: SkipDependencyResolution indicates to the package manager
|
description: |-
|
||||||
whether to skip resolving dependencies for a package. Setting this
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
value to true may have unintended consequences. Default is false.
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
type: boolean
|
type: boolean
|
||||||
required:
|
required:
|
||||||
- desiredState
|
- desiredState
|
||||||
|
|
@ -127,14 +150,23 @@ spec:
|
||||||
description: A Condition that may apply to a resource.
|
description: A Condition that may apply to a resource.
|
||||||
properties:
|
properties:
|
||||||
lastTransitionTime:
|
lastTransitionTime:
|
||||||
description: LastTransitionTime is the last time this condition
|
description: |-
|
||||||
transitioned from one status to another.
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
format: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
message:
|
message:
|
||||||
description: A Message containing details about this condition's
|
description: |-
|
||||||
last transition from one status to another, if any.
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
@ -144,8 +176,9 @@ spec:
|
||||||
False, or Unknown?
|
False, or Unknown?
|
||||||
type: string
|
type: string
|
||||||
type:
|
type:
|
||||||
description: Type of this condition. At most one of each condition
|
description: |-
|
||||||
type may apply to a resource at any point in time.
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- lastTransitionTime
|
- lastTransitionTime
|
||||||
|
|
@ -170,9 +203,10 @@ spec:
|
||||||
objectRefs:
|
objectRefs:
|
||||||
description: References to objects owned by PackageRevision.
|
description: References to objects owned by PackageRevision.
|
||||||
items:
|
items:
|
||||||
description: A TypedReference refers to an object by Name, Kind,
|
description: |-
|
||||||
and APIVersion. It is commonly used to reference cluster-scoped
|
A TypedReference refers to an object by Name, Kind, and APIVersion. It is
|
||||||
objects or objects where the namespace is already known.
|
commonly used to reference cluster-scoped objects or objects where the
|
||||||
|
namespace is already known.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: APIVersion of the referenced object.
|
description: APIVersion of the referenced object.
|
||||||
|
|
@ -193,34 +227,32 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
permissionRequests:
|
permissionRequests:
|
||||||
description: PermissionRequests made by this package. The package
|
description: |-
|
||||||
declares that its controller needs these permissions to run. The
|
PermissionRequests made by this package. The package declares that its
|
||||||
RBAC manager is responsible for granting them.
|
controller needs these permissions to run. The RBAC manager is
|
||||||
|
responsible for granting them.
|
||||||
items:
|
items:
|
||||||
description: PolicyRule holds information that describes a policy
|
description: |-
|
||||||
rule, but does not contain information about who the rule applies
|
PolicyRule holds information that describes a policy rule, but does not contain information
|
||||||
to or which namespace the rule applies to.
|
about who the rule applies to or which namespace the rule applies to.
|
||||||
properties:
|
properties:
|
||||||
apiGroups:
|
apiGroups:
|
||||||
description: APIGroups is the name of the APIGroup that contains
|
description: |-
|
||||||
the resources. If multiple API groups are specified, any
|
APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of
|
||||||
action requested against one of the enumerated resources in
|
the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
|
||||||
any API group will be allowed. "" represents the core API
|
|
||||||
group and "*" represents all API groups.
|
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
nonResourceURLs:
|
nonResourceURLs:
|
||||||
description: NonResourceURLs is a set of partial urls that a
|
description: |-
|
||||||
user should have access to. *s are allowed, but only as the
|
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
||||||
full, final step in the path Since non-resource URLs are not
|
Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
|
||||||
namespaced, this field is only applicable for ClusterRoles
|
Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.
|
||||||
referenced from a ClusterRoleBinding. Rules can either apply
|
|
||||||
to API resources (such as "pods" or "secrets") or non-resource
|
|
||||||
URL paths (such as "/api"), but not both.
|
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resourceNames:
|
resourceNames:
|
||||||
description: ResourceNames is an optional white list of names
|
description: ResourceNames is an optional white list of names
|
||||||
that the rule applies to. An empty set means that everything
|
that the rule applies to. An empty set means that everything
|
||||||
|
|
@ -228,18 +260,21 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resources:
|
resources:
|
||||||
description: Resources is a list of resources this rule applies
|
description: Resources is a list of resources this rule applies
|
||||||
to. '*' represents all resources.
|
to. '*' represents all resources.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
verbs:
|
verbs:
|
||||||
description: Verbs is a list of Verbs that apply to ALL the
|
description: Verbs is a list of Verbs that apply to ALL the
|
||||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- verbs
|
- verbs
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -0,0 +1,205 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
|
name: configurations.pkg.crossplane.io
|
||||||
|
spec:
|
||||||
|
group: pkg.crossplane.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- crossplane
|
||||||
|
- pkg
|
||||||
|
kind: Configuration
|
||||||
|
listKind: ConfigurationList
|
||||||
|
plural: configurations
|
||||||
|
singular: configuration
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
||||||
|
name: INSTALLED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||||
|
name: HEALTHY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.package
|
||||||
|
name: PACKAGE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A Configuration installs an OCI compatible Crossplane package, extending
|
||||||
|
Crossplane with support for new kinds of CompositeResourceDefinitions and
|
||||||
|
Compositions.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Configuration packages](https://docs.crossplane.io/latest/concepts/packages).
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: |-
|
||||||
|
ConfigurationSpec specifies details about a request to install a
|
||||||
|
configuration to Crossplane.
|
||||||
|
properties:
|
||||||
|
commonLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
type: object
|
||||||
|
ignoreCrossplaneConstraints:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
package:
|
||||||
|
description: Package is the name of the package that is being requested.
|
||||||
|
type: string
|
||||||
|
packagePullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
description: |-
|
||||||
|
PackagePullPolicy defines the pull policy for the package.
|
||||||
|
Default is IfNotPresent.
|
||||||
|
type: string
|
||||||
|
packagePullSecrets:
|
||||||
|
description: |-
|
||||||
|
PackagePullSecrets are named secrets in the same namespace that can be used
|
||||||
|
to fetch packages from private registries.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: array
|
||||||
|
revisionActivationPolicy:
|
||||||
|
default: Automatic
|
||||||
|
description: |-
|
||||||
|
RevisionActivationPolicy specifies how the package controller should
|
||||||
|
update from one revision to the next. Options are Automatic or Manual.
|
||||||
|
Default is Automatic.
|
||||||
|
type: string
|
||||||
|
revisionHistoryLimit:
|
||||||
|
default: 1
|
||||||
|
description: |-
|
||||||
|
RevisionHistoryLimit dictates how the package controller cleans up old
|
||||||
|
inactive package revisions.
|
||||||
|
Defaults to 1. Can be disabled by explicitly setting to 0.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
skipDependencyResolution:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- package
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: ConfigurationStatus represents the observed state of a Configuration.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
currentIdentifier:
|
||||||
|
description: |-
|
||||||
|
CurrentIdentifier is the most recent package source that was used to
|
||||||
|
produce a revision. The package manager uses this field to determine
|
||||||
|
whether to check for package updates for a given source when
|
||||||
|
packagePullPolicy is set to IfNotPresent. Manually removing this field
|
||||||
|
will cause the package manager to check that the current revision is
|
||||||
|
correct for the given package source.
|
||||||
|
type: string
|
||||||
|
currentRevision:
|
||||||
|
description: |-
|
||||||
|
CurrentRevision is the name of the current package revision. It will
|
||||||
|
reflect the most up to date revision, whether it has been activated or
|
||||||
|
not.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,651 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
|
name: functionrevisions.pkg.crossplane.io
|
||||||
|
spec:
|
||||||
|
group: pkg.crossplane.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- crossplane
|
||||||
|
- pkgrev
|
||||||
|
kind: FunctionRevision
|
||||||
|
listKind: FunctionRevisionList
|
||||||
|
plural: functionrevisions
|
||||||
|
singular: functionrevision
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||||
|
name: HEALTHY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.revision
|
||||||
|
name: REVISION
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.image
|
||||||
|
name: IMAGE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.desiredState
|
||||||
|
name: STATE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.foundDependencies
|
||||||
|
name: DEP-FOUND
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.installedDependencies
|
||||||
|
name: DEP-INSTALLED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A FunctionRevision represents a revision of a Function. Crossplane
|
||||||
|
creates new revisions when there are changes to the Function.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages FunctionRevisions. Don't directly edit
|
||||||
|
FunctionRevisions.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: FunctionRevisionSpec specifies configuration for a FunctionRevision.
|
||||||
|
properties:
|
||||||
|
commonLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
type: object
|
||||||
|
controllerConfigRef:
|
||||||
|
description: |-
|
||||||
|
ControllerConfigRef references a ControllerConfig resource that will be
|
||||||
|
used to configure the packaged controller Deployment.
|
||||||
|
Deprecated: Use RuntimeConfigReference instead.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the ControllerConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
desiredState:
|
||||||
|
description: DesiredState of the PackageRevision. Can be either Active
|
||||||
|
or Inactive.
|
||||||
|
type: string
|
||||||
|
ignoreCrossplaneConstraints:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
image:
|
||||||
|
description: Package image used by install Pod to extract package
|
||||||
|
contents.
|
||||||
|
type: string
|
||||||
|
packagePullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
description: |-
|
||||||
|
PackagePullPolicy defines the pull policy for the package. It is also
|
||||||
|
applied to any images pulled for the package, such as a provider's
|
||||||
|
controller image.
|
||||||
|
Default is IfNotPresent.
|
||||||
|
type: string
|
||||||
|
packagePullSecrets:
|
||||||
|
description: |-
|
||||||
|
PackagePullSecrets are named secrets in the same namespace that can be
|
||||||
|
used to fetch packages from private registries. They are also applied to
|
||||||
|
any images pulled for the package, such as a provider's controller image.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: array
|
||||||
|
revision:
|
||||||
|
description: |-
|
||||||
|
Revision number. Indicates when the revision will be garbage collected
|
||||||
|
based on the parent's RevisionHistoryLimit.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
runtimeConfigRef:
|
||||||
|
default:
|
||||||
|
name: default
|
||||||
|
description: |-
|
||||||
|
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||||
|
to configure the package runtime.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
default: pkg.crossplane.io/v1beta1
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
default: DeploymentRuntimeConfig
|
||||||
|
description: Kind of the referent.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the RuntimeConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
skipDependencyResolution:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
tlsClientSecretName:
|
||||||
|
description: |-
|
||||||
|
TLSClientSecretName is the name of the TLS Secret that stores client
|
||||||
|
certificates of the Provider.
|
||||||
|
type: string
|
||||||
|
tlsServerSecretName:
|
||||||
|
description: |-
|
||||||
|
TLSServerSecretName is the name of the TLS Secret that stores server
|
||||||
|
certificates of the Provider.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- desiredState
|
||||||
|
- image
|
||||||
|
- revision
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: FunctionRevisionStatus represents the observed state of a
|
||||||
|
FunctionRevision.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
endpoint:
|
||||||
|
description: |-
|
||||||
|
Endpoint is the gRPC endpoint where Crossplane will send
|
||||||
|
RunFunctionRequests.
|
||||||
|
type: string
|
||||||
|
foundDependencies:
|
||||||
|
description: Dependency information.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
installedDependencies:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
invalidDependencies:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
objectRefs:
|
||||||
|
description: References to objects owned by PackageRevision.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
A TypedReference refers to an object by Name, Kind, and APIVersion. It is
|
||||||
|
commonly used to reference cluster-scoped objects or objects where the
|
||||||
|
namespace is already known.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: APIVersion of the referenced object.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: Kind of the referenced object.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the referenced object.
|
||||||
|
type: string
|
||||||
|
uid:
|
||||||
|
description: UID of the referenced object.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- apiVersion
|
||||||
|
- kind
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
permissionRequests:
|
||||||
|
description: |-
|
||||||
|
PermissionRequests made by this package. The package declares that its
|
||||||
|
controller needs these permissions to run. The RBAC manager is
|
||||||
|
responsible for granting them.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
PolicyRule holds information that describes a policy rule, but does not contain information
|
||||||
|
about who the rule applies to or which namespace the rule applies to.
|
||||||
|
properties:
|
||||||
|
apiGroups:
|
||||||
|
description: |-
|
||||||
|
APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of
|
||||||
|
the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
nonResourceURLs:
|
||||||
|
description: |-
|
||||||
|
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
||||||
|
Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
|
||||||
|
Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
resourceNames:
|
||||||
|
description: ResourceNames is an optional white list of names
|
||||||
|
that the rule applies to. An empty set means that everything
|
||||||
|
is allowed.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
resources:
|
||||||
|
description: Resources is a list of resources this rule applies
|
||||||
|
to. '*' represents all resources.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
verbs:
|
||||||
|
description: Verbs is a list of Verbs that apply to ALL the
|
||||||
|
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
required:
|
||||||
|
- verbs
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||||
|
name: HEALTHY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.revision
|
||||||
|
name: REVISION
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.image
|
||||||
|
name: IMAGE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.desiredState
|
||||||
|
name: STATE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.foundDependencies
|
||||||
|
name: DEP-FOUND
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.installedDependencies
|
||||||
|
name: DEP-INSTALLED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A FunctionRevision represents a revision of a Function. Crossplane
|
||||||
|
creates new revisions when there are changes to the Function.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages FunctionRevisions. Don't directly edit
|
||||||
|
FunctionRevisions.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: FunctionRevisionSpec specifies configuration for a FunctionRevision.
|
||||||
|
properties:
|
||||||
|
commonLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
type: object
|
||||||
|
controllerConfigRef:
|
||||||
|
description: |-
|
||||||
|
ControllerConfigRef references a ControllerConfig resource that will be
|
||||||
|
used to configure the packaged controller Deployment.
|
||||||
|
Deprecated: Use RuntimeConfigReference instead.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the ControllerConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
desiredState:
|
||||||
|
description: DesiredState of the PackageRevision. Can be either Active
|
||||||
|
or Inactive.
|
||||||
|
type: string
|
||||||
|
ignoreCrossplaneConstraints:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
image:
|
||||||
|
description: Package image used by install Pod to extract package
|
||||||
|
contents.
|
||||||
|
type: string
|
||||||
|
packagePullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
description: |-
|
||||||
|
PackagePullPolicy defines the pull policy for the package. It is also
|
||||||
|
applied to any images pulled for the package, such as a provider's
|
||||||
|
controller image.
|
||||||
|
Default is IfNotPresent.
|
||||||
|
type: string
|
||||||
|
packagePullSecrets:
|
||||||
|
description: |-
|
||||||
|
PackagePullSecrets are named secrets in the same namespace that can be
|
||||||
|
used to fetch packages from private registries. They are also applied to
|
||||||
|
any images pulled for the package, such as a provider's controller image.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: array
|
||||||
|
revision:
|
||||||
|
description: |-
|
||||||
|
Revision number. Indicates when the revision will be garbage collected
|
||||||
|
based on the parent's RevisionHistoryLimit.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
runtimeConfigRef:
|
||||||
|
default:
|
||||||
|
name: default
|
||||||
|
description: |-
|
||||||
|
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||||
|
to configure the package runtime.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
default: pkg.crossplane.io/v1beta1
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
default: DeploymentRuntimeConfig
|
||||||
|
description: Kind of the referent.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the RuntimeConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
skipDependencyResolution:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
tlsClientSecretName:
|
||||||
|
description: |-
|
||||||
|
TLSClientSecretName is the name of the TLS Secret that stores client
|
||||||
|
certificates of the Provider.
|
||||||
|
type: string
|
||||||
|
tlsServerSecretName:
|
||||||
|
description: |-
|
||||||
|
TLSServerSecretName is the name of the TLS Secret that stores server
|
||||||
|
certificates of the Provider.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- desiredState
|
||||||
|
- image
|
||||||
|
- revision
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: FunctionRevisionStatus represents the observed state of a
|
||||||
|
FunctionRevision.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
endpoint:
|
||||||
|
description: |-
|
||||||
|
Endpoint is the gRPC endpoint where Crossplane will send
|
||||||
|
RunFunctionRequests.
|
||||||
|
type: string
|
||||||
|
foundDependencies:
|
||||||
|
description: Dependency information.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
installedDependencies:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
invalidDependencies:
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
objectRefs:
|
||||||
|
description: References to objects owned by PackageRevision.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
A TypedReference refers to an object by Name, Kind, and APIVersion. It is
|
||||||
|
commonly used to reference cluster-scoped objects or objects where the
|
||||||
|
namespace is already known.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: APIVersion of the referenced object.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: Kind of the referenced object.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the referenced object.
|
||||||
|
type: string
|
||||||
|
uid:
|
||||||
|
description: UID of the referenced object.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- apiVersion
|
||||||
|
- kind
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
permissionRequests:
|
||||||
|
description: |-
|
||||||
|
PermissionRequests made by this package. The package declares that its
|
||||||
|
controller needs these permissions to run. The RBAC manager is
|
||||||
|
responsible for granting them.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
PolicyRule holds information that describes a policy rule, but does not contain information
|
||||||
|
about who the rule applies to or which namespace the rule applies to.
|
||||||
|
properties:
|
||||||
|
apiGroups:
|
||||||
|
description: |-
|
||||||
|
APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of
|
||||||
|
the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
nonResourceURLs:
|
||||||
|
description: |-
|
||||||
|
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
||||||
|
Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
|
||||||
|
Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
resourceNames:
|
||||||
|
description: ResourceNames is an optional white list of names
|
||||||
|
that the rule applies to. An empty set means that everything
|
||||||
|
is allowed.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
resources:
|
||||||
|
description: Resources is a list of resources this rule applies
|
||||||
|
to. '*' represents all resources.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
verbs:
|
||||||
|
description: Verbs is a list of Verbs that apply to ALL the
|
||||||
|
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
required:
|
||||||
|
- verbs
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: false
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
|
@ -0,0 +1,451 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
|
name: functions.pkg.crossplane.io
|
||||||
|
spec:
|
||||||
|
group: pkg.crossplane.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- crossplane
|
||||||
|
- pkg
|
||||||
|
kind: Function
|
||||||
|
listKind: FunctionList
|
||||||
|
plural: functions
|
||||||
|
singular: function
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
||||||
|
name: INSTALLED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||||
|
name: HEALTHY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.package
|
||||||
|
name: PACKAGE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A Function installs an OCI compatible Crossplane package, extending
|
||||||
|
Crossplane with support for a new kind of composition function.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Functions](https://docs.crossplane.io/latest/concepts/composition-functions).
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: FunctionSpec specifies the configuration of a Function.
|
||||||
|
properties:
|
||||||
|
commonLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
type: object
|
||||||
|
controllerConfigRef:
|
||||||
|
description: |-
|
||||||
|
ControllerConfigRef references a ControllerConfig resource that will be
|
||||||
|
used to configure the packaged controller Deployment.
|
||||||
|
Deprecated: Use RuntimeConfigReference instead.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the ControllerConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
ignoreCrossplaneConstraints:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
package:
|
||||||
|
description: Package is the name of the package that is being requested.
|
||||||
|
type: string
|
||||||
|
packagePullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
description: |-
|
||||||
|
PackagePullPolicy defines the pull policy for the package.
|
||||||
|
Default is IfNotPresent.
|
||||||
|
type: string
|
||||||
|
packagePullSecrets:
|
||||||
|
description: |-
|
||||||
|
PackagePullSecrets are named secrets in the same namespace that can be used
|
||||||
|
to fetch packages from private registries.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: array
|
||||||
|
revisionActivationPolicy:
|
||||||
|
default: Automatic
|
||||||
|
description: |-
|
||||||
|
RevisionActivationPolicy specifies how the package controller should
|
||||||
|
update from one revision to the next. Options are Automatic or Manual.
|
||||||
|
Default is Automatic.
|
||||||
|
type: string
|
||||||
|
revisionHistoryLimit:
|
||||||
|
default: 1
|
||||||
|
description: |-
|
||||||
|
RevisionHistoryLimit dictates how the package controller cleans up old
|
||||||
|
inactive package revisions.
|
||||||
|
Defaults to 1. Can be disabled by explicitly setting to 0.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
runtimeConfigRef:
|
||||||
|
default:
|
||||||
|
name: default
|
||||||
|
description: |-
|
||||||
|
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||||
|
to configure the package runtime.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
default: pkg.crossplane.io/v1beta1
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
default: DeploymentRuntimeConfig
|
||||||
|
description: Kind of the referent.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the RuntimeConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
skipDependencyResolution:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- package
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: FunctionStatus represents the observed state of a Function.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
currentIdentifier:
|
||||||
|
description: |-
|
||||||
|
CurrentIdentifier is the most recent package source that was used to
|
||||||
|
produce a revision. The package manager uses this field to determine
|
||||||
|
whether to check for package updates for a given source when
|
||||||
|
packagePullPolicy is set to IfNotPresent. Manually removing this field
|
||||||
|
will cause the package manager to check that the current revision is
|
||||||
|
correct for the given package source.
|
||||||
|
type: string
|
||||||
|
currentRevision:
|
||||||
|
description: |-
|
||||||
|
CurrentRevision is the name of the current package revision. It will
|
||||||
|
reflect the most up to date revision, whether it has been activated or
|
||||||
|
not.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
||||||
|
name: INSTALLED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||||
|
name: HEALTHY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.package
|
||||||
|
name: PACKAGE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A Function installs an OCI compatible Crossplane package, extending
|
||||||
|
Crossplane with support for a new kind of composition function.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Functions](https://docs.crossplane.io/latest/concepts/composition-functions).
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: FunctionSpec specifies the configuration of a Function.
|
||||||
|
properties:
|
||||||
|
commonLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
type: object
|
||||||
|
controllerConfigRef:
|
||||||
|
description: |-
|
||||||
|
ControllerConfigRef references a ControllerConfig resource that will be
|
||||||
|
used to configure the packaged controller Deployment.
|
||||||
|
Deprecated: Use RuntimeConfigReference instead.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the ControllerConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
ignoreCrossplaneConstraints:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
package:
|
||||||
|
description: Package is the name of the package that is being requested.
|
||||||
|
type: string
|
||||||
|
packagePullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
description: |-
|
||||||
|
PackagePullPolicy defines the pull policy for the package.
|
||||||
|
Default is IfNotPresent.
|
||||||
|
type: string
|
||||||
|
packagePullSecrets:
|
||||||
|
description: |-
|
||||||
|
PackagePullSecrets are named secrets in the same namespace that can be used
|
||||||
|
to fetch packages from private registries.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: array
|
||||||
|
revisionActivationPolicy:
|
||||||
|
default: Automatic
|
||||||
|
description: |-
|
||||||
|
RevisionActivationPolicy specifies how the package controller should
|
||||||
|
update from one revision to the next. Options are Automatic or Manual.
|
||||||
|
Default is Automatic.
|
||||||
|
type: string
|
||||||
|
revisionHistoryLimit:
|
||||||
|
default: 1
|
||||||
|
description: |-
|
||||||
|
RevisionHistoryLimit dictates how the package controller cleans up old
|
||||||
|
inactive package revisions.
|
||||||
|
Defaults to 1. Can be disabled by explicitly setting to 0.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
runtimeConfigRef:
|
||||||
|
default:
|
||||||
|
name: default
|
||||||
|
description: |-
|
||||||
|
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||||
|
to configure the package runtime.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
default: pkg.crossplane.io/v1beta1
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
default: DeploymentRuntimeConfig
|
||||||
|
description: Kind of the referent.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the RuntimeConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
skipDependencyResolution:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- package
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: FunctionStatus represents the observed state of a Function.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
currentIdentifier:
|
||||||
|
description: |-
|
||||||
|
CurrentIdentifier is the most recent package source that was used to
|
||||||
|
produce a revision. The package manager uses this field to determine
|
||||||
|
whether to check for package updates for a given source when
|
||||||
|
packagePullPolicy is set to IfNotPresent. Manually removing this field
|
||||||
|
will cause the package manager to check that the current revision is
|
||||||
|
correct for the given package source.
|
||||||
|
type: string
|
||||||
|
currentRevision:
|
||||||
|
description: |-
|
||||||
|
CurrentRevision is the name of the current package revision. It will
|
||||||
|
reflect the most up to date revision, whether it has been activated or
|
||||||
|
not.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: false
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
name: locks.pkg.crossplane.io
|
name: locks.pkg.crossplane.io
|
||||||
spec:
|
spec:
|
||||||
group: pkg.crossplane.io
|
group: pkg.crossplane.io
|
||||||
|
|
@ -23,14 +24,19 @@ spec:
|
||||||
description: Lock is the CRD type that tracks package dependencies.
|
description: Lock is the CRD type that tracks package dependencies.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
description: |-
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
type: string
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
description: |-
|
||||||
object represents. Servers may infer this from the endpoint the client
|
Kind is a string value representing the REST resource this object represents.
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
type: string
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -39,16 +45,17 @@ spec:
|
||||||
description: LockPackage is a package that is in the lock.
|
description: LockPackage is a package that is in the lock.
|
||||||
properties:
|
properties:
|
||||||
dependencies:
|
dependencies:
|
||||||
description: Dependencies are the list of dependencies of this package.
|
description: |-
|
||||||
The order of the dependencies will dictate the order in which
|
Dependencies are the list of dependencies of this package. The order of
|
||||||
they are resolved.
|
the dependencies will dictate the order in which they are resolved.
|
||||||
items:
|
items:
|
||||||
description: A Dependency is a dependency of a package in the
|
description: A Dependency is a dependency of a package in the
|
||||||
lock.
|
lock.
|
||||||
properties:
|
properties:
|
||||||
constraints:
|
constraints:
|
||||||
description: Constraints is a valid semver range, which will
|
description: |-
|
||||||
be used to select a valid dependency version.
|
Constraints is a valid semver range, which will be used to select a valid
|
||||||
|
dependency version.
|
||||||
type: string
|
type: string
|
||||||
package:
|
package:
|
||||||
description: Package is the OCI image name without a tag or
|
description: Package is the OCI image name without a tag or
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
name: providerrevisions.pkg.crossplane.io
|
name: providerrevisions.pkg.crossplane.io
|
||||||
spec:
|
spec:
|
||||||
group: pkg.crossplane.io
|
group: pkg.crossplane.io
|
||||||
|
|
@ -41,17 +42,28 @@ spec:
|
||||||
name: v1
|
name: v1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A ProviderRevision that has been added to Crossplane.
|
description: |-
|
||||||
|
A ProviderRevision represents a revision of a Provider. Crossplane
|
||||||
|
creates new revisions when there are changes to a Provider.
|
||||||
|
|
||||||
|
|
||||||
|
Crossplane creates and manages ProviderRevisions. Don't directly edit
|
||||||
|
ProviderRevisions.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
description: |-
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
type: string
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
description: |-
|
||||||
object represents. Servers may infer this from the endpoint the client
|
Kind is a string value representing the REST resource this object represents.
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
type: string
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -61,14 +73,17 @@ spec:
|
||||||
commonLabels:
|
commonLabels:
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
description: 'Map of string keys and values that can be used to organize
|
description: |-
|
||||||
and categorize (scope and select) objects. May match selectors of
|
Map of string keys and values that can be used to organize and categorize
|
||||||
replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
type: object
|
type: object
|
||||||
controllerConfigRef:
|
controllerConfigRef:
|
||||||
description: 'ControllerConfigRef references a ControllerConfig resource
|
description: |-
|
||||||
that will be used to configure the packaged controller Deployment.
|
ControllerConfigRef references a ControllerConfig resource that will be
|
||||||
Deprecated: Use RuntimeConfigReference instead.'
|
used to configure the packaged controller Deployment.
|
||||||
|
Deprecated: Use RuntimeConfigReference instead.
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
description: Name of the ControllerConfig.
|
description: Name of the ControllerConfig.
|
||||||
|
|
@ -82,9 +97,10 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
ignoreCrossplaneConstraints:
|
ignoreCrossplaneConstraints:
|
||||||
default: false
|
default: false
|
||||||
description: IgnoreCrossplaneConstraints indicates to the package
|
description: |-
|
||||||
manager whether to honor Crossplane version constrains specified
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
by the package. Default is false.
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
type: boolean
|
type: boolean
|
||||||
image:
|
image:
|
||||||
description: Package image used by install Pod to extract package
|
description: Package image used by install Pod to extract package
|
||||||
|
|
@ -92,36 +108,43 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
packagePullPolicy:
|
packagePullPolicy:
|
||||||
default: IfNotPresent
|
default: IfNotPresent
|
||||||
description: PackagePullPolicy defines the pull policy for the package.
|
description: |-
|
||||||
It is also applied to any images pulled for the package, such as
|
PackagePullPolicy defines the pull policy for the package. It is also
|
||||||
a provider's controller image. Default is IfNotPresent.
|
applied to any images pulled for the package, such as a provider's
|
||||||
|
controller image.
|
||||||
|
Default is IfNotPresent.
|
||||||
type: string
|
type: string
|
||||||
packagePullSecrets:
|
packagePullSecrets:
|
||||||
description: PackagePullSecrets are named secrets in the same namespace
|
description: |-
|
||||||
that can be used to fetch packages from private registries. They
|
PackagePullSecrets are named secrets in the same namespace that can be
|
||||||
are also applied to any images pulled for the package, such as a
|
used to fetch packages from private registries. They are also applied to
|
||||||
provider's controller image.
|
any images pulled for the package, such as a provider's controller image.
|
||||||
items:
|
items:
|
||||||
description: LocalObjectReference contains enough information to
|
description: |-
|
||||||
let you locate the referenced object inside the same namespace.
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
description: |-
|
||||||
TODO: Add other useful fields. apiVersion, kind, uid?'
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
x-kubernetes-map-type: atomic
|
x-kubernetes-map-type: atomic
|
||||||
type: array
|
type: array
|
||||||
revision:
|
revision:
|
||||||
description: Revision number. Indicates when the revision will be
|
description: |-
|
||||||
garbage collected based on the parent's RevisionHistoryLimit.
|
Revision number. Indicates when the revision will be garbage collected
|
||||||
|
based on the parent's RevisionHistoryLimit.
|
||||||
format: int64
|
format: int64
|
||||||
type: integer
|
type: integer
|
||||||
runtimeConfigRef:
|
runtimeConfigRef:
|
||||||
default:
|
default:
|
||||||
name: default
|
name: default
|
||||||
description: RuntimeConfigRef references a RuntimeConfig resource
|
description: |-
|
||||||
that will be used to configure the package runtime.
|
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||||
|
to configure the package runtime.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
default: pkg.crossplane.io/v1beta1
|
default: pkg.crossplane.io/v1beta1
|
||||||
|
|
@ -139,17 +162,21 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
skipDependencyResolution:
|
skipDependencyResolution:
|
||||||
default: false
|
default: false
|
||||||
description: SkipDependencyResolution indicates to the package manager
|
description: |-
|
||||||
whether to skip resolving dependencies for a package. Setting this
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
value to true may have unintended consequences. Default is false.
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
type: boolean
|
type: boolean
|
||||||
tlsClientSecretName:
|
tlsClientSecretName:
|
||||||
description: TLSClientSecretName is the name of the TLS Secret that
|
description: |-
|
||||||
stores client certificates of the Provider.
|
TLSClientSecretName is the name of the TLS Secret that stores client
|
||||||
|
certificates of the Provider.
|
||||||
type: string
|
type: string
|
||||||
tlsServerSecretName:
|
tlsServerSecretName:
|
||||||
description: TLSServerSecretName is the name of the TLS Secret that
|
description: |-
|
||||||
stores server certificates of the Provider.
|
TLSServerSecretName is the name of the TLS Secret that stores server
|
||||||
|
certificates of the Provider.
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- desiredState
|
- desiredState
|
||||||
|
|
@ -166,14 +193,23 @@ spec:
|
||||||
description: A Condition that may apply to a resource.
|
description: A Condition that may apply to a resource.
|
||||||
properties:
|
properties:
|
||||||
lastTransitionTime:
|
lastTransitionTime:
|
||||||
description: LastTransitionTime is the last time this condition
|
description: |-
|
||||||
transitioned from one status to another.
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
format: date-time
|
format: date-time
|
||||||
type: string
|
type: string
|
||||||
message:
|
message:
|
||||||
description: A Message containing details about this condition's
|
description: |-
|
||||||
last transition from one status to another, if any.
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
type: string
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
reason:
|
reason:
|
||||||
description: A Reason for this condition's last transition from
|
description: A Reason for this condition's last transition from
|
||||||
one status to another.
|
one status to another.
|
||||||
|
|
@ -183,8 +219,9 @@ spec:
|
||||||
False, or Unknown?
|
False, or Unknown?
|
||||||
type: string
|
type: string
|
||||||
type:
|
type:
|
||||||
description: Type of this condition. At most one of each condition
|
description: |-
|
||||||
type may apply to a resource at any point in time.
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- lastTransitionTime
|
- lastTransitionTime
|
||||||
|
|
@ -209,9 +246,10 @@ spec:
|
||||||
objectRefs:
|
objectRefs:
|
||||||
description: References to objects owned by PackageRevision.
|
description: References to objects owned by PackageRevision.
|
||||||
items:
|
items:
|
||||||
description: A TypedReference refers to an object by Name, Kind,
|
description: |-
|
||||||
and APIVersion. It is commonly used to reference cluster-scoped
|
A TypedReference refers to an object by Name, Kind, and APIVersion. It is
|
||||||
objects or objects where the namespace is already known.
|
commonly used to reference cluster-scoped objects or objects where the
|
||||||
|
namespace is already known.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: APIVersion of the referenced object.
|
description: APIVersion of the referenced object.
|
||||||
|
|
@ -232,34 +270,32 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
type: array
|
type: array
|
||||||
permissionRequests:
|
permissionRequests:
|
||||||
description: PermissionRequests made by this package. The package
|
description: |-
|
||||||
declares that its controller needs these permissions to run. The
|
PermissionRequests made by this package. The package declares that its
|
||||||
RBAC manager is responsible for granting them.
|
controller needs these permissions to run. The RBAC manager is
|
||||||
|
responsible for granting them.
|
||||||
items:
|
items:
|
||||||
description: PolicyRule holds information that describes a policy
|
description: |-
|
||||||
rule, but does not contain information about who the rule applies
|
PolicyRule holds information that describes a policy rule, but does not contain information
|
||||||
to or which namespace the rule applies to.
|
about who the rule applies to or which namespace the rule applies to.
|
||||||
properties:
|
properties:
|
||||||
apiGroups:
|
apiGroups:
|
||||||
description: APIGroups is the name of the APIGroup that contains
|
description: |-
|
||||||
the resources. If multiple API groups are specified, any
|
APIGroups is the name of the APIGroup that contains the resources. If multiple API groups are specified, any action requested against one of
|
||||||
action requested against one of the enumerated resources in
|
the enumerated resources in any API group will be allowed. "" represents the core API group and "*" represents all API groups.
|
||||||
any API group will be allowed. "" represents the core API
|
|
||||||
group and "*" represents all API groups.
|
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
nonResourceURLs:
|
nonResourceURLs:
|
||||||
description: NonResourceURLs is a set of partial urls that a
|
description: |-
|
||||||
user should have access to. *s are allowed, but only as the
|
NonResourceURLs is a set of partial urls that a user should have access to. *s are allowed, but only as the full, final step in the path
|
||||||
full, final step in the path Since non-resource URLs are not
|
Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
|
||||||
namespaced, this field is only applicable for ClusterRoles
|
Rules can either apply to API resources (such as "pods" or "secrets") or non-resource URL paths (such as "/api"), but not both.
|
||||||
referenced from a ClusterRoleBinding. Rules can either apply
|
|
||||||
to API resources (such as "pods" or "secrets") or non-resource
|
|
||||||
URL paths (such as "/api"), but not both.
|
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resourceNames:
|
resourceNames:
|
||||||
description: ResourceNames is an optional white list of names
|
description: ResourceNames is an optional white list of names
|
||||||
that the rule applies to. An empty set means that everything
|
that the rule applies to. An empty set means that everything
|
||||||
|
|
@ -267,18 +303,21 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
resources:
|
resources:
|
||||||
description: Resources is a list of resources this rule applies
|
description: Resources is a list of resources this rule applies
|
||||||
to. '*' represents all resources.
|
to. '*' represents all resources.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
verbs:
|
verbs:
|
||||||
description: Verbs is a list of Verbs that apply to ALL the
|
description: Verbs is a list of Verbs that apply to ALL the
|
||||||
ResourceKinds contained in this rule. '*' represents all verbs.
|
ResourceKinds contained in this rule. '*' represents all verbs.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
required:
|
required:
|
||||||
- verbs
|
- verbs
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -0,0 +1,237 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
|
name: providers.pkg.crossplane.io
|
||||||
|
spec:
|
||||||
|
group: pkg.crossplane.io
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- crossplane
|
||||||
|
- pkg
|
||||||
|
kind: Provider
|
||||||
|
listKind: ProviderList
|
||||||
|
plural: providers
|
||||||
|
singular: provider
|
||||||
|
scope: Cluster
|
||||||
|
versions:
|
||||||
|
- additionalPrinterColumns:
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Installed')].status
|
||||||
|
name: INSTALLED
|
||||||
|
type: string
|
||||||
|
- jsonPath: .status.conditions[?(@.type=='Healthy')].status
|
||||||
|
name: HEALTHY
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.package
|
||||||
|
name: PACKAGE
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: AGE
|
||||||
|
type: date
|
||||||
|
name: v1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
description: |-
|
||||||
|
A Provider installs an OCI compatible Crossplane package, extending
|
||||||
|
Crossplane with support for new kinds of managed resources.
|
||||||
|
|
||||||
|
|
||||||
|
Read the Crossplane documentation for
|
||||||
|
[more information about Providers](https://docs.crossplane.io/latest/concepts/providers).
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: |-
|
||||||
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: |-
|
||||||
|
Kind is a string value representing the REST resource this object represents.
|
||||||
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: |-
|
||||||
|
ProviderSpec specifies details about a request to install a provider to
|
||||||
|
Crossplane.
|
||||||
|
properties:
|
||||||
|
commonLabels:
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
Map of string keys and values that can be used to organize and categorize
|
||||||
|
(scope and select) objects. May match selectors of replication controllers
|
||||||
|
and services.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
type: object
|
||||||
|
controllerConfigRef:
|
||||||
|
description: |-
|
||||||
|
ControllerConfigRef references a ControllerConfig resource that will be
|
||||||
|
used to configure the packaged controller Deployment.
|
||||||
|
Deprecated: Use RuntimeConfigReference instead.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: Name of the ControllerConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
ignoreCrossplaneConstraints:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
IgnoreCrossplaneConstraints indicates to the package manager whether to
|
||||||
|
honor Crossplane version constrains specified by the package.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
package:
|
||||||
|
description: Package is the name of the package that is being requested.
|
||||||
|
type: string
|
||||||
|
packagePullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
description: |-
|
||||||
|
PackagePullPolicy defines the pull policy for the package.
|
||||||
|
Default is IfNotPresent.
|
||||||
|
type: string
|
||||||
|
packagePullSecrets:
|
||||||
|
description: |-
|
||||||
|
PackagePullSecrets are named secrets in the same namespace that can be used
|
||||||
|
to fetch packages from private registries.
|
||||||
|
items:
|
||||||
|
description: |-
|
||||||
|
LocalObjectReference contains enough information to let you locate the
|
||||||
|
referenced object inside the same namespace.
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
description: |-
|
||||||
|
Name of the referent.
|
||||||
|
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
||||||
|
TODO: Add other useful fields. apiVersion, kind, uid?
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
x-kubernetes-map-type: atomic
|
||||||
|
type: array
|
||||||
|
revisionActivationPolicy:
|
||||||
|
default: Automatic
|
||||||
|
description: |-
|
||||||
|
RevisionActivationPolicy specifies how the package controller should
|
||||||
|
update from one revision to the next. Options are Automatic or Manual.
|
||||||
|
Default is Automatic.
|
||||||
|
type: string
|
||||||
|
revisionHistoryLimit:
|
||||||
|
default: 1
|
||||||
|
description: |-
|
||||||
|
RevisionHistoryLimit dictates how the package controller cleans up old
|
||||||
|
inactive package revisions.
|
||||||
|
Defaults to 1. Can be disabled by explicitly setting to 0.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
runtimeConfigRef:
|
||||||
|
default:
|
||||||
|
name: default
|
||||||
|
description: |-
|
||||||
|
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||||
|
to configure the package runtime.
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
default: pkg.crossplane.io/v1beta1
|
||||||
|
description: API version of the referent.
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
default: DeploymentRuntimeConfig
|
||||||
|
description: Kind of the referent.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the RuntimeConfig.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- name
|
||||||
|
type: object
|
||||||
|
skipDependencyResolution:
|
||||||
|
default: false
|
||||||
|
description: |-
|
||||||
|
SkipDependencyResolution indicates to the package manager whether to skip
|
||||||
|
resolving dependencies for a package. Setting this value to true may have
|
||||||
|
unintended consequences.
|
||||||
|
Default is false.
|
||||||
|
type: boolean
|
||||||
|
required:
|
||||||
|
- package
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: ProviderStatus represents the observed state of a Provider.
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
description: Conditions of the resource.
|
||||||
|
items:
|
||||||
|
description: A Condition that may apply to a resource.
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
description: |-
|
||||||
|
LastTransitionTime is the last time this condition transitioned from one
|
||||||
|
status to another.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
message:
|
||||||
|
description: |-
|
||||||
|
A Message containing details about this condition's last transition from
|
||||||
|
one status to another, if any.
|
||||||
|
type: string
|
||||||
|
observedGeneration:
|
||||||
|
description: |-
|
||||||
|
ObservedGeneration represents the .metadata.generation that the condition was set based upon.
|
||||||
|
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
|
||||||
|
with respect to the current state of the instance.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
reason:
|
||||||
|
description: A Reason for this condition's last transition from
|
||||||
|
one status to another.
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status of this condition; is it currently True,
|
||||||
|
False, or Unknown?
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: |-
|
||||||
|
Type of this condition. At most one of each condition type may apply to
|
||||||
|
a resource at any point in time.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- lastTransitionTime
|
||||||
|
- reason
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
currentIdentifier:
|
||||||
|
description: |-
|
||||||
|
CurrentIdentifier is the most recent package source that was used to
|
||||||
|
produce a revision. The package manager uses this field to determine
|
||||||
|
whether to check for package updates for a given source when
|
||||||
|
packagePullPolicy is set to IfNotPresent. Manually removing this field
|
||||||
|
will cause the package manager to check that the current revision is
|
||||||
|
correct for the given package source.
|
||||||
|
type: string
|
||||||
|
currentRevision:
|
||||||
|
description: |-
|
||||||
|
CurrentRevision is the name of the current package revision. It will
|
||||||
|
reflect the most up to date revision, whether it has been activated or
|
||||||
|
not.
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
|
---
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
kind: CustomResourceDefinition
|
kind: CustomResourceDefinition
|
||||||
metadata:
|
metadata:
|
||||||
annotations:
|
annotations:
|
||||||
controller-gen.kubebuilder.io/version: v0.13.0
|
controller-gen.kubebuilder.io/version: v0.14.0
|
||||||
name: storeconfigs.secrets.crossplane.io
|
name: storeconfigs.secrets.crossplane.io
|
||||||
spec:
|
spec:
|
||||||
group: secrets.crossplane.io
|
group: secrets.crossplane.io
|
||||||
|
|
@ -29,18 +30,24 @@ spec:
|
||||||
name: v1alpha1
|
name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: A StoreConfig configures how Crossplane controllers should store
|
description: |-
|
||||||
connection details.
|
A StoreConfig configures how Crossplane controllers should store connection
|
||||||
|
details in an external secret store.
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: 'APIVersion defines the versioned schema of this representation
|
description: |-
|
||||||
of an object. Servers should convert recognized schemas to the latest
|
APIVersion defines the versioned schema of this representation of an object.
|
||||||
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
Servers should convert recognized schemas to the latest internal value, and
|
||||||
|
may reject unrecognized values.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||||
type: string
|
type: string
|
||||||
kind:
|
kind:
|
||||||
description: 'Kind is a string value representing the REST resource this
|
description: |-
|
||||||
object represents. Servers may infer this from the endpoint the client
|
Kind is a string value representing the REST resource this object represents.
|
||||||
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
Servers may infer this from the endpoint the client submits requests to.
|
||||||
|
Cannot be updated.
|
||||||
|
In CamelCase.
|
||||||
|
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
type: string
|
type: string
|
||||||
metadata:
|
metadata:
|
||||||
type: object
|
type: object
|
||||||
|
|
@ -48,24 +55,26 @@ spec:
|
||||||
description: A StoreConfigSpec defines the desired state of a StoreConfig.
|
description: A StoreConfigSpec defines the desired state of a StoreConfig.
|
||||||
properties:
|
properties:
|
||||||
defaultScope:
|
defaultScope:
|
||||||
description: DefaultScope used for scoping secrets for "cluster-scoped"
|
description: |-
|
||||||
resources. If store type is "Kubernetes", this would mean the default
|
DefaultScope used for scoping secrets for "cluster-scoped" resources.
|
||||||
namespace to store connection secrets for cluster scoped resources.
|
If store type is "Kubernetes", this would mean the default namespace to
|
||||||
|
store connection secrets for cluster scoped resources.
|
||||||
In case of "Vault", this would be used as the default parent path.
|
In case of "Vault", this would be used as the default parent path.
|
||||||
Typically, should be set as Crossplane installation namespace.
|
Typically, should be set as Crossplane installation namespace.
|
||||||
type: string
|
type: string
|
||||||
kubernetes:
|
kubernetes:
|
||||||
description: Kubernetes configures a Kubernetes secret store. If the
|
description: |-
|
||||||
"type" is "Kubernetes" but no config provided, in cluster config
|
Kubernetes configures a Kubernetes secret store.
|
||||||
|
If the "type" is "Kubernetes" but no config provided, in cluster config
|
||||||
will be used.
|
will be used.
|
||||||
properties:
|
properties:
|
||||||
auth:
|
auth:
|
||||||
description: Credentials used to connect to the Kubernetes API.
|
description: Credentials used to connect to the Kubernetes API.
|
||||||
properties:
|
properties:
|
||||||
env:
|
env:
|
||||||
description: Env is a reference to an environment variable
|
description: |-
|
||||||
that contains credentials that must be used to connect to
|
Env is a reference to an environment variable that contains credentials
|
||||||
the provider.
|
that must be used to connect to the provider.
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
description: Name is the name of an environment variable.
|
description: Name is the name of an environment variable.
|
||||||
|
|
@ -74,9 +83,9 @@ spec:
|
||||||
- name
|
- name
|
||||||
type: object
|
type: object
|
||||||
fs:
|
fs:
|
||||||
description: Fs is a reference to a filesystem location that
|
description: |-
|
||||||
contains credentials that must be used to connect to the
|
Fs is a reference to a filesystem location that contains credentials that
|
||||||
provider.
|
must be used to connect to the provider.
|
||||||
properties:
|
properties:
|
||||||
path:
|
path:
|
||||||
description: Path is a filesystem path.
|
description: Path is a filesystem path.
|
||||||
|
|
@ -85,9 +94,9 @@ spec:
|
||||||
- path
|
- path
|
||||||
type: object
|
type: object
|
||||||
secretRef:
|
secretRef:
|
||||||
description: A SecretRef is a reference to a secret key that
|
description: |-
|
||||||
contains the credentials that must be used to connect to
|
A SecretRef is a reference to a secret key that contains the credentials
|
||||||
the provider.
|
that must be used to connect to the provider.
|
||||||
properties:
|
properties:
|
||||||
key:
|
key:
|
||||||
description: The key to select.
|
description: The key to select.
|
||||||
|
|
@ -143,9 +152,10 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
type:
|
type:
|
||||||
default: Kubernetes
|
default: Kubernetes
|
||||||
description: Type configures which secret store to be used. Only the
|
description: |-
|
||||||
configuration block for this store will be used and others will
|
Type configures which secret store to be used. Only the configuration
|
||||||
be ignored if provided. Default is Kubernetes.
|
block for this store will be used and others will be ignored if provided.
|
||||||
|
Default is Kubernetes.
|
||||||
enum:
|
enum:
|
||||||
- Kubernetes
|
- Kubernetes
|
||||||
- Vault
|
- Vault
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
weight: 400
|
weight: 200
|
||||||
title: Crossplane CLI
|
title: CLI Reference
|
||||||
description: "Documentation for the Crossplane command-line interface"
|
description: "Documentation for the Crossplane command-line interface"
|
||||||
---
|
---
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
title: Concepts
|
title: Concepts
|
||||||
weight: 100
|
weight: 50
|
||||||
description: Understand Crossplane's core components
|
description: Understand Crossplane's core components
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -55,16 +55,6 @@ building and managing external resources through Kubernetes.
|
||||||
Composite Resource. Platform users create Claims in their unique namespace,
|
Composite Resource. Platform users create Claims in their unique namespace,
|
||||||
isolating their resources from other teams in other namespaces.
|
isolating their resources from other teams in other namespaces.
|
||||||
|
|
||||||
* [**Composition Functions**]({{<ref "./composition-functions">}}) are custom
|
|
||||||
programs, written your programming language of choice, to apply logic and
|
|
||||||
loops before or after Crossplane creates resources.
|
|
||||||
|
|
||||||
* [**Patches and Transforms**]({{<ref "./patch-and-transform">}}) allow platform
|
|
||||||
engineers to use user inputs to their custom API and change how Crossplane
|
|
||||||
creates resources. Patches and transforms allow for flexible and
|
|
||||||
abstract inputs like `big` or `encrypted` to have specific meanings when
|
|
||||||
creating the actual managed resources.
|
|
||||||
|
|
||||||
* [**EnvironmentConfigs**]({{<ref "./environment-configs">}}) are an in-memory
|
* [**EnvironmentConfigs**]({{<ref "./environment-configs">}}) are an in-memory
|
||||||
data store, like a Kubernetes ConfigMap. EnvironmentConfigs are useful for
|
data store, like a Kubernetes ConfigMap. EnvironmentConfigs are useful for
|
||||||
custom resource mapping or storing and retrieving data across Claims and
|
custom resource mapping or storing and retrieving data across Claims and
|
||||||
|
|
@ -413,7 +413,7 @@ field indicates which version of the schema Compositions use. Only one
|
||||||
version can be `referenceable`.
|
version can be `referenceable`.
|
||||||
|
|
||||||
{{< hint "note" >}}
|
{{< hint "note" >}}
|
||||||
Changing which version is `referenceable:true` requires [updating the `compositeTypeRef.apiVersion`]({{<ref "./compositions#enabling-composite-resources" >}})
|
Changing which version is `referenceable:true` requires [updating the `compositeTypeRef.apiVersion`]({{<ref "./compositions#enable-composite-resources" >}})
|
||||||
of any Compositions referencing that XRD.
|
of any Compositions referencing that XRD.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
@ -582,7 +582,7 @@ key names listed in the Composition's `connectionDetails`.
|
||||||
An XRD ignores any keys listed that aren't created by a managed resource.
|
An XRD ignores any keys listed that aren't created by a managed resource.
|
||||||
|
|
||||||
For more information read the
|
For more information read the
|
||||||
[Composition documentation]({{<ref "./compositions#storing-connection-details">}}).
|
[Composition documentation]({{<ref "./compositions#store-connection-details">}}).
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -650,7 +650,6 @@ parent resource. The claim controller waits for the composite deletion to finish
|
||||||
When creating a claim the user can override the `defaultCompositeDeletePolicy` by including
|
When creating a claim the user can override the `defaultCompositeDeletePolicy` by including
|
||||||
the `spec.compositeDeletePolicy` property with either the `Background` or `Foreground` value.
|
the `spec.compositeDeletePolicy` property with either the `Background` or `Foreground` value.
|
||||||
|
|
||||||
|
|
||||||
The default value is `defaultCompositeDeletePolicy: Background`.
|
The default value is `defaultCompositeDeletePolicy: Background`.
|
||||||
|
|
||||||
Set
|
Set
|
||||||
|
|
@ -133,16 +133,27 @@ kind: Composition
|
||||||
metadata:
|
metadata:
|
||||||
name: my-composition
|
name: my-composition
|
||||||
spec:
|
spec:
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: database
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
# Removed for brevity
|
functionRef:
|
||||||
patches:
|
name: function-patch-and-transform
|
||||||
- fromFieldPath: metadata.annotations
|
input:
|
||||||
toFieldPath: metadata.annotations
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
|
kind: Resources
|
||||||
|
resources:
|
||||||
|
- name: database
|
||||||
|
base:
|
||||||
|
# Removed for brevity
|
||||||
|
patches:
|
||||||
|
- fromFieldPath: metadata.annotations
|
||||||
|
toFieldPath: metadata.annotations
|
||||||
```
|
```
|
||||||
|
|
||||||
For more information on patching resources refer to the [Patch and Transform]({{<ref "./patch-and-transform">}}) documentation.
|
For more information on using `function-patch-and-transform` to patch
|
||||||
|
resources refer to the
|
||||||
|
[Function Patch and Transform]({{<ref "../guides/function-patch-and-transform">}})
|
||||||
|
documentation.
|
||||||
|
|
||||||
### Composition selection
|
### Composition selection
|
||||||
|
|
||||||
|
|
@ -152,7 +163,7 @@ Select a specific Composition for a composite resource to use with
|
||||||
{{<hint "important">}}
|
{{<hint "important">}}
|
||||||
The selected Composition must allow the composite resource to use it with a
|
The selected Composition must allow the composite resource to use it with a
|
||||||
`compositeTypeRef`. Read more about the `compositeTypeRef` field in the
|
`compositeTypeRef`. Read more about the `compositeTypeRef` field in the
|
||||||
[Enabling Composite Resources]({{<ref "./compositions#enabling-composite-resources">}})
|
[Enable Composite Resources]({{<ref "./compositions#enable-composite-resources">}})
|
||||||
section of the Composition documentation.
|
section of the Composition documentation.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
---
|
---
|
||||||
title: Composition Revisions
|
title: Composition Revisions
|
||||||
|
weight: 35
|
||||||
---
|
---
|
||||||
|
|
||||||
This guide discusses the use of "Composition Revisions" to safely make and roll
|
This guide discusses the use of "Composition Revisions" to safely make and roll
|
||||||
|
|
@ -13,7 +14,7 @@ what managed resources Crossplane will create in response. Let's say for example
|
||||||
that you define a `PlatformDB` XR, which represents your organisation's common
|
that you define a `PlatformDB` XR, which represents your organisation's common
|
||||||
database configuration of an Azure MySQL Server and a few firewall rules. The
|
database configuration of an Azure MySQL Server and a few firewall rules. The
|
||||||
`Composition` contains the 'base' configuration for the MySQL server and the
|
`Composition` contains the 'base' configuration for the MySQL server and the
|
||||||
firewall rules that is extended by the configuration for the `PlatformDB`.
|
firewall rules that are extended by the configuration for the `PlatformDB`.
|
||||||
|
|
||||||
There is a one-to-many relationship between a `Composition` and the XRs that use
|
There is a one-to-many relationship between a `Composition` and the XRs that use
|
||||||
it. You might define a `Composition` named `big-platform-db` that is used by ten
|
it. You might define a `Composition` named `big-platform-db` that is used by ten
|
||||||
|
|
@ -24,7 +25,7 @@ member, while individual application teams create `PlatformDB` XRs that use said
|
||||||
`Composition`.
|
`Composition`.
|
||||||
|
|
||||||
Each `Composition` is mutable - you can update it as your organisation's needs
|
Each `Composition` is mutable - you can update it as your organisation's needs
|
||||||
change. However, without Composition Revisions updating a `Composition` can be a
|
change. However, updating a `Composition` without Composition Revisions can be a
|
||||||
risky process. Crossplane constantly uses the `Composition` to ensure that your
|
risky process. Crossplane constantly uses the `Composition` to ensure that your
|
||||||
actual infrastructure - your MySQL Servers and firewall rules - match your
|
actual infrastructure - your MySQL Servers and firewall rules - match your
|
||||||
desired state. If you have 10 `PlatformDB` XRs all using the `big-platform-db`
|
desired state. If you have 10 `PlatformDB` XRs all using the `big-platform-db`
|
||||||
|
|
@ -169,17 +170,25 @@ spec:
|
||||||
compositeTypeRef:
|
compositeTypeRef:
|
||||||
apiVersion: aws.example.upbound.io/v1alpha1
|
apiVersion: aws.example.upbound.io/v1alpha1
|
||||||
kind: MyVPC
|
kind: MyVPC
|
||||||
resources:
|
mode: Pipeline
|
||||||
- base:
|
pipeline:
|
||||||
apiVersion: ec2.aws.upbound.io/v1beta1
|
- step: patch-and-transform
|
||||||
kind: VPC
|
functionRef:
|
||||||
spec:
|
name: function-patch-and-transform
|
||||||
forProvider:
|
input:
|
||||||
region: us-west-1
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
cidrBlock: 192.168.0.0/16
|
kind: Resources
|
||||||
enableDnsSupport: true
|
resources:
|
||||||
enableDnsHostnames: true
|
- name: my-vpc
|
||||||
name: my-vcp
|
base:
|
||||||
|
apiVersion: ec2.aws.upbound.io/v1beta1
|
||||||
|
kind: VPC
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-west-1
|
||||||
|
cidrBlock: 192.168.0.0/16
|
||||||
|
enableDnsSupport: true
|
||||||
|
enableDnsHostnames: true
|
||||||
```
|
```
|
||||||
|
|
||||||
Apply the example XRD.
|
Apply the example XRD.
|
||||||
|
|
@ -381,17 +390,25 @@ spec:
|
||||||
compositeTypeRef:
|
compositeTypeRef:
|
||||||
apiVersion: aws.example.upbound.io/v1alpha1
|
apiVersion: aws.example.upbound.io/v1alpha1
|
||||||
kind: MyVPC
|
kind: MyVPC
|
||||||
resources:
|
mode: Pipeline
|
||||||
- base:
|
pipeline:
|
||||||
apiVersion: ec2.aws.upbound.io/v1beta1
|
- step: patch-and-transform
|
||||||
kind: VPC
|
functionRef:
|
||||||
spec:
|
name: function-patch-and-transform
|
||||||
forProvider:
|
input:
|
||||||
region: us-west-1
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
cidrBlock: 192.168.0.0/16
|
kind: Resources
|
||||||
enableDnsSupport: false
|
resources:
|
||||||
enableDnsHostnames: true
|
- name: my-vpc
|
||||||
name: my-vcp
|
base:
|
||||||
|
apiVersion: ec2.aws.upbound.io/v1beta1
|
||||||
|
kind: VPC
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
region: us-west-1
|
||||||
|
cidrBlock: 192.168.0.0/16
|
||||||
|
enableDnsSupport: false
|
||||||
|
enableDnsHostnames: true
|
||||||
```
|
```
|
||||||
|
|
||||||
Expected Output:
|
Expected Output:
|
||||||
|
|
@ -1,29 +1,121 @@
|
||||||
---
|
---
|
||||||
title: Composition Functions
|
title: Compositions
|
||||||
state: beta
|
weight: 30
|
||||||
alphaVersion: "1.11"
|
|
||||||
betaVersion: "1.14"
|
|
||||||
weight: 80
|
|
||||||
description: "Composition Functions allow you to template resources using general-purpose programming languages"
|
|
||||||
aliases:
|
aliases:
|
||||||
|
- composition
|
||||||
|
- composition-functions
|
||||||
- /knowledge-base/guides/composition-functions
|
- /knowledge-base/guides/composition-functions
|
||||||
|
description: "Compositions are a template for creating Crossplane resources"
|
||||||
---
|
---
|
||||||
|
|
||||||
Composition functions (or just functions, for short) are custom programs that
|
Compositions are a template for creating multiple managed resources as a single
|
||||||
template Crossplane resources. Crossplane calls composition functions to
|
object.
|
||||||
determine what resources it should create when you create a composite resource
|
|
||||||
(XR). 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.
|
|
||||||
|
|
||||||
You can build a function using general purpose programming languages such as Go
|
A Composition _composes_ individual managed resources together into a larger,
|
||||||
or Python. The Crossplane community has also built functions that let you
|
reusable, solution.
|
||||||
template Crossplane resources using [CUE](https://cuelang.org), Helm-like
|
|
||||||
[Go templates](https://pkg.go.dev/text/template) or
|
|
||||||
[Patch and Transforms]({{<ref "./patch-and-transform">}}).
|
|
||||||
|
|
||||||
## Install a composition function
|
An example Composition may combine a virtual machine, storage resources and
|
||||||
|
networking policies. A Composition template links all these individual
|
||||||
|
resources together.
|
||||||
|
|
||||||
|
Here's an example Composition. When you create an
|
||||||
|
{{<hover label="intro" line="8">}}AcmeBucket{{</hover >}} composite resource
|
||||||
|
(XR) that uses this Composition, Crossplane uses the template to create the
|
||||||
|
Amazon S3 {{<hover label="intro" line="18">}}Bucket{{</hover >}} managed
|
||||||
|
resource.
|
||||||
|
|
||||||
|
```yaml {label="intro"}
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
metadata:
|
||||||
|
name: example
|
||||||
|
spec:
|
||||||
|
compositeTypeRef:
|
||||||
|
apiVersion: custom-api.example.org/v1alpha1
|
||||||
|
kind: AcmeBucket
|
||||||
|
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"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
{{<expand "Confused about Compositions, XRDs, XRs and Claims?" >}}
|
||||||
|
Crossplane has four core components that users commonly mix up:
|
||||||
|
|
||||||
|
* Compositions - This page. A template to define how to create resources.
|
||||||
|
* [Composite Resource Definition]({{<ref "./composite-resource-definitions">}})
|
||||||
|
(`XRD`) - A custom API specification.
|
||||||
|
* [Composite Resource]({{<ref "./composite-resources">}}) (`XR`) - Created by
|
||||||
|
using the custom API defined in a Composite Resource Definition. XRs use the
|
||||||
|
Composition template to create new managed resources.
|
||||||
|
* [Claims]({{<ref "./claims" >}}) (`XRC`) - Like a Composite Resource, but
|
||||||
|
with namespace scoping.
|
||||||
|
{{</expand >}}
|
||||||
|
|
||||||
|
## Create a Composition
|
||||||
|
|
||||||
|
Creating a Composition consists of:
|
||||||
|
* [Using composition functions](#use-a-function-in-a-composition) to define the
|
||||||
|
resources to create.
|
||||||
|
* [Enabling composite resources](#enable-composite-resources) to use the
|
||||||
|
Composition template.
|
||||||
|
|
||||||
|
A Composition is a pipeline of composition functions.
|
||||||
|
|
||||||
|
Composition functions (or just functions, for short) are Crossplane extensions
|
||||||
|
that template Crossplane resources. Crossplane calls the composition functions
|
||||||
|
to determine what resources it should create when you create a composite
|
||||||
|
resource (XR).
|
||||||
|
|
||||||
|
{{<hint "tip" >}}
|
||||||
|
The Crossplane community has built lots of functions that let you template
|
||||||
|
Crossplane resources using
|
||||||
|
[CUE](https://github.com/crossplane-contrib/function-cue),
|
||||||
|
[KCL](https://github.com/crossplane-contrib/function-kcl),
|
||||||
|
Helm-like
|
||||||
|
[Go templates](https://github.com/crossplane-contrib/function-go-templating) or
|
||||||
|
legacy Crossplane
|
||||||
|
[Patch and Transforms]({{<ref "../guides/function-patch-and-transform">}}).
|
||||||
|
|
||||||
|
You can also [write your own function](#write-a-composition-function) using Go
|
||||||
|
or Python.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
{{<hint "important" >}}
|
||||||
|
Crossplane has two modes of composition:
|
||||||
|
|
||||||
|
* `mode: Pipeline`
|
||||||
|
* `mode: Resources`
|
||||||
|
|
||||||
|
Use the `Pipeline` mode to use composition functions.
|
||||||
|
|
||||||
|
<!-- vale write-good.Passive = NO -->
|
||||||
|
The `Resources` mode is deprecated, and you shouldn't use it. Crossplane
|
||||||
|
supports Compositions that use the `Resources` mode for backward compatibility,
|
||||||
|
but the feature is no longer maintained. Crossplane doesn't accept new
|
||||||
|
`Resources` features, and only accepts security bug fixes.
|
||||||
|
<!-- vale write-good.Passive = YES -->
|
||||||
|
|
||||||
|
See the [CLI documentation]({{<ref "../cli/command-reference#beta-convert">}})
|
||||||
|
to learn how to use the `crossplane beta convert` command to convert a legacy
|
||||||
|
`Resources` Composition to the `Pipeline` mode.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
||||||
|
### Install a composition function
|
||||||
|
|
||||||
Installing a Function creates a function pod. Crossplane sends requests to this
|
Installing a Function creates a function pod. Crossplane sends requests to this
|
||||||
pod to ask it what resources to create when you create a composite resource.
|
pod to ask it what resources to create when you create a composite resource.
|
||||||
|
|
@ -34,10 +126,10 @@ Install a Function with a Crossplane
|
||||||
location of the function package.
|
location of the function package.
|
||||||
|
|
||||||
|
|
||||||
For example, to install [Function Patch and Transform](https://github.com/crossplane-contrib/function-patch-and-transform),
|
For example, to install [Function Patch and Transform]({{<ref "../guides/function-patch-and-transform">}}),
|
||||||
|
|
||||||
```yaml {label="install"}
|
```yaml {label="install"}
|
||||||
apiVersion: pkg.crossplane.io/v1beta1
|
apiVersion: pkg.crossplane.io/v1
|
||||||
kind: Function
|
kind: Function
|
||||||
metadata:
|
metadata:
|
||||||
name: function-patch-and-transform
|
name: function-patch-and-transform
|
||||||
|
|
@ -53,7 +145,7 @@ Functions are Crossplane Packages. Read more about Packages in the
|
||||||
By default, the Function pod installs in the same namespace as Crossplane
|
By default, the Function pod installs in the same namespace as Crossplane
|
||||||
(`crossplane-system`).
|
(`crossplane-system`).
|
||||||
|
|
||||||
## Verify a composition function
|
### Verify a composition function
|
||||||
|
|
||||||
View the status of a Function with `kubectl get functions`
|
View the status of a Function with `kubectl get functions`
|
||||||
|
|
||||||
|
|
@ -69,7 +161,7 @@ function-patch-and-transform True Unknown xpkg.upbound.io/crosspla
|
||||||
After the Function install completes and it's ready for use the `HEALTHY` status
|
After the Function install completes and it's ready for use the `HEALTHY` status
|
||||||
reports `True`.
|
reports `True`.
|
||||||
|
|
||||||
## Use a function in a composition
|
### Use a function in a composition
|
||||||
|
|
||||||
Crossplane calls a Function to determine what resources it should create when
|
Crossplane calls a Function to determine what resources it should create when
|
||||||
you create a composite resource. The Function also tells Crossplane what to do
|
you create a composite resource. The Function also tells Crossplane what to do
|
||||||
|
|
@ -82,20 +174,6 @@ composite resource owns.
|
||||||
Crossplane knows what Function to call when a composite resource changes by
|
Crossplane knows what Function to call when a composite resource changes by
|
||||||
looking at the Composition the composite resource uses.
|
looking at the Composition the composite resource uses.
|
||||||
|
|
||||||
{{<expand "Confused about Composite Resources and Compositions?" >}}
|
|
||||||
Crossplane has four core components that users commonly mix up:
|
|
||||||
|
|
||||||
* [Composition]({{<ref "./compositions">}}) - A template to define how to create
|
|
||||||
resources.
|
|
||||||
* [CompositeResourceDefinition]({{<ref "./composite-resource-definitions">}})
|
|
||||||
(`XRD`) - A custom API specification.
|
|
||||||
* [Composite Resource]({{<ref "./composite-resources">}}) (`XR`) - Created by
|
|
||||||
using the custom API defined in a CompositeResourceDefinition. XRs use the
|
|
||||||
Composition template to create new managed resources.
|
|
||||||
* [Claim]({{<ref "./claims" >}}) (`XRC`) - Like a Composite Resource, but with
|
|
||||||
namespace scoping.
|
|
||||||
{{</expand >}}
|
|
||||||
|
|
||||||
To use composition functions set the Composition
|
To use composition functions set the Composition
|
||||||
{{<hover label="single" line="6">}}mode{{</hover>}} to
|
{{<hover label="single" line="6">}}mode{{</hover>}} to
|
||||||
{{<hover label="single" line="6">}}Pipeline{{</hover>}}.
|
{{<hover label="single" line="6">}}Pipeline{{</hover>}}.
|
||||||
|
|
@ -122,12 +200,11 @@ The function defines the
|
||||||
{{<hover label="single" line="13">}}kind{{</hover>}} of input.
|
{{<hover label="single" line="13">}}kind{{</hover>}} of input.
|
||||||
|
|
||||||
This example uses
|
This example uses
|
||||||
[Function Patch and Transform](https://github.com/crossplane-contrib/function-patch-and-transform).
|
[Function Patch and Transform]({{<ref "../guides/function-patch-and-transform">}}).
|
||||||
Function Patch and Transform implements Crossplane resource
|
Function Patch and Transform implements Crossplane resource
|
||||||
templates.
|
templates.
|
||||||
The input kind is {{<hover label="single" line="13">}}Resources{{</hover>}},
|
The input kind is {{<hover label="single" line="13">}}Resources{{</hover>}},
|
||||||
and it accepts [Patch and Transform]({{<ref "./patch-and-transform">}})
|
and it accepts {{<hover label="single" line="14">}}resources{{</hover>}} as input.
|
||||||
{{<hover label="single" line="14">}}resources{{</hover>}} as input.
|
|
||||||
|
|
||||||
```yaml {label="single",copy-lines="none"}
|
```yaml {label="single",copy-lines="none"}
|
||||||
apiVersion: apiextensions.crossplane.io/v1
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
|
@ -153,8 +230,7 @@ spec:
|
||||||
region: "us-east-2"
|
region: "us-east-2"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Use a pipeline of functions in a composition
|
||||||
## Use a pipeline of functions in a composition
|
|
||||||
|
|
||||||
Crossplane can ask more than one Function what to do when a composite resource
|
Crossplane can ask more than one Function what to do when a composite resource
|
||||||
changes. When a Composition has a pipeline of two or more steps, Crossplane
|
changes. When a Composition has a pipeline of two or more steps, Crossplane
|
||||||
|
|
@ -187,20 +263,183 @@ spec:
|
||||||
value: |
|
value: |
|
||||||
apiVersion: "s3.aws.upbound.io/v1beta1"
|
apiVersion: "s3.aws.upbound.io/v1beta1"
|
||||||
kind: "Bucket"
|
kind: "Bucket"
|
||||||
spec:
|
spec: forProvider: region: "us-east-2"
|
||||||
forProvider:
|
|
||||||
region: "us-east-2"
|
|
||||||
- step: automatically-detect-readiness
|
- step: automatically-detect-readiness
|
||||||
functionRef:
|
functionRef:
|
||||||
name: function-auto-ready
|
name: function-auto-ready
|
||||||
```
|
```
|
||||||
|
|
||||||
## Test a composition that uses functions
|
|
||||||
|
|
||||||
You can preview the output of any composition that uses composition functions
|
### Enable composite resources
|
||||||
using the Crossplane CLI. You don't need a Crossplane control plane to do
|
|
||||||
this. The Crossplane CLI uses Docker Engine to run functions.
|
|
||||||
|
|
||||||
|
A Composition is only a template defining how to create managed
|
||||||
|
resources. A Composition limits which Composite Resources can use this
|
||||||
|
template.
|
||||||
|
|
||||||
|
A Composition's {{<hover label="typeref" line="6">}}compositeTypeRef{{</hover>}}
|
||||||
|
defines which Composite Resource type can use this Composition.
|
||||||
|
|
||||||
|
{{<hint "note" >}}
|
||||||
|
Read more about Composite Resources in the
|
||||||
|
[Composite Resources page]({{<ref "./composite-resources" >}}).
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
Inside a Composition's
|
||||||
|
{{<hover label="typeref" line="5">}}spec{{</hover>}}
|
||||||
|
define the Composite Resource
|
||||||
|
{{<hover label="typeref" line="7">}}apiVersion{{</hover>}} and
|
||||||
|
{{<hover label="typeref" line="8">}}kind{{</hover>}}
|
||||||
|
that the Composition allows to use this template.
|
||||||
|
|
||||||
|
```yaml {label="typeref",copy-lines="none"}
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
metadata:
|
||||||
|
name: dynamodb-with-bucket
|
||||||
|
spec:
|
||||||
|
compositeTypeRef:
|
||||||
|
apiVersion: custom-api.example.org/v1alpha1
|
||||||
|
kind: database
|
||||||
|
# Removed for brevity
|
||||||
|
```
|
||||||
|
|
||||||
|
### Store connection details
|
||||||
|
|
||||||
|
Some managed resources generate unique details like usernames, passwords, IP
|
||||||
|
addresses, ports or other connection details.
|
||||||
|
|
||||||
|
When resources inside a Composition create connection details Crossplane creates
|
||||||
|
a Kubernetes secret object for each managed resource generating connection
|
||||||
|
details.
|
||||||
|
|
||||||
|
{{<hint "note">}}
|
||||||
|
This section discusses creating Kubernetes secrets.
|
||||||
|
Crossplane also supports using external secret stores like
|
||||||
|
[HashiCorp Vault](https://www.vaultproject.io/).
|
||||||
|
|
||||||
|
Read the [external secrets store guide]({{<ref "../guides/vault-as-secret-store">}}) for more information on using Crossplane
|
||||||
|
with an external secret store.
|
||||||
|
{{</hint >}}
|
||||||
|
|
||||||
|
#### Composite resource combined secret
|
||||||
|
|
||||||
|
Crossplane can combine all the secrets generated by the resources inside a
|
||||||
|
Composition into a single Kubernetes secret and optionally copy the secret
|
||||||
|
object for claims.
|
||||||
|
|
||||||
|
Set the value of `writeConnectionSecretsToNamespace` to the namespace where
|
||||||
|
Crossplane should store the combined secret object.
|
||||||
|
|
||||||
|
```yaml {copy-lines="none",label="writeConn"}
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
# Removed for Brevity
|
||||||
|
spec:
|
||||||
|
writeConnectionSecretsToNamespace: my-namespace
|
||||||
|
resources:
|
||||||
|
# Removed for brevity
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Composed resource secrets
|
||||||
|
|
||||||
|
Inside the `spec` of each resource producing connection details, define the
|
||||||
|
`writeConnectionSecretToRef`, with a `namespace` and `name` of the secret object
|
||||||
|
for the resource.
|
||||||
|
|
||||||
|
If a `writeConnectionSecretToRef` isn't defined, Crossplane doesn't write any
|
||||||
|
keys to the secret.
|
||||||
|
|
||||||
|
```yaml {label="writeConnRes"}
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
spec:
|
||||||
|
writeConnectionSecretsToNamespace: other-namespace
|
||||||
|
mode: Pipeline
|
||||||
|
pipeline:
|
||||||
|
- step: patch-and-transform
|
||||||
|
functionRef:
|
||||||
|
name: function-patch-and-transform
|
||||||
|
input:
|
||||||
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
|
kind: Resources
|
||||||
|
resources:
|
||||||
|
- name: key
|
||||||
|
base:
|
||||||
|
apiVersion: iam.aws.upbound.io/v1beta1
|
||||||
|
kind: AccessKey
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
# Removed for brevity
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
namespace: docs
|
||||||
|
name: key1
|
||||||
|
```
|
||||||
|
|
||||||
|
Crossplane saves a secret with the `name` in the `namespace` provided.
|
||||||
|
|
||||||
|
```shell {label="viewComposedSec"}
|
||||||
|
kubectl get secrets -n docs
|
||||||
|
NAME TYPE DATA AGE
|
||||||
|
key1 connection.crossplane.io/v1alpha1 4 4m30s
|
||||||
|
```
|
||||||
|
|
||||||
|
{{<hint "tip" >}}
|
||||||
|
Remember to create a unique name for each secret.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
#### External secret stores
|
||||||
|
|
||||||
|
Crossplane
|
||||||
|
[External Secret Stores]({{<ref "../guides/vault-as-secret-store" >}})
|
||||||
|
write secrets and connection details to external secret stores like HashiCorp
|
||||||
|
Vault.
|
||||||
|
|
||||||
|
{{<hint "important" >}}
|
||||||
|
External Secret Stores are an alpha feature.
|
||||||
|
|
||||||
|
They're not recommended for production use. Crossplane disables External Secret
|
||||||
|
Stores by default.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
Use `publishConnectionDetailsWithStoreConfigRef` in place of
|
||||||
|
`writeConnectionSecretsToNamespace` to define the `StoreConfig` to save
|
||||||
|
connection details to.
|
||||||
|
|
||||||
|
For example, using a `StoreConfig` with the `name` "vault," use
|
||||||
|
`publishConnectionDetailsWithStoreConfigRef.name` matching the
|
||||||
|
`StoreConfig.name`, in this example, "vault."
|
||||||
|
|
||||||
|
|
||||||
|
```yaml {label="gcp-storeconfig",copy-lines="none"}
|
||||||
|
apiVersion: gcp.crossplane.io/v1alpha1
|
||||||
|
kind: StoreConfig
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
# Removed for brevity.
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
# Removed for Brevity
|
||||||
|
spec:
|
||||||
|
publishConnectionDetailsWithStoreConfigRef:
|
||||||
|
name: vault
|
||||||
|
# Removed for brevity
|
||||||
|
```
|
||||||
|
|
||||||
|
For more details read the
|
||||||
|
[External Secret Stores]({{<ref "../guides/vault-as-secret-store" >}})
|
||||||
|
integration guide.
|
||||||
|
|
||||||
|
## Test a composition
|
||||||
|
|
||||||
|
You can preview the output of any composition using the Crossplane CLI. You
|
||||||
|
don't need a Crossplane control plane to do this. The Crossplane CLI uses Docker
|
||||||
|
Engine to run functions.
|
||||||
|
|
||||||
|
{{<hint "important">}}
|
||||||
|
The `crossplane render` command only supports composition functions. It doesn't
|
||||||
|
support `mode: Resources` Compositions.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
{{<hint "tip">}}
|
{{<hint "tip">}}
|
||||||
See the [Crossplane CLI docs]({{<ref "../cli">}}) to
|
See the [Crossplane CLI docs]({{<ref "../cli">}}) to
|
||||||
|
|
@ -208,17 +447,17 @@ learn how to install and use the Crossplane CLI.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
{{<hint "important">}}
|
{{<hint "important">}}
|
||||||
Running `crossplane beta render` requires [Docker](https://www.docker.com).
|
Running `crossplane render` requires [Docker](https://www.docker.com).
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
Provide a composite resource, composition and composition functions to render
|
Provide a composite resource, composition and composition functions to render
|
||||||
the output locally.
|
the output locally.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
crossplane beta render xr.yaml composition.yaml functions.yaml
|
crossplane render xr.yaml composition.yaml functions.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
`crossplane beta render` prints resources as YAML to stdout. It prints the
|
`crossplane render` prints resources as YAML to stdout. It prints the
|
||||||
composite resource first, followed by the resources the composition functions
|
composite resource first, followed by the resources the composition functions
|
||||||
created.
|
created.
|
||||||
|
|
||||||
|
|
@ -251,7 +490,7 @@ spec:
|
||||||
|
|
||||||
{{<expand "The xr.yaml, composition.yaml and function.yaml files used in the example">}}
|
{{<expand "The xr.yaml, composition.yaml and function.yaml files used in the example">}}
|
||||||
|
|
||||||
You can recreate the output below using by running `crossplane beta render` with
|
You can recreate the output below by running `crossplane render` with
|
||||||
these files.
|
these files.
|
||||||
|
|
||||||
The `xr.yaml` file contains the composite resource to render:
|
The `xr.yaml` file contains the composite resource to render:
|
||||||
|
|
@ -301,7 +540,7 @@ its pipeline steps:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
apiVersion: pkg.crossplane.io/v1beta1
|
apiVersion: pkg.crossplane.io/v1
|
||||||
kind: Function
|
kind: Function
|
||||||
metadata:
|
metadata:
|
||||||
name: function-patch-and-transform
|
name: function-patch-and-transform
|
||||||
|
|
@ -311,11 +550,11 @@ spec:
|
||||||
{{</expand>}}
|
{{</expand>}}
|
||||||
|
|
||||||
The Crossplane CLI uses Docker Engine to run functions. You can change how the
|
The Crossplane CLI uses Docker Engine to run functions. You can change how the
|
||||||
Crossplane CLI run a function by adding an annotation in `functions.yaml`. Add
|
Crossplane CLI runs a function by adding an annotation in `functions.yaml`. Add
|
||||||
the `render.crossplane.io/runtime` annotation to a Function to change how it's
|
the `render.crossplane.io/runtime` annotation to a Function to change how it's
|
||||||
run.
|
run.
|
||||||
|
|
||||||
`crossplane beta render` supports two `render.crossplane.io/runtime` values:
|
`crossplane render` supports two `render.crossplane.io/runtime` values:
|
||||||
|
|
||||||
* `Docker` (the default) connects to Docker Engine. It uses Docker to pull and
|
* `Docker` (the default) connects to Docker Engine. It uses Docker to pull and
|
||||||
run a function runtime.
|
run a function runtime.
|
||||||
|
|
@ -330,7 +569,7 @@ transport security. Most function SDKs let you run a function with the
|
||||||
function locally using `go run . --insecure`.
|
function locally using `go run . --insecure`.
|
||||||
|
|
||||||
```yaml {label="development"}
|
```yaml {label="development"}
|
||||||
apiVersion: pkg.crossplane.io/v1beta1
|
apiVersion: pkg.crossplane.io/v1
|
||||||
kind: Function
|
kind: Function
|
||||||
metadata:
|
metadata:
|
||||||
name: function-patch-and-transform
|
name: function-patch-and-transform
|
||||||
|
|
@ -346,7 +585,7 @@ Use the `Development` runtime when you
|
||||||
function end-to-end.
|
function end-to-end.
|
||||||
{{</hint>}}
|
{{</hint>}}
|
||||||
|
|
||||||
`crossplane beta render` also supports the following Function annotations. These
|
`crossplane render` also supports the following Function annotations. These
|
||||||
annotations affect how it runs Functions:
|
annotations affect how it runs Functions:
|
||||||
|
|
||||||
* `render.crossplane.io/runtime-docker-cleanup` - When using the `Docker`
|
* `render.crossplane.io/runtime-docker-cleanup` - When using the `Docker`
|
||||||
|
|
@ -361,6 +600,136 @@ the container, and `Orphan`, to leave it running.
|
||||||
running at the specified target. It uses
|
running at the specified target. It uses
|
||||||
[gRPC target syntax](https://github.com/grpc/grpc/blob/v1.59.1/doc/naming.md).
|
[gRPC target syntax](https://github.com/grpc/grpc/blob/v1.59.1/doc/naming.md).
|
||||||
|
|
||||||
|
## Verify a Composition
|
||||||
|
|
||||||
|
View all available Compositions with `kubectl get composition`.
|
||||||
|
|
||||||
|
```shell {copy-lines="1"}
|
||||||
|
kubectl get composition
|
||||||
|
NAME XR-KIND XR-APIVERSION AGE
|
||||||
|
xapps.aws.platformref.upbound.io XApp aws.platformref.upbound.io/v1alpha1 123m
|
||||||
|
xclusters.aws.platformref.upbound.io XCluster aws.platformref.upbound.io/v1alpha1 123m
|
||||||
|
xeks.aws.platformref.upbound.io XEKS aws.platformref.upbound.io/v1alpha1 123m
|
||||||
|
xnetworks.aws.platformref.upbound.io XNetwork aws.platformref.upbound.io/v1alpha1 123m
|
||||||
|
xservices.aws.platformref.upbound.io XServices aws.platformref.upbound.io/v1alpha1 123m
|
||||||
|
xsqlinstances.aws.platformref.upbound.io XSQLInstance aws.platformref.upbound.io/v1alpha1 123m
|
||||||
|
```
|
||||||
|
|
||||||
|
The `XR-KIND` lists the Composite Resource `kind` that's allowed to use the
|
||||||
|
Composition template.
|
||||||
|
The `XR-APIVERSION` lists the Composite Resource API versions allowed to use the
|
||||||
|
Composition template.
|
||||||
|
|
||||||
|
{{<hint "note" >}}
|
||||||
|
The output of `kubectl get composition` is different than `kubectl get
|
||||||
|
composite`.
|
||||||
|
|
||||||
|
`kubectl get composition` lists all available Compositions.
|
||||||
|
|
||||||
|
`kubectl get composite` lists all created Composite Resources and their related
|
||||||
|
Composition.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
## Composition validation
|
||||||
|
|
||||||
|
When creating a Composition, Crossplane automatically validates its integrity,
|
||||||
|
checking that the Composition is well formed, for example:
|
||||||
|
|
||||||
|
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.
|
||||||
|
* Patch sets must have names.
|
||||||
|
* Patches that require a `fromFieldPath` value provide it.
|
||||||
|
* Patches that require a `toFieldPath` value provide it.
|
||||||
|
* Patches that require a `combine` field provide it.
|
||||||
|
* Readiness checks using `matchString` aren't empty.
|
||||||
|
* Readiness checks using `matchInteger` isn't `0`.
|
||||||
|
* Readiness checks requiring a `fieldPath` value provide it.
|
||||||
|
|
||||||
|
If using `mode: Pipeline` (Composition Functions):
|
||||||
|
|
||||||
|
* The `pipeline` field isn't empty.
|
||||||
|
* No duplicate step names.
|
||||||
|
|
||||||
|
### Composition schema aware validation
|
||||||
|
|
||||||
|
Crossplane also performs schema aware
|
||||||
|
validation of Compositions. Schema validation checks that `patches`,
|
||||||
|
`readinessChecks` and `connectionDetails` are valid according to the resource
|
||||||
|
schemas. For example, checking that the source and destination fields of a patch
|
||||||
|
are valid according to the source and destination resource schema.
|
||||||
|
|
||||||
|
{{<hint "note" >}}
|
||||||
|
Composition schema aware validation is a beta feature. Crossplane enables
|
||||||
|
beta features by default.
|
||||||
|
|
||||||
|
Disable schema aware validation by setting the
|
||||||
|
`--enable-composition-webhook-schema-validation=false` flag on the Crossplane
|
||||||
|
pod.
|
||||||
|
|
||||||
|
The [Crossplane Pods]({{<ref "./pods#edit-the-deployment">}}) page has
|
||||||
|
more information on enabling Crossplane flags.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
#### Schema aware validation modes
|
||||||
|
|
||||||
|
Crossplane always rejects Compositions in case of integrity errors.
|
||||||
|
|
||||||
|
Set the schema aware validation mode to configure how Crossplane handles both
|
||||||
|
missing resource schemas and schema aware validation errors.
|
||||||
|
|
||||||
|
{{<hint "note" >}}
|
||||||
|
If a resource schema is missing, Crossplane skips schema aware validation
|
||||||
|
but still returns an error for integrity errors and a warning or an error
|
||||||
|
for the missing schemas.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
The following modes are available:
|
||||||
|
|
||||||
|
{{< table "table table-sm table-striped" >}}
|
||||||
|
| Mode | Missing Schema | Schema Aware Error | Integrity Error |
|
||||||
|
| -------- | -------------- |--------------------|-----------------|
|
||||||
|
| `warn` | Warning | Warning | Error |
|
||||||
|
| `loose` | Warning | Error | Error |
|
||||||
|
| `strict` | Error | Error | Error |
|
||||||
|
{{< /table >}}
|
||||||
|
|
||||||
|
Change the validation mode for a Composition with the
|
||||||
|
{{<hover label="mode" line="5">}}crossplane.io/composition-schema-aware-validation-mode{{</hover>}}
|
||||||
|
annotation.
|
||||||
|
|
||||||
|
If not specified, the default mode is `warn`.
|
||||||
|
|
||||||
|
For example, to enable `loose` mode checking set the annotation value to
|
||||||
|
{{<hover label="mode" line="5">}}loose{{</hover>}}.
|
||||||
|
|
||||||
|
```yaml {copy-lines="none",label="mode"}
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
|
kind: Composition
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
crossplane.io/composition-schema-aware-validation-mode: loose
|
||||||
|
# Removed for brevity
|
||||||
|
spec:
|
||||||
|
# Removed for brevity
|
||||||
|
```
|
||||||
|
|
||||||
|
{{<hint "important" >}}
|
||||||
|
Validation modes also apply to Compositions defined by Configuration packages.
|
||||||
|
|
||||||
|
Depending on the mode configured in the Composition, schema aware validation
|
||||||
|
issues may result in warnings or the rejection of the Composition.
|
||||||
|
|
||||||
|
View the Crossplane logs for validation warnings.
|
||||||
|
|
||||||
|
Crossplane sets a Configuration as unhealthy if there are validation errors.
|
||||||
|
View the Configuration details with `kubectl describe configuration` to see the
|
||||||
|
specific errors.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
## Write a composition function
|
## Write a composition function
|
||||||
|
|
||||||
Composition functions let you replace complicated Compositions with code written
|
Composition functions let you replace complicated Compositions with code written
|
||||||
|
|
@ -374,89 +743,16 @@ Here's an example of a tiny, hello world function. This example is written in
|
||||||
<!-- vale write-good.Passive = YES -->
|
<!-- vale write-good.Passive = YES -->
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func (f *Function) RunFunction(_ context.Context, req *fnv1beta1.RunFunctionRequest) (*fnv1beta1.RunFunctionResponse, error) {
|
func (f *Function) RunFunction(_ context.Context, req *fnv1.RunFunctionRequest) (*fnv1.RunFunctionResponse, error) {
|
||||||
rsp := response.To(req, response.DefaultTTL)
|
rsp := response.To(req, response.DefaultTTL)
|
||||||
response.Normal(rsp, "Hello world!")
|
response.Normal(rsp, "Hello world!")
|
||||||
return rsp, nil
|
return rsp, nil
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Some people design composition functions for you to use them with any kind of
|
Crossplane has [language specific guides]({{<ref "../guides">}}) to writing a
|
||||||
composite resource.
|
composition function. Refer to the guide for your preferred language to learn
|
||||||
[Function Patch and Transform](https://github.com/crossplane-contrib/function-patch-and-transform)
|
how to write a composition function.
|
||||||
and
|
|
||||||
[Function Auto Ready](https://github.com/crossplane-contrib/function-auto-ready)
|
|
||||||
work with any kind of composite resource.
|
|
||||||
|
|
||||||
Another common pattern is to write a composition function specific to one kind
|
|
||||||
of composite resource. The function contains all the logic needed to tell
|
|
||||||
Crossplane what resources to create when you create a composite resource. When
|
|
||||||
you write a composition function like this, your Composition can be small. It
|
|
||||||
just tells Crossplane what function to run when you create, update, or delete a
|
|
||||||
composite resource.
|
|
||||||
|
|
||||||
This Composition tells Crossplane to call {{<hover label="dedicated"
|
|
||||||
line="13">}}function-xr-xbucket{{</hover>}} whenever you create, update, or
|
|
||||||
delete an {{<hover label="dedicated" line="8">}}XBucket{{</hover>}} composite
|
|
||||||
resource. `function-xr-xbucket` is hard coded to handle `XBucket` composite
|
|
||||||
resources.
|
|
||||||
|
|
||||||
```yaml {label="dedicated"}
|
|
||||||
apiVersion: apiextensions.crossplane.io/v1
|
|
||||||
kind: Composition
|
|
||||||
metadata:
|
|
||||||
name: example-bucket-function
|
|
||||||
spec:
|
|
||||||
compositeTypeRef:
|
|
||||||
apiVersion: example.crossplane.io/v1
|
|
||||||
kind: XBucket
|
|
||||||
mode: Pipeline
|
|
||||||
pipeline:
|
|
||||||
- step: handle-xbucket-xr
|
|
||||||
functionRef:
|
|
||||||
name: function-xr-xbucket
|
|
||||||
```
|
|
||||||
|
|
||||||
To write a composition function, you:
|
|
||||||
|
|
||||||
1. Create the function from a template.
|
|
||||||
1. Edit the template to add the function's logic.
|
|
||||||
1. [Test the function](#test-a-composition-that-uses-functions).
|
|
||||||
1. Build the function, and push it to a package registry.
|
|
||||||
|
|
||||||
You use the [Crossplane CLI]({{<ref "../cli">}}) to
|
|
||||||
create, test, build, and push a function. For example,
|
|
||||||
|
|
||||||
```shell {copy-lines=none}
|
|
||||||
# Create the function from a template.
|
|
||||||
crossplane beta xpkg init function-example function-template-go
|
|
||||||
Initialized package "function-example" in directory "/home/negz/control/negz/function-example" from https://github.com/crossplane/function-template-go/tree/91a1a5eed21964ff98966d72cc6db6f089ad63f4 (main)
|
|
||||||
|
|
||||||
$ ls
|
|
||||||
Dockerfile fn.go fn_test.go go.mod go.sum input LICENSE main.go package README.md renovate.json
|
|
||||||
|
|
||||||
# Edit the template to add your function's logic
|
|
||||||
$ vim fn.go
|
|
||||||
|
|
||||||
# Build the function.
|
|
||||||
$ docker build . --quiet --tag runtime
|
|
||||||
sha256:2c31b0f7a34b34ba5b0b2dacc94c360d18aca1b99f56ca4f40a1f26535a7c1c4
|
|
||||||
|
|
||||||
# Package the function.
|
|
||||||
$ crossplane xpkg build -f package --embed-runtime-image=runtime
|
|
||||||
|
|
||||||
# Test the function.
|
|
||||||
$ go run . --insecure
|
|
||||||
$ crossplane beta render xr.yaml composition.yaml functions.yaml
|
|
||||||
|
|
||||||
# Push the function package to xpkg.upbound.io.
|
|
||||||
$ crossplane xpkg push -f package/*.xpkg crossplane-contrib/function-example:v0.1.0
|
|
||||||
```
|
|
||||||
|
|
||||||
{{<hint "tip">}}
|
|
||||||
Crossplane has a
|
|
||||||
[guide to writing a composition function in Go]({{<ref "../guides/write-a-composition-function-in-go">}}).
|
|
||||||
{{</hint>}}
|
|
||||||
|
|
||||||
When you're writing a composition function it's useful to know how composition
|
When you're writing a composition function it's useful to know how composition
|
||||||
functions work. Read the next section to learn
|
functions work. Read the next section to learn
|
||||||
|
|
@ -480,6 +776,11 @@ sequenceDiagram
|
||||||
Crossplane Pod->>+API Server: Observe composite resource
|
Crossplane Pod->>+API Server: Observe composite resource
|
||||||
Crossplane Pod->>+Function Pod: gRPC RunFunctionRequest
|
Crossplane Pod->>+Function Pod: gRPC RunFunctionRequest
|
||||||
Function Pod->>+Crossplane Pod: gRPC RunFunctionResponse
|
Function Pod->>+Crossplane Pod: gRPC RunFunctionResponse
|
||||||
|
loop Extra resources needed?
|
||||||
|
Crossplane Pod->>+API Server: Get Extra resources
|
||||||
|
Crossplane Pod->>+Function Pod: gRPC RunFunctionRequest
|
||||||
|
Function Pod->>+Crossplane Pod: gRPC RunFunctionResponse
|
||||||
|
end
|
||||||
Crossplane Pod->>+API Server: Apply desired composed resources
|
Crossplane Pod->>+API Server: Apply desired composed resources
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -493,8 +794,8 @@ You can find detailed schemas for the RunFunctionRequest and RunFunctionResponse
|
||||||
RPCs in the [Buf Schema Registry](https://buf.build/crossplane/crossplane/docs/main:apiextensions.fn.proto.v1beta1).
|
RPCs in the [Buf Schema Registry](https://buf.build/crossplane/crossplane/docs/main:apiextensions.fn.proto.v1beta1).
|
||||||
{{</hint>}}
|
{{</hint>}}
|
||||||
|
|
||||||
When Crossplane calls a function it includes four important things in the
|
When Crossplane calls a function the first time it includes four important
|
||||||
RunFunctionRequest.
|
things in the RunFunctionRequest.
|
||||||
|
|
||||||
1. The __observed state__ of the composite resource, and any composed resources.
|
1. The __observed state__ of the composite resource, and any composed resources.
|
||||||
1. The __desired state__ of the composite resource, and any composed resources.
|
1. The __desired state__ of the composite resource, and any composed resources.
|
||||||
|
|
@ -508,6 +809,18 @@ Most composition functions read the observed state of the composite resource,
|
||||||
and use it to add composed resources to the desired state. This tells Crossplane
|
and use it to add composed resources to the desired state. This tells Crossplane
|
||||||
which composed resources it should create or update.
|
which composed resources it should create or update.
|
||||||
|
|
||||||
|
If the function needs __extra resources__ to determine the desired state it can
|
||||||
|
request any cluster-scoped resource Crossplane already has access to, either by
|
||||||
|
by name or labels through the returned RunFunctionResponse. Crossplane then
|
||||||
|
calls the function again including the requested __extra resources__ and the
|
||||||
|
__context__ returned by the Function itself alongside the same __input__,
|
||||||
|
__observed__ and __desired state__ of the previous RunFunctionRequest. Functions
|
||||||
|
can iteratively request __extra resources__ if needed, but to avoid endlessly
|
||||||
|
looping Crossplane limits the number of iterations to 5. Crossplane considers
|
||||||
|
the function satisfied as soon as the __extra resources__ requests become
|
||||||
|
stable, so the Function returns the same exact request two times in a row.
|
||||||
|
Crossplane errors if stability isn't reached after 5 iterations.
|
||||||
|
|
||||||
{{<hint "tip">}}
|
{{<hint "tip">}}
|
||||||
<!-- vale write-good.Weasel = NO -->
|
<!-- vale write-good.Weasel = NO -->
|
||||||
<!-- Disable Weasel to say "usually", which is correct in this context. -->
|
<!-- Disable Weasel to say "usually", which is correct in this context. -->
|
||||||
|
|
@ -533,7 +846,7 @@ spec:
|
||||||
```
|
```
|
||||||
|
|
||||||
If any composed resources already exist, Crossplane observes them and sends them
|
If any composed resources already exist, Crossplane observes them and sends them
|
||||||
to your function to as part of the observed state.
|
to your function as part of the observed state.
|
||||||
|
|
||||||
Crossplane also observes the connection details of your composite resource and
|
Crossplane also observes the connection details of your composite resource and
|
||||||
any composed resources. It sends them to your function as part of the observed
|
any composed resources. It sends them to your function as part of the observed
|
||||||
|
|
@ -674,27 +987,3 @@ Crossplane can write context too. If you enable the alpha
|
||||||
[composition environment]({{<ref "environment-configs">}}) feature Crossplane
|
[composition environment]({{<ref "environment-configs">}}) feature Crossplane
|
||||||
writes the environment to the top-level context field
|
writes the environment to the top-level context field
|
||||||
`apiextensions.crossplane.io/environment`.
|
`apiextensions.crossplane.io/environment`.
|
||||||
|
|
||||||
## Disable composition functions
|
|
||||||
|
|
||||||
Crossplane enables composition functions by default. Disable support for
|
|
||||||
composition functions by disabling the beta feature flag in Crossplane with
|
|
||||||
`helm install --args`.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
helm install crossplane --namespace crossplane-system crossplane-stable/crossplane \
|
|
||||||
--create-namespace \
|
|
||||||
--set "args='{--enable-composition-functions=false}'"
|
|
||||||
```
|
|
||||||
|
|
||||||
The preceding Helm command installs Crossplane with the composition functions
|
|
||||||
feature flag disabled. Confirm you have disabled composition functions by
|
|
||||||
looking for a log line:
|
|
||||||
|
|
||||||
```shell {copy-lines="1"}
|
|
||||||
kubectl -n crossplane-system logs -l app=crossplane
|
|
||||||
{"level":"info","ts":1674535093.36186,"logger":"crossplane","msg":"Beta feature enabled","flag":"EnableBetaCompositionFunctions"}
|
|
||||||
```
|
|
||||||
|
|
||||||
If you don't see the log line emitted when Crossplane starts, you have disabled
|
|
||||||
composition functions.
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
title: Understanding Connection Details
|
title: Connection Details
|
||||||
weight: 11
|
weight: 110
|
||||||
description: "How to create and manage connection details across Crossplane managed resources, composite resources, Compositions and Claims"
|
description: "How to create and manage connection details across Crossplane managed resources, composite resources, Compositions and Claims"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -9,8 +9,8 @@ Using connection details in Crossplane requires the following components:
|
||||||
* Defining the `writeConnectionSecretsToNamespace` value in the [Composition]({{<ref "/master/concepts/compositions#composite-resource-combined-secret">}}).
|
* Defining the `writeConnectionSecretsToNamespace` value in the [Composition]({{<ref "/master/concepts/compositions#composite-resource-combined-secret">}}).
|
||||||
* Define the `writeConnectionSecretToRef` name and namespace for each resource in the
|
* Define the `writeConnectionSecretToRef` name and namespace for each resource in the
|
||||||
[Composition]({{<ref "/master/concepts/compositions#composed-resource-secrets">}}).
|
[Composition]({{<ref "/master/concepts/compositions#composed-resource-secrets">}}).
|
||||||
* Define the list of secret keys produced by each composed resource with `connectionDetails` in the
|
* Define the list of secret keys produced by each composed resource with in the
|
||||||
[Composition]({{<ref "./compositions#define-secret-keys">}}).
|
[Composition]({{<ref "/master/concepts/compositions">}}).
|
||||||
* Optionally, define the `connectionSecretKeys` in a
|
* Optionally, define the `connectionSecretKeys` in a
|
||||||
[CompositeResourceDefinition]({{<ref "/master/concepts/composite-resource-definitions#manage-connection-secrets">}}).
|
[CompositeResourceDefinition]({{<ref "/master/concepts/composite-resource-definitions#manage-connection-secrets">}}).
|
||||||
|
|
||||||
|
|
@ -63,74 +63,96 @@ spec:
|
||||||
compositeTypeRef:
|
compositeTypeRef:
|
||||||
apiVersion: example.org/v1alpha1
|
apiVersion: example.org/v1alpha1
|
||||||
kind: XSecretTest
|
kind: XSecretTest
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: key
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
apiVersion: iam.aws.upbound.io/v1beta1
|
functionRef:
|
||||||
kind: AccessKey
|
name: function-patch-and-transform
|
||||||
spec:
|
input:
|
||||||
forProvider:
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
userSelector:
|
kind: Resources
|
||||||
matchControllerRef: true
|
resources:
|
||||||
writeConnectionSecretToRef:
|
- name: key
|
||||||
namespace: docs
|
base:
|
||||||
name: key1
|
apiVersion: iam.aws.upbound.io/v1beta1
|
||||||
connectionDetails:
|
kind: AccessKey
|
||||||
- fromConnectionSecretKey: username
|
spec:
|
||||||
- fromConnectionSecretKey: password
|
forProvider:
|
||||||
- fromConnectionSecretKey: attribute.secret
|
userSelector:
|
||||||
- fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
matchControllerRef: true
|
||||||
patches:
|
writeConnectionSecretToRef:
|
||||||
- fromFieldPath: "metadata.uid"
|
namespace: docs
|
||||||
toFieldPath: "spec.writeConnectionSecretToRef.name"
|
name: key1
|
||||||
transforms:
|
connectionDetails:
|
||||||
- type: string
|
- name: user
|
||||||
string:
|
type: FromConnectionSecretKey
|
||||||
fmt: "%s-secret1"
|
|
||||||
- name: user
|
|
||||||
base:
|
|
||||||
apiVersion: iam.aws.upbound.io/v1beta1
|
|
||||||
kind: User
|
|
||||||
spec:
|
|
||||||
forProvider: {}
|
|
||||||
- name: user2
|
|
||||||
base:
|
|
||||||
apiVersion: iam.aws.upbound.io/v1beta1
|
|
||||||
kind: User
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
docs.crossplane.io: user
|
|
||||||
spec:
|
|
||||||
forProvider: {}
|
|
||||||
- name: key2
|
|
||||||
base:
|
|
||||||
apiVersion: iam.aws.upbound.io/v1beta1
|
|
||||||
kind: AccessKey
|
|
||||||
spec:
|
|
||||||
forProvider:
|
|
||||||
userSelector:
|
|
||||||
matchLabels:
|
|
||||||
docs.crossplane.io: user
|
|
||||||
writeConnectionSecretToRef:
|
|
||||||
namespace: docs
|
|
||||||
name: key2
|
|
||||||
connectionDetails:
|
|
||||||
- name: key2-user
|
|
||||||
fromConnectionSecretKey: username
|
fromConnectionSecretKey: username
|
||||||
- name: key2-password
|
- name: password
|
||||||
|
type: FromConnectionSecretKey
|
||||||
fromConnectionSecretKey: password
|
fromConnectionSecretKey: password
|
||||||
- name: key2-secret
|
- name: key
|
||||||
|
type: FromConnectionSecretKey
|
||||||
fromConnectionSecretKey: attribute.secret
|
fromConnectionSecretKey: attribute.secret
|
||||||
- name: key2-smtp
|
- name: smtp
|
||||||
|
type: FromConnectionSecretKey
|
||||||
fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
||||||
patches:
|
patches:
|
||||||
- fromFieldPath: "metadata.uid"
|
- fromFieldPath: "metadata.uid"
|
||||||
toFieldPath: "spec.writeConnectionSecretToRef.name"
|
toFieldPath: "spec.writeConnectionSecretToRef.name"
|
||||||
transforms:
|
transforms:
|
||||||
- type: string
|
- type: string
|
||||||
string:
|
string:
|
||||||
fmt: "%s-secret2"
|
type: Format
|
||||||
```
|
fmt: "%s-secret1"
|
||||||
|
- name: user
|
||||||
|
base:
|
||||||
|
apiVersion: iam.aws.upbound.io/v1beta1
|
||||||
|
kind: User
|
||||||
|
spec:
|
||||||
|
forProvider: {}
|
||||||
|
- name: user2
|
||||||
|
base:
|
||||||
|
apiVersion: iam.aws.upbound.io/v1beta1
|
||||||
|
kind: User
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
docs.crossplane.io: user
|
||||||
|
spec:
|
||||||
|
forProvider: {}
|
||||||
|
- name: key2
|
||||||
|
base:
|
||||||
|
apiVersion: iam.aws.upbound.io/v1beta1
|
||||||
|
kind: AccessKey
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
userSelector:
|
||||||
|
matchLabels:
|
||||||
|
docs.crossplane.io: user
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
namespace: docs
|
||||||
|
name: key2
|
||||||
|
connectionDetails:
|
||||||
|
- name: key2-user
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: username
|
||||||
|
- name: key2-password
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: password
|
||||||
|
- name: key2-secret
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: attribute.secret
|
||||||
|
- name: key2-smtp
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
||||||
|
patches:
|
||||||
|
- fromFieldPath: "metadata.uid"
|
||||||
|
toFieldPath: "spec.writeConnectionSecretToRef.name"
|
||||||
|
transforms:
|
||||||
|
- type: string
|
||||||
|
string:
|
||||||
|
type: Format
|
||||||
|
fmt: "%s-secret2"
|
||||||
|
`` `
|
||||||
{{</expand >}}
|
{{</expand >}}
|
||||||
|
|
||||||
{{<expand "Reference CompositeResourceDefinition" >}}
|
{{<expand "Reference CompositeResourceDefinition" >}}
|
||||||
|
|
@ -284,28 +306,36 @@ apiVersion: apiextensions.crossplane.io/v1
|
||||||
kind: Composition
|
kind: Composition
|
||||||
spec:
|
spec:
|
||||||
writeConnectionSecretsToNamespace: other-namespace
|
writeConnectionSecretsToNamespace: other-namespace
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: key1
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
apiVersion: iam.aws.upbound.io/v1beta1
|
functionRef:
|
||||||
kind: AccessKey
|
name: function-patch-and-transform
|
||||||
spec:
|
input:
|
||||||
forProvider:
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
# Removed for brevity
|
kind: Resources
|
||||||
writeConnectionSecretToRef:
|
resources:
|
||||||
namespace: docs
|
- name: key1
|
||||||
name: key1-secret
|
base:
|
||||||
- name: key2
|
apiVersion: iam.aws.upbound.io/v1beta1
|
||||||
base:
|
kind: AccessKey
|
||||||
apiVersion: iam.aws.upbound.io/v1beta1
|
spec:
|
||||||
kind: AccessKey
|
forProvider:
|
||||||
spec:
|
# Removed for brevity
|
||||||
forProvider:
|
writeConnectionSecretToRef:
|
||||||
# Removed for brevity
|
namespace: docs
|
||||||
writeConnectionSecretToRef:
|
name: key1-secret
|
||||||
namespace: docs
|
- name: key2
|
||||||
name: key2-secret
|
base:
|
||||||
# Removed for brevity
|
apiVersion: iam.aws.upbound.io/v1beta1
|
||||||
|
kind: AccessKey
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
# Removed for brevity
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
namespace: docs
|
||||||
|
name: key2-secret
|
||||||
|
# Removed for brevity
|
||||||
```
|
```
|
||||||
|
|
||||||
After applying a Claim, view the Kubernetes secrets to see three secret objects
|
After applying a Claim, view the Kubernetes secrets to see three secret objects
|
||||||
|
|
@ -364,23 +394,39 @@ apiVersion: apiextensions.crossplane.io/v1
|
||||||
kind: Composition
|
kind: Composition
|
||||||
spec:
|
spec:
|
||||||
writeConnectionSecretsToNamespace: other-namespace
|
writeConnectionSecretsToNamespace: other-namespace
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: key
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
apiVersion: iam.aws.upbound.io/v1beta1
|
functionRef:
|
||||||
kind: AccessKey
|
name: function-patch-and-transform
|
||||||
spec:
|
input:
|
||||||
forProvider:
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
# Removed for brevity
|
kind: Resources
|
||||||
writeConnectionSecretToRef:
|
resources:
|
||||||
namespace: docs
|
- name: key
|
||||||
name: key1
|
base:
|
||||||
connectionDetails:
|
apiVersion: iam.aws.upbound.io/v1beta1
|
||||||
- fromConnectionSecretKey: username
|
kind: AccessKey
|
||||||
- fromConnectionSecretKey: password
|
spec:
|
||||||
- fromConnectionSecretKey: attribute.secret
|
forProvider:
|
||||||
- fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
# Removed for brevity
|
||||||
# Removed for brevity
|
writeConnectionSecretToRef:
|
||||||
|
namespace: docs
|
||||||
|
name: key1
|
||||||
|
connectionDetails:
|
||||||
|
- name: user
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: username
|
||||||
|
- name: password
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: password
|
||||||
|
- name: key
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: attribute.secret
|
||||||
|
- name: smtp
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
||||||
|
# Removed for brevity
|
||||||
```
|
```
|
||||||
|
|
||||||
After applying a Claim the composite resource secret object contains the list of
|
After applying a Claim the composite resource secret object contains the list of
|
||||||
|
|
@ -418,28 +464,39 @@ apiVersion: apiextensions.crossplane.io/v1
|
||||||
kind: Composition
|
kind: Composition
|
||||||
spec:
|
spec:
|
||||||
writeConnectionSecretsToNamespace: other-namespace
|
writeConnectionSecretsToNamespace: other-namespace
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: key
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
kind: AccessKey
|
functionRef:
|
||||||
spec:
|
name: function-patch-and-transform
|
||||||
# Removed for brevity
|
input:
|
||||||
writeConnectionSecretToRef:
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
namespace: docs
|
kind: Resources
|
||||||
name: key1
|
resources:
|
||||||
connectionDetails:
|
- name: key
|
||||||
- fromConnectionSecretKey: username
|
base:
|
||||||
- name: key2
|
kind: AccessKey
|
||||||
base:
|
spec:
|
||||||
kind: AccessKey
|
# Removed for brevity
|
||||||
spec:
|
writeConnectionSecretToRef:
|
||||||
# Removed for brevity
|
namespace: docs
|
||||||
writeConnectionSecretToRef:
|
name: key1
|
||||||
namespace: docs
|
connectionDetails:
|
||||||
name: key2
|
- name: user
|
||||||
connectionDetails:
|
type: FromConnectionSecretKey
|
||||||
- name: key2-user
|
fromConnectionSecretKey: username
|
||||||
fromConnectionSecretKey: username
|
- name: key2
|
||||||
|
base:
|
||||||
|
kind: AccessKey
|
||||||
|
spec:
|
||||||
|
# Removed for brevity
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
namespace: docs
|
||||||
|
name: key2
|
||||||
|
connectionDetails:
|
||||||
|
- name: key2-user
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: username
|
||||||
```
|
```
|
||||||
|
|
||||||
The secret object contains both keys,
|
The secret object contains both keys,
|
||||||
|
|
@ -548,28 +605,39 @@ apiVersion: apiextensions.crossplane.io/v1
|
||||||
kind: Composition
|
kind: Composition
|
||||||
spec:
|
spec:
|
||||||
writeConnectionSecretsToNamespace: other-namespace
|
writeConnectionSecretsToNamespace: other-namespace
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: key
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
kind: AccessKey
|
functionRef:
|
||||||
spec:
|
name: function-patch-and-transform
|
||||||
# Removed for brevity
|
input:
|
||||||
writeConnectionSecretToRef:
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
namespace: docs
|
kind: Resources
|
||||||
name: key1
|
resources:
|
||||||
connectionDetails:
|
- name: key
|
||||||
- fromConnectionSecretKey: username
|
base:
|
||||||
- name: key2
|
kind: AccessKey
|
||||||
base:
|
spec:
|
||||||
kind: AccessKey
|
# Removed for brevity
|
||||||
spec:
|
writeConnectionSecretToRef:
|
||||||
# Removed for brevity
|
namespace: docs
|
||||||
writeConnectionSecretToRef:
|
name: key1
|
||||||
namespace: docs
|
connectionDetails:
|
||||||
name: key2
|
- name: user
|
||||||
connectionDetails:
|
type: FromConnectionSecretKey
|
||||||
- name: key2-user
|
fromConnectionSecretKey: username
|
||||||
fromConnectionSecretKey: username
|
- name: key2
|
||||||
|
base:
|
||||||
|
kind: AccessKey
|
||||||
|
spec:
|
||||||
|
# Removed for brevity
|
||||||
|
writeConnectionSecretToRef:
|
||||||
|
namespace: docs
|
||||||
|
name: key2
|
||||||
|
connectionDetails:
|
||||||
|
- name: key2-user
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: username
|
||||||
```
|
```
|
||||||
|
|
||||||
If a Claim uses a secret, it's stored in the same namespace as the Claim with
|
If a Claim uses a secret, it's stored in the same namespace as the Claim with
|
||||||
|
|
@ -3,7 +3,7 @@ title: Environment Configurations
|
||||||
weight: 75
|
weight: 75
|
||||||
state: alpha
|
state: alpha
|
||||||
alphaVersion: "1.11"
|
alphaVersion: "1.11"
|
||||||
description: "Environment Configurations or EnvironmentConfigs are an in-memory datastore used in patching Compositions"
|
description: "Environment Configurations or EnvironmentConfigs are an in-memory datastore used in Compositions"
|
||||||
---
|
---
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|
@ -13,9 +13,8 @@ TODO: Add Policies
|
||||||
|
|
||||||
A Crossplane EnvironmentConfig is a cluster scoped
|
A Crossplane EnvironmentConfig is a cluster scoped
|
||||||
[ConfigMap](https://kubernetes.io/docs/concepts/configuration/configmap/)-like
|
[ConfigMap](https://kubernetes.io/docs/concepts/configuration/configmap/)-like
|
||||||
resource used
|
resource used by Compositions. Compositions can use the environment to store
|
||||||
by Compositions. Compositions can use the environment to store information from
|
information from individual resources or to apply patches.
|
||||||
individual resources or to apply [patches]({{<ref "patch-and-transform">}}).
|
|
||||||
|
|
||||||
Crossplane supports multiple EnvironmentConfigs, each acting as a unique
|
Crossplane supports multiple EnvironmentConfigs, each acting as a unique
|
||||||
data store.
|
data store.
|
||||||
|
|
@ -220,7 +219,6 @@ spec:
|
||||||
- key: my-label-key
|
- key: my-label-key
|
||||||
type: FromCompositeFieldPath
|
type: FromCompositeFieldPath
|
||||||
valueFromFieldPath: spec.parameters.deploy
|
valueFromFieldPath: spec.parameters.deploy
|
||||||
resources:
|
|
||||||
# Removed for brevity
|
# Removed for brevity
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -347,7 +345,6 @@ spec:
|
||||||
type: FromCompositeFieldPath
|
type: FromCompositeFieldPath
|
||||||
valueFromFieldPath: spec.parameters.deploy
|
valueFromFieldPath: spec.parameters.deploy
|
||||||
fromFieldPathPolicy: Optional
|
fromFieldPathPolicy: Optional
|
||||||
resources:
|
|
||||||
# Removed for brevity
|
# Removed for brevity
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -386,7 +383,6 @@ spec:
|
||||||
type: FromCompositeFieldPath
|
type: FromCompositeFieldPath
|
||||||
valueFromFieldPath: spec.parameters.deploy
|
valueFromFieldPath: spec.parameters.deploy
|
||||||
fromFieldPathPolicy: Optional
|
fromFieldPathPolicy: Optional
|
||||||
resources:
|
|
||||||
# Removed for brevity
|
# Removed for brevity
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -397,87 +393,22 @@ Defining the default value _after_ the label always overwrites the label
|
||||||
value.
|
value.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
## Patching with EnvironmentConfigs
|
## Use EnvironmentConfigs in a Composition
|
||||||
|
|
||||||
When Crossplane creates or updates a composite resource, Crossplane
|
When Crossplane creates or updates a composite resource, it merges all the
|
||||||
merges all the specified EnvironmentConfigs into an in-memory environment.
|
specified EnvironmentConfigs into an in-memory environment.
|
||||||
|
|
||||||
The composite resource can read or write data between the EnvironmentConfig and
|
Crossplane sends the merged, in-memory environment to the composition function
|
||||||
composite resource or between the EnvironmentConfig and individual resources
|
pipeline using the
|
||||||
defined inside the composite resource.
|
[pipeline context]({{<ref "./compositions#function-pipeline-context">}}).
|
||||||
|
It writes the environment to the `apiextensions.crossplane.io/environment`
|
||||||
|
context key.
|
||||||
|
|
||||||
|
Some composition functions can read the environment from the pipeline context
|
||||||
|
and use it to compose resources.
|
||||||
|
|
||||||
{{<hint "tip" >}}
|
{{<hint "tip" >}}
|
||||||
Read about EnvironmentConfig patch types in the
|
The Patch and Transform function can use the environment to patch composed
|
||||||
[Patch and Transform]({{<ref "./patch-and-transform">}}) documentation.
|
resources. Read about EnvironmentConfig patch types in the
|
||||||
|
[Patch and Transform function documentation]({{<ref "../guides/function-patch-and-transform">}}).
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
<!-- these two sections are duplicated in the compositions doc with different header depths -->
|
|
||||||
|
|
||||||
### Patch a composite resource
|
|
||||||
To patch the composite resource use
|
|
||||||
{{< hover label="xrpatch" line="7">}}patches{{</hover>}} inside of the
|
|
||||||
{{< hover label="xrpatch" line="5">}}environment{{</hover>}}.
|
|
||||||
|
|
||||||
Use the
|
|
||||||
{{< hover label="xrpatch" line="5">}}ToCompositeFieldPath{{</hover>}} to copy
|
|
||||||
data from the in-memory environment to the composite resource.
|
|
||||||
Use the
|
|
||||||
{{< hover label="xrpatch" line="5">}}FromCompositeFieldPath{{</hover>}} to copy
|
|
||||||
data from the composite resource to the in-memory environment.
|
|
||||||
|
|
||||||
```yaml {label="xrpatch",copy-lines="none"}
|
|
||||||
apiVersion: apiextensions.crossplane.io/v1
|
|
||||||
kind: Composition
|
|
||||||
# Removed for Brevity
|
|
||||||
spec:
|
|
||||||
environment:
|
|
||||||
# Removed for Brevity
|
|
||||||
patches:
|
|
||||||
- type: ToCompositeFieldPath
|
|
||||||
fromFieldPath: tags
|
|
||||||
toFieldPath: metadata.labels[envTag]
|
|
||||||
- type: FromCompositeFieldPath
|
|
||||||
fromFieldPath: metadata.name
|
|
||||||
toFieldPath: newEnvironmentKey
|
|
||||||
```
|
|
||||||
|
|
||||||
Individual resources can use any data written to the in-memory environment.
|
|
||||||
|
|
||||||
### Patch an individual resource
|
|
||||||
To patch an individual resource, inside the
|
|
||||||
{{<hover label="envpatch" line="16">}}patches{{</hover>}} of the
|
|
||||||
resource, use
|
|
||||||
{{<hover label="envpatch" line="17">}}ToEnvironmentFieldPath{{</hover>}} to copy
|
|
||||||
data from the resource to the in-memory environment.
|
|
||||||
Use {{<hover label="envpatch" line="20">}}FromEnvironmentFieldPath{{</hover>}}
|
|
||||||
to copy data to the resource from the in-memory environment.
|
|
||||||
|
|
||||||
```yaml {label="envpatch",copy-lines="none"}
|
|
||||||
apiVersion: apiextensions.crossplane.io/v1
|
|
||||||
kind: Composition
|
|
||||||
# Removed for Brevity
|
|
||||||
spec:
|
|
||||||
environment:
|
|
||||||
# Removed for Brevity
|
|
||||||
resources:
|
|
||||||
# Removed for Brevity
|
|
||||||
- name: vpc
|
|
||||||
base:
|
|
||||||
apiVersion: ec2.aws.upbound.io/v1beta1
|
|
||||||
kind: VPC
|
|
||||||
spec:
|
|
||||||
forProvider:
|
|
||||||
cidrBlock: 172.16.0.0/16
|
|
||||||
patches:
|
|
||||||
- type: ToEnvironmentFieldPath
|
|
||||||
fromFieldPath: status.atProvider.id
|
|
||||||
toFieldPath: vpcId
|
|
||||||
- type: FromEnvironmentFieldPath
|
|
||||||
fromFieldPath: tags
|
|
||||||
toFieldPath: spec.forProvider.tags
|
|
||||||
```
|
|
||||||
|
|
||||||
The [Patch and Transform]({{<ref "./patch-and-transform">}}) documentation has
|
|
||||||
more information on patching individual resources.
|
|
||||||
|
|
||||||
<!-- End duplicated content -->
|
|
||||||
|
|
@ -183,12 +183,6 @@ spec:
|
||||||
|
|
||||||
Matching by selector is the most flexible matching method.
|
Matching by selector is the most flexible matching method.
|
||||||
|
|
||||||
{{<hint "note" >}}
|
|
||||||
|
|
||||||
The [Compositions]({{<ref "./compositions">}}) section covers the
|
|
||||||
`matchControllerRef` selector.
|
|
||||||
{{</hint >}}
|
|
||||||
|
|
||||||
Use `matchLabels` to match the labels applied to a resource. For example, this
|
Use `matchLabels` to match the labels applied to a resource. For example, this
|
||||||
Subnet resource only matches VPC resources with the label
|
Subnet resource only matches VPC resources with the label
|
||||||
`my-label: label-value`.
|
`my-label: label-value`.
|
||||||
|
|
@ -204,6 +198,100 @@ spec:
|
||||||
my-label: label-value
|
my-label: label-value
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### Matching by controller reference
|
||||||
|
|
||||||
|
Matching a controller reference ensures that the matching resource is part of
|
||||||
|
the same composite resource.
|
||||||
|
|
||||||
|
{{<hint "note" >}}
|
||||||
|
Learn more about composite resources in the
|
||||||
|
[Composite Resources]({{<ref "./composite-resources">}}) section.
|
||||||
|
{{</hint >}}
|
||||||
|
|
||||||
|
Matching only a controller reference simplifies the matching process without
|
||||||
|
requiring labels or more information.
|
||||||
|
|
||||||
|
For example, creating an AWS `InternetGateway` requires a `VPC`.
|
||||||
|
|
||||||
|
The `InternetGateway` could match a label, but every VPC created by this
|
||||||
|
Composition shares the same label.
|
||||||
|
|
||||||
|
Using `matchControllerRef` matches only the VPC created in the same composite
|
||||||
|
resource that created the `InternetGateway`.
|
||||||
|
|
||||||
|
```yaml {label="controller1",copy-lines="none"}
|
||||||
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
|
kind: Resources
|
||||||
|
resources:
|
||||||
|
- base:
|
||||||
|
apiVersion: ec2.aws.upbound.io/v1beta1
|
||||||
|
kind: VPC
|
||||||
|
name: my-vpc
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
# Removed for brevity
|
||||||
|
- base:
|
||||||
|
apiVersion: ec2.aws.upbound.io/v1beta1
|
||||||
|
kind: InternetGateway
|
||||||
|
name: my-gateway
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
vpcIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
```
|
||||||
|
|
||||||
|
Resources can match both labels and a controller reference to match a specific
|
||||||
|
resource in the larger composite resource.
|
||||||
|
|
||||||
|
For example, this Composition creates two `VPC` resources, but the
|
||||||
|
`InternetGateway` must match only one.
|
||||||
|
|
||||||
|
Applying a `label` to the second `VPC` allows the `InternetGateway` to match the
|
||||||
|
label `type: internet` and only match objects in the same composite resource
|
||||||
|
with `matchControllerRef`.
|
||||||
|
|
||||||
|
```yaml {label="controller2",copy-lines="none"}
|
||||||
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
|
kind: Resources
|
||||||
|
resources:
|
||||||
|
- name: my-first-vpc
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.upbound.io/v1beta1
|
||||||
|
kind: VPC
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
type: backend
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
# Removed for brevity
|
||||||
|
- name: my-second-vpc
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.upbound.io/v1beta1
|
||||||
|
kind: VPC
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
type: internet
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
# Removed for brevity
|
||||||
|
- name: my-gateway
|
||||||
|
base:
|
||||||
|
apiVersion: ec2.aws.upbound.io/v1beta1
|
||||||
|
kind: InternetGateway
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
vpcIdSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
matchLabels:
|
||||||
|
type: internet
|
||||||
|
```
|
||||||
|
|
||||||
|
{{<hint "note" >}}
|
||||||
|
These examples use Function Patch and Transform. Learn more about functions and
|
||||||
|
Compositions in the [Compositions]({{<ref "./compositions">}}) section.
|
||||||
|
{{</hint >}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Immutable fields
|
#### Immutable fields
|
||||||
|
|
||||||
|
|
@ -403,8 +491,7 @@ kind: Instance
|
||||||
spec:
|
spec:
|
||||||
forProvider:
|
forProvider:
|
||||||
# Removed for brevity
|
# Removed for brevity
|
||||||
providerConfigRef:
|
providerConfigRef: user-keys
|
||||||
name: user-keys
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml {label="pc"}
|
```yaml {label="pc"}
|
||||||
|
|
@ -625,7 +712,7 @@ kind: RDSInstance
|
||||||
metadata:
|
metadata:
|
||||||
name: my-rds-instance
|
name: my-rds-instance
|
||||||
annotations:
|
annotations:
|
||||||
crossplane.io/external-name: my-custom-namee
|
crossplane.io/external-name: my-custom-name
|
||||||
```
|
```
|
||||||
|
|
||||||
```shell {copy-lines="1"}
|
```shell {copy-lines="1"}
|
||||||
|
|
@ -636,21 +723,143 @@ my-rds-instance True True my-custom-name 11m
|
||||||
|
|
||||||
### Creation annotations
|
### Creation annotations
|
||||||
|
|
||||||
Providers create new managed resources with the
|
When an external system like AWS generates nondeterministic resource names it's
|
||||||
`crossplane.io/external-create-pending` annotation.
|
possible for a provider to create a resource but not record that it did. When
|
||||||
|
this happens the provider can't manage the resource.
|
||||||
|
|
||||||
The Provider applies the `crossplane.io/external-create-succeeded` or
|
{{<hint "tip">}}
|
||||||
`crossplane.io/external-create-failed` annotation after making the external API
|
Crossplane calls resources that a provider creates but doesn't manage _leaked
|
||||||
call and receiving a response.
|
resources_.
|
||||||
|
{{</hint>}}
|
||||||
|
|
||||||
{{<hint "note" >}}
|
Providers set three creation annotations to avoid and detect leaked resources:
|
||||||
If a Provider restarts before creating the `succeed` or `fail` annotations the
|
|
||||||
Provider can't reconcile the managed resource.
|
|
||||||
|
|
||||||
Read Crossplane [issue #3037](https://github.com/crossplane/crossplane/issues/3037#issuecomment-1110142427)
|
* {{<hover label="creation" line="8">}}crossplane.io/external-create-pending{{</hover>}} -
|
||||||
for more details
|
The last time the provider was about to create the resource.
|
||||||
{{< /hint >}}
|
* {{<hover label="creation" line="9">}}crossplane.io/external-create-succeeded{{</hover>}} -
|
||||||
|
The last time the provider successfully created the resource.
|
||||||
|
* `crossplane.io/external-create-failed` - The last time the provider failed to
|
||||||
|
create the resource.
|
||||||
|
|
||||||
|
Use `kubectl get` to view the annotations on a managed resource. For example, an
|
||||||
|
AWS VPC resource:
|
||||||
|
|
||||||
|
```yaml {label="creation" copy-lines="2-9"}
|
||||||
|
$ kubectl get -o yaml vpc my-vpc
|
||||||
|
apiVersion: ec2.aws.upbound.io/v1beta1
|
||||||
|
kind: VPC
|
||||||
|
metadata:
|
||||||
|
name: my-vpc
|
||||||
|
annotations:
|
||||||
|
crossplane.io/external-name: vpc-1234567890abcdef0
|
||||||
|
crossplane.io/external-create-pending: "2023-12-18T21:48:06Z"
|
||||||
|
crossplane.io/external-create-succeeded: "2023-12-18T21:48:40Z"
|
||||||
|
```
|
||||||
|
|
||||||
|
A provider uses the
|
||||||
|
{{<hover label="creation" line="7">}}crossplane.io/external-name{{</hover>}}
|
||||||
|
annotation to lookup a managed resource in an external system.
|
||||||
|
|
||||||
|
The provider looks up the resource in the external system to determine if it
|
||||||
|
exists, and if it matches the managed resource's desired state. If the provider
|
||||||
|
can't find the resource, it creates it.
|
||||||
|
|
||||||
|
Some external systems don't let a provider specify a resource's name when the
|
||||||
|
provider creates it. Instead the external system generates an nondeterministic
|
||||||
|
name and returns it to the provider.
|
||||||
|
|
||||||
|
When the external system generates the resource's name, the provider attempts to
|
||||||
|
save it to the managed resource's `crossplane.io/external-name` annotation. If
|
||||||
|
it doesn't, it _leaks_ the resource.
|
||||||
|
|
||||||
|
A provider can't guarantee that it can save the annotation. The provider could
|
||||||
|
restart or lose network connectivity between creating the resource and saving
|
||||||
|
the annotation.
|
||||||
|
|
||||||
|
A provider can detect that it might have leaked a resource. If the provider
|
||||||
|
thinks it might have leaked a resource, it stops reconciling it until you tell
|
||||||
|
the provider it's safe to proceed.
|
||||||
|
|
||||||
|
{{<hint "important">}}
|
||||||
|
Anytime an external system generates a resource's name there is a risk the
|
||||||
|
provider could leak the resource.
|
||||||
|
|
||||||
|
The safest thing for a provider to do when it detects that it might have leaked
|
||||||
|
a resource is to stop and wait for human intervention.
|
||||||
|
|
||||||
|
This ensures the provider doesn't create duplicates of the leaked resource.
|
||||||
|
Duplicate resources can be costly and dangerous.
|
||||||
|
{{</hint>}}
|
||||||
|
|
||||||
|
When a provider thinks it might have leaked a resource it creates a `cannot
|
||||||
|
determine creation result` event associated with the managed resource. Use
|
||||||
|
`kubectl describe` to see the event.
|
||||||
|
|
||||||
|
```shell {copy-lines="1"}
|
||||||
|
kubectl describe queue my-sqs-queue
|
||||||
|
|
||||||
|
# Removed for brevity
|
||||||
|
|
||||||
|
Events:
|
||||||
|
Type Reason Age From Message
|
||||||
|
---- ------ ---- ---- -------
|
||||||
|
Warning CannotInitializeManagedResource 29m (x19 over 19h) managed/queue.sqs.aws.crossplane.io cannot determine creation result - remove the crossplane.io/external-create-pending annotation if it is safe to proceed
|
||||||
|
```
|
||||||
|
|
||||||
|
Providers use the creation annotations to detect that they might have leaked a
|
||||||
|
resource.
|
||||||
|
|
||||||
|
Each time a provider reconciles a managed resource it checks the resource's
|
||||||
|
creation annotations. If the provider sees a create pending time that's more
|
||||||
|
recent than the most recent create succeeded or create failed time, it knows
|
||||||
|
that it might have leaked a resource.
|
||||||
|
|
||||||
|
{{<hint "note">}}
|
||||||
|
Providers don't remove the creation annotations. They use the timestamps to
|
||||||
|
determine which is most recent. It's normal for a managed resource to have
|
||||||
|
several creation annotations.
|
||||||
|
{{</hint>}}
|
||||||
|
|
||||||
|
The provider knows it might have leaked a resource because it updates all the
|
||||||
|
resource's annotations at the same time. If the provider couldn't update the
|
||||||
|
creation annotations after it created the resource, it also couldn't update the
|
||||||
|
`crossplane.io/external-name` annotation.
|
||||||
|
|
||||||
|
{{<hint "tip">}}
|
||||||
|
If a resource has a `cannot determine creation result` error, inspect the
|
||||||
|
external system.
|
||||||
|
|
||||||
|
Use the timestamp from the `crossplane.io/external-create-pending` annotation to
|
||||||
|
determine when the provider might have leaked a resource. Look for resources
|
||||||
|
created around this time.
|
||||||
|
|
||||||
|
If you find a leaked resource, and it's safe to do so, delete it from the
|
||||||
|
external system.
|
||||||
|
|
||||||
|
Remove the `crossplane.io/external-create-pending` annotation from the managed
|
||||||
|
resource after you're sure no leaked resource exists. This tells the provider to
|
||||||
|
resume reconciliation of and recreate the managed resource.
|
||||||
|
{{</hint>}}
|
||||||
|
|
||||||
|
Providers also use the creation annotations to avoid leaking resources.
|
||||||
|
|
||||||
|
When a provider writes the `crossplane.io/external-create-pending` annotation it
|
||||||
|
knows it's reconciling the latest version of the managed resource. The write
|
||||||
|
would fail if the provider was reconciling an old version of the managed
|
||||||
|
resource.
|
||||||
|
|
||||||
|
If the provider reconciled an old version with an outdated
|
||||||
|
`crossplane.io/external-name` annotation it could mistakenly determine that the
|
||||||
|
resource didn't exist. The provider would create a new resource, and leak the
|
||||||
|
existing one.
|
||||||
|
|
||||||
|
Some external systems have a delay between when a provider creates a resource
|
||||||
|
and when the system reports that it exists. The provider uses the most recent
|
||||||
|
create succeeded time to account for this delay.
|
||||||
|
|
||||||
|
If the provider didn't account for the delay, it could mistakenly determine
|
||||||
|
that the resource didn't exist. The provider would create a new resource, and
|
||||||
|
leak the existing one.
|
||||||
|
|
||||||
### Paused
|
### Paused
|
||||||
Manually applying the `crossplane.io/paused` annotation causes the Provider to
|
Manually applying the `crossplane.io/paused` annotation causes the Provider to
|
||||||
|
|
@ -10,19 +10,19 @@ A _Configuration_ package is an
|
||||||
[Compositions]({{<ref "./compositions" >}}),
|
[Compositions]({{<ref "./compositions" >}}),
|
||||||
[Composite Resource Definitions]({{<ref "./composite-resource-definitions" >}})
|
[Composite Resource Definitions]({{<ref "./composite-resource-definitions" >}})
|
||||||
and any required [Providers]({{<ref "./providers">}}) or
|
and any required [Providers]({{<ref "./providers">}}) or
|
||||||
[Functions]({{<ref "./composition-functions" >}}).
|
[Functions]({{<ref "./compositions" >}}).
|
||||||
|
|
||||||
Configuration packages make your Crossplane configuration fully portable.
|
Configuration packages make your Crossplane configuration fully portable.
|
||||||
|
|
||||||
{{<hint "important" >}}
|
{{<hint "important" >}}
|
||||||
Crossplane [Providers]({{<ref "./providers">}}) and
|
Crossplane [Providers]({{<ref "./providers">}}) and
|
||||||
[Functions]({{<ref "./composition-functions">}}) are also Crossplane packages.
|
[Functions]({{<ref "./compositions">}}) are also Crossplane packages.
|
||||||
|
|
||||||
This document describes how to install and manage configuration packages.
|
This document describes how to install and manage configuration packages.
|
||||||
|
|
||||||
Refer to the
|
Refer to the
|
||||||
[Provider]({{<ref "./providers">}}) and
|
[Provider]({{<ref "./providers">}}) and
|
||||||
[Composition Functions]({{<ref "./composition-functions">}}) chapters for
|
[Composition Functions]({{<ref "./compositions">}}) chapters for
|
||||||
details on their usage of packages.
|
details on their usage of packages.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
@ -33,6 +33,15 @@ Install a Configuration with a Crossplane
|
||||||
the {{<hover line="6" label="install">}}spec.package{{</hover>}} value to the
|
the {{<hover line="6" label="install">}}spec.package{{</hover>}} value to the
|
||||||
location of the configuration package.
|
location of the configuration package.
|
||||||
|
|
||||||
|
{{< hint "important" >}}
|
||||||
|
Beginning with Crossplane version 1.15.0 Crossplane uses the Upbound Marketplace
|
||||||
|
Crossplane package registry at `xpkg.upbound.io` by default for downloading and
|
||||||
|
installing packages.
|
||||||
|
|
||||||
|
Specify the full domain name with the `package` or change the default Crossplane
|
||||||
|
registry with the `--registry` flag on the [Crossplane pod]({{<ref "./pods">}})
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
For example to install the
|
For example to install the
|
||||||
[Upbound AWS reference platform](https://marketplace.upbound.io/configurations/upbound/platform-ref-aws/v0.6.0),
|
[Upbound AWS reference platform](https://marketplace.upbound.io/configurations/upbound/platform-ref-aws/v0.6.0),
|
||||||
|
|
||||||
|
|
@ -243,11 +243,9 @@ The RBAC manager container preforms the following tasks:
|
||||||
them to control their managed resources
|
them to control their managed resources
|
||||||
* allowing the `crossplane` ServiceAccount to create managed resources
|
* allowing the `crossplane` ServiceAccount to create managed resources
|
||||||
* creating ClusterRoles to access Crossplane resources in all namespaces
|
* creating ClusterRoles to access Crossplane resources in all namespaces
|
||||||
* creating Roles to access Crossplane resources in specific namespaces
|
|
||||||
|
|
||||||
Use the [ClusterRoles]({{<ref "#crossplane-clusterroles">}}) to grant access to all Crossplane resources in the
|
Use the [ClusterRoles]({{<ref "#crossplane-clusterroles">}}) to grant access to all Crossplane resources in the
|
||||||
cluster.
|
cluster.
|
||||||
Use the [Roles]({{<ref "#crossplane-roles" >}}) to only grant access to Crossplane Claims.
|
|
||||||
|
|
||||||
#### Crossplane ClusterRoles
|
#### Crossplane ClusterRoles
|
||||||
|
|
||||||
|
|
@ -271,7 +269,7 @@ The `crossplane-admin` ClusterRole has the following permissions:
|
||||||
View the full RBAC policy with
|
View the full RBAC policy with
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl describe clusterrole crossplane:admin
|
kubectl describe clusterrole crossplane-admin
|
||||||
```
|
```
|
||||||
|
|
||||||
##### crossplane-edit
|
##### crossplane-edit
|
||||||
|
|
@ -285,7 +283,7 @@ The `crossplane-edit` ClusterRole has the following permissions:
|
||||||
View the full RBAC policy with
|
View the full RBAC policy with
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl describe clusterrole crossplane:edit
|
kubectl describe clusterrole crossplane-edit
|
||||||
```
|
```
|
||||||
|
|
||||||
##### crossplane-view
|
##### crossplane-view
|
||||||
|
|
@ -298,43 +296,22 @@ The `crossplane-view` ClusterRole has the following permissions:
|
||||||
View the full RBAC policy with
|
View the full RBAC policy with
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl describe clusterrole crossplane:view
|
kubectl describe clusterrole crossplane-view
|
||||||
```
|
```
|
||||||
|
|
||||||
##### crossplane-browse
|
##### crossplane-browse
|
||||||
|
|
||||||
The `crossplane-browse` ClusterRole has the following permissions:
|
The `crossplane-browse` ClusterRole has the following permissions:
|
||||||
|
|
||||||
* read-only access to all Crossplane types
|
* read-only access to Crossplane compositions and XRDs. This allows resource claim
|
||||||
* read-only access to all namespaces and events (even those unrelated to Crossplane).
|
creators to discover and select an appropriate composition.
|
||||||
|
|
||||||
View the full RBAC policy with
|
View the full RBAC policy with
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl describe clusterrole crossplane:browse
|
kubectl describe clusterrole crossplane-browse
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Crossplane Roles
|
|
||||||
By default the RBAC manager creates three Roles in every namespace. These Roles
|
|
||||||
grant access to Claims in a specific namespace. The RBAC manager dynamically
|
|
||||||
updates the Roles to access the specific API endpoints in a Claim.
|
|
||||||
|
|
||||||
{{< hint "note" >}}
|
|
||||||
The specific details of the namespace Roles are beyond this guide. For more
|
|
||||||
information read the [Composite Resource ClusterRole Mechanics](https://github.com/crossplane/crossplane/blob/master/design/design-doc-rbac-manager.md#composite-resource-clusterrole-mechanics)
|
|
||||||
section of the RBAC Manager design document.
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
You can disable these namespace specific roles by configuring the RBAC manager
|
|
||||||
with `--manage=Basic`.
|
|
||||||
|
|
||||||
|
|
||||||
{{< hint "note" >}}
|
|
||||||
|
|
||||||
Instructions for changing Crossplane pod settings during installation are in the
|
|
||||||
[Crossplane Install]({{<ref "../software/install">}}) section.
|
|
||||||
{{< /hint >}}
|
|
||||||
|
|
||||||
## Leader election
|
## Leader election
|
||||||
|
|
||||||
By default only a single Crossplane pod runs in a cluster. If more than one
|
By default only a single Crossplane pod runs in a cluster. If more than one
|
||||||
|
|
@ -47,6 +47,15 @@ Install a Provider with a Crossplane
|
||||||
{{<hover label="install" line="6">}}spec.package{{</hover >}} value to the
|
{{<hover label="install" line="6">}}spec.package{{</hover >}} value to the
|
||||||
location of the provider package.
|
location of the provider package.
|
||||||
|
|
||||||
|
{{< hint "important" >}}
|
||||||
|
Beginning with Crossplane version 1.15.0 Crossplane uses the Upbound Marketplace
|
||||||
|
Crossplane package registry at `xpkg.upbound.io` by default for downloading and
|
||||||
|
installing packages.
|
||||||
|
|
||||||
|
Specify the full domain name with the `package` or change the default Crossplane
|
||||||
|
registry with the `--registry` flag on the [Crossplane pod]({{<ref "./pods">}})
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
For example, to install the
|
For example, to install the
|
||||||
[AWS Community Provider](https://github.com/crossplane-contrib/provider-aws),
|
[AWS Community Provider](https://github.com/crossplane-contrib/provider-aws),
|
||||||
|
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
---
|
||||||
|
title: Server-Side Apply
|
||||||
|
state: alpha
|
||||||
|
alphaVersion: "1.15"
|
||||||
|
weight: 300
|
||||||
|
---
|
||||||
|
|
||||||
|
Crossplane can use server-side apply to sync claims with composite resources
|
||||||
|
(XRs), and to sync composite resources with composed resources.
|
||||||
|
|
||||||
|
When Crossplane uses server-side apply, the Kubernetes API server helps sync
|
||||||
|
resources. Using server-side apply makes syncing more predictable and less
|
||||||
|
buggy.
|
||||||
|
|
||||||
|
{{<hint "tip">}}
|
||||||
|
Server-side apply is a Kubernetes feature. Read more about server-side apply in
|
||||||
|
the [Kubernetes documentation](https://kubernetes.io/docs/reference/using-api/server-side-apply/).
|
||||||
|
{{</hint>}}
|
||||||
|
|
||||||
|
## Use server-side apply to sync claims with composite resources
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Read the [claims documentation]({{<ref "./claims">}}) to learn more about claims
|
||||||
|
and how they relate to composite resources.
|
||||||
|
|
||||||
|
Crossplane can use server-side apply to keep the claim in sync with the
|
||||||
|
composite resource.
|
||||||
|
|
||||||
|
Use the `--enable-ssa-claims` feature flag to enable using server-side apply.
|
||||||
|
Read the [Install Crossplane documentation]({{<ref "../software/install#feature-flags">}})
|
||||||
|
to learn about feature flags.
|
||||||
|
|
||||||
|
If you see fields reappearing after you delete them from a claim's `spec`,
|
||||||
|
enable server-side apply to fix the problem. Enabling server-side apply also
|
||||||
|
fixes the problem where Crossplane doesn't delete labels and annotations from
|
||||||
|
the composite resource when you delete them from the claim.
|
||||||
|
|
||||||
|
{{<hint "important">}}
|
||||||
|
When you enable server-side apply, Crossplane is stricter about how it syncs
|
||||||
|
a claim with its counterpart composite resource:
|
||||||
|
|
||||||
|
- The claim's `metadata` syncs to the composite resource's `metadata`.
|
||||||
|
- The claim's `spec` syncs to the composite resource's `spec`.
|
||||||
|
- The composite resource's `status` syncs to the claim's `status`.
|
||||||
|
|
||||||
|
When you enable server-side apply Crossplane doesn't sync the composite resource's `metadata`
|
||||||
|
and `spec` back to the claim's `metadata` and `spec`. It also doesn't sync the
|
||||||
|
claim's `status` to the composite resource's `status`.
|
||||||
|
{{</hint>}}
|
||||||
|
|
||||||
|
## Use server-side apply to sync claims end-to-end
|
||||||
|
|
||||||
|
To get the full benefit of server-side apply, use the `--enable-ssa-claims`
|
||||||
|
feature flag together with composition functions.
|
||||||
|
|
||||||
|
When you use composition functions, Crossplane uses server side apply to sync
|
||||||
|
composite resources with composed resources. Read more about this in the
|
||||||
|
[composition functions documentation]({{<ref "./compositions#how-composition-functions-work">}}).
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
A(Claim) -- claim server-side apply --> B(Composite Resource)
|
||||||
|
B -- function server-side apply --> C(Composed Resource)
|
||||||
|
B -- function server-side apply --> D(Composed Resource)
|
||||||
|
B -- function server-side apply --> E(Composed Resource)
|
||||||
|
```
|
||||||
|
|
||||||
|
When you use server-side apply end-to-end there is a clear, predictable
|
||||||
|
propagation of fields from claim to composed resources, and back:
|
||||||
|
|
||||||
|
* `metadata` and `spec` flow forwards, from claim to XR to composed resources.
|
||||||
|
* `status` flows backwards, from composed resources to XR to claim.
|
||||||
|
|
||||||
|
{{<hint "important">}}
|
||||||
|
When you use composition functions, Crossplane is stricter about how it syncs
|
||||||
|
composite resources (XRs) with composed resources:
|
||||||
|
|
||||||
|
- The XR's `metadata` syncs to the composed resource's `metadata`.
|
||||||
|
- The XR's `spec` syncs to the composed resource's `spec`.
|
||||||
|
- The composed resource's `status` syncs to the XR's `status`.
|
||||||
|
|
||||||
|
When you use composition functions Crossplane doesn't sync the composed resource's `metadata`
|
||||||
|
and `spec` back to the XR's `metadata` and `spec`.
|
||||||
|
{{</hint>}}
|
||||||
|
|
||||||
|
When Crossplane uses server-side apply end-to-end to sync claims with composed
|
||||||
|
resources, it deletes fields from a composed resource's `spec` when you
|
||||||
|
delete fields from the claim's `spec`.
|
||||||
|
|
||||||
|
When Crossplane uses server-side apply end-to-end it's also able to merge claim
|
||||||
|
fields into complex composed resource fields. Objects and arrays of objects are
|
||||||
|
examples of complex composed resource fields.
|
||||||
|
|
||||||
|
{{<hint "tip">}}
|
||||||
|
Crossplane can only merge complex fields for resources that use server-side
|
||||||
|
apply merge strategy OpenAPI extensions. Read about these extensions in the
|
||||||
|
Kubernetes [server-side apply documentation](https://kubernetes.io/docs/reference/using-api/server-side-apply/#merge-strategy).
|
||||||
|
|
||||||
|
If you find that Crossplane isn't merging managed resource fields, raise an
|
||||||
|
issue against the relevant provider. Ask the provider maintainer to add
|
||||||
|
server-side apply merge strategy extensions to the managed resource.
|
||||||
|
{{</hint>}}
|
||||||
|
|
@ -228,9 +228,9 @@ for the long exponential backoff durations of the Kubernetes garbage collector.
|
||||||
|
|
||||||
A typical use case for Usages is to define a deletion ordering between the
|
A typical use case for Usages is to define a deletion ordering between the
|
||||||
resources in a Composition. The Usages support
|
resources in a Composition. The Usages support
|
||||||
[matching controller reference]({{<ref "./compositions#match-a-controller-reference" >}})
|
[matching controller reference]({{<ref "./managed-resources#matching-by-controller-reference" >}})
|
||||||
in selectors to ensures that the matching resource is in the same composite
|
in selectors to ensures that the matching resource is in the same composite
|
||||||
resource in the same way as [cross-resource referencing]({{<ref "./compositions#cross-resource-references" >}}).
|
resource in the same way as [cross-resource referencing]({{<ref "./managed-resources#referencing-other-resources" >}}).
|
||||||
|
|
||||||
The following example shows a Composition that defines a deletion ordering
|
The following example shows a Composition that defines a deletion ordering
|
||||||
between a `Cluster` and a `Release` resource. The `Usage` blocks deletion of
|
between a `Cluster` and a `Release` resource. The `Usage` blocks deletion of
|
||||||
|
|
@ -240,33 +240,41 @@ the `Cluster` resource until the `Release` resource is successfully deleted.
|
||||||
apiVersion: apiextensions.crossplane.io/v1
|
apiVersion: apiextensions.crossplane.io/v1
|
||||||
kind: Composition
|
kind: Composition
|
||||||
spec:
|
spec:
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: cluster
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
apiVersion: container.gcp.upbound.io/v1beta1
|
functionRef:
|
||||||
kind: Cluster
|
name: function-patch-and-transform
|
||||||
# Removed for brevity
|
input:
|
||||||
- name: release
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
base:
|
kind: Resources
|
||||||
apiVersion: helm.crossplane.io/v1beta1
|
resources:
|
||||||
kind: Release
|
- name: cluster
|
||||||
# Removed for brevity
|
base:
|
||||||
- name: release-uses-cluster
|
|
||||||
base:
|
|
||||||
apiVersion: apiextensions.crossplane.io/v1alpha1
|
|
||||||
kind: Usage
|
|
||||||
spec:
|
|
||||||
replayDeletion: true
|
|
||||||
of:
|
|
||||||
apiVersion: container.gcp.upbound.io/v1beta1
|
apiVersion: container.gcp.upbound.io/v1beta1
|
||||||
kind: Cluster
|
kind: Cluster
|
||||||
resourceSelector:
|
# Removed for brevity
|
||||||
matchControllerRef: true
|
- name: release
|
||||||
by:
|
base:
|
||||||
apiVersion: helm.crossplane.io/v1beta1
|
apiVersion: helm.crossplane.io/v1beta1
|
||||||
kind: Release
|
kind: Release
|
||||||
resourceSelector:
|
# Removed for brevity
|
||||||
matchControllerRef: true
|
- name: release-uses-cluster
|
||||||
|
base:
|
||||||
|
apiVersion: apiextensions.crossplane.io/v1alpha1
|
||||||
|
kind: Usage
|
||||||
|
spec:
|
||||||
|
replayDeletion: true
|
||||||
|
of:
|
||||||
|
apiVersion: container.gcp.upbound.io/v1beta1
|
||||||
|
kind: Cluster
|
||||||
|
resourceSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
by:
|
||||||
|
apiVersion: helm.crossplane.io/v1beta1
|
||||||
|
kind: Release
|
||||||
|
resourceSelector:
|
||||||
|
matchControllerRef: true
|
||||||
```
|
```
|
||||||
|
|
||||||
{{<hint "tip" >}}
|
{{<hint "tip" >}}
|
||||||
|
|
@ -40,12 +40,13 @@ crossplane-stable/crossplane \
|
||||||
--dry-run --debug \
|
--dry-run --debug \
|
||||||
--namespace crossplane-system \
|
--namespace crossplane-system \
|
||||||
--create-namespace
|
--create-namespace
|
||||||
install.go:200: [debug] Original chart version: ""
|
install.go:214: [debug] Original chart version: ""
|
||||||
install.go:217: [debug] CHART PATH: /home/vagrant/.cache/helm/repository/crossplane-1.13.0.tgz
|
install.go:216: [debug] setting version to >0.0.0-0
|
||||||
|
install.go:231: [debug] CHART PATH: /Users/plumbis/Library/Caches/helm/repository/crossplane-1.15.0.tgz
|
||||||
|
|
||||||
NAME: crossplane
|
NAME: crossplane
|
||||||
LAST DEPLOYED: Fri Jul 28 13:57:41 2023
|
LAST DEPLOYED: Mon Feb 12 14:46:15 2024
|
||||||
NAMESPACE: crossplane-system
|
NAMESPACE: default
|
||||||
STATUS: pending-install
|
STATUS: pending-install
|
||||||
REVISION: 1
|
REVISION: 1
|
||||||
TEST SUITE: None
|
TEST SUITE: None
|
||||||
|
|
@ -62,12 +63,15 @@ customLabels: {}
|
||||||
deploymentStrategy: RollingUpdate
|
deploymentStrategy: RollingUpdate
|
||||||
extraEnvVarsCrossplane: {}
|
extraEnvVarsCrossplane: {}
|
||||||
extraEnvVarsRBACManager: {}
|
extraEnvVarsRBACManager: {}
|
||||||
|
extraObjects: []
|
||||||
extraVolumeMountsCrossplane: {}
|
extraVolumeMountsCrossplane: {}
|
||||||
extraVolumesCrossplane: {}
|
extraVolumesCrossplane: {}
|
||||||
|
function:
|
||||||
|
packages: []
|
||||||
hostNetwork: false
|
hostNetwork: false
|
||||||
image:
|
image:
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
repository: crossplane/crossplane
|
repository: xpkg.upbound.io/crossplane/crossplane
|
||||||
tag: ""
|
tag: ""
|
||||||
imagePullSecrets: {}
|
imagePullSecrets: {}
|
||||||
leaderElection: true
|
leaderElection: true
|
||||||
|
|
@ -89,7 +93,6 @@ rbacManager:
|
||||||
args: []
|
args: []
|
||||||
deploy: true
|
deploy: true
|
||||||
leaderElection: true
|
leaderElection: true
|
||||||
managementPolicy: Basic
|
|
||||||
nodeSelector: {}
|
nodeSelector: {}
|
||||||
replicas: 1
|
replicas: 1
|
||||||
skipAggregatedClusterRoles: false
|
skipAggregatedClusterRoles: false
|
||||||
|
|
@ -127,37 +130,6 @@ serviceAccount:
|
||||||
tolerations: []
|
tolerations: []
|
||||||
webhooks:
|
webhooks:
|
||||||
enabled: true
|
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:
|
HOOKS:
|
||||||
MANIFEST:
|
MANIFEST:
|
||||||
|
|
@ -167,44 +139,64 @@ apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: rbac-manager
|
name: rbac-manager
|
||||||
namespace: crossplane-system
|
namespace: default
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/serviceaccount.yaml
|
# Source: crossplane/templates/serviceaccount.yaml
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: crossplane
|
name: crossplane
|
||||||
namespace: crossplane-system
|
namespace: default
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/secret.yaml
|
# Source: crossplane/templates/secret.yaml
|
||||||
# The reason this is created empty and filled by the init container is that it's
|
# The reason this is created empty and filled by the init container is we want
|
||||||
# mounted by the actual container, so if it wasn't created by Helm, then the
|
# to manage the lifecycle of the secret via Helm. This way whenever Crossplane
|
||||||
# deployment wouldn't be deployed at all with secret to mount not found error.
|
# is deleted, the secret is deleted as well.
|
||||||
# In addition, Helm would delete this secret after uninstallation so the new
|
|
||||||
# installation of Crossplane would use its own certificate.
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
name: webhook-tls-secret
|
name: crossplane-root-ca
|
||||||
namespace: crossplane-system
|
namespace: default
|
||||||
|
type: Opaque
|
||||||
|
---
|
||||||
|
# Source: crossplane/templates/secret.yaml
|
||||||
|
# The reason this is created empty and filled by the init container is we want
|
||||||
|
# to manage the lifecycle of the secret via Helm. This way whenever Crossplane
|
||||||
|
# is deleted, the secret is deleted as well.
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: crossplane-tls-server
|
||||||
|
namespace: default
|
||||||
|
type: Opaque
|
||||||
|
---
|
||||||
|
# Source: crossplane/templates/secret.yaml
|
||||||
|
# The reason this is created empty and filled by the init container is we want
|
||||||
|
# to manage the lifecycle of the secret via Helm. This way whenever Crossplane
|
||||||
|
# is deleted, the secret is deleted as well.
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: crossplane-tls-client
|
||||||
|
namespace: default
|
||||||
type: Opaque
|
type: Opaque
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/clusterrole.yaml
|
# Source: crossplane/templates/clusterrole.yaml
|
||||||
|
|
@ -214,13 +206,13 @@ metadata:
|
||||||
name: crossplane
|
name: crossplane
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
aggregationRule:
|
aggregationRule:
|
||||||
clusterRoleSelectors:
|
clusterRoleSelectors:
|
||||||
- matchLabels:
|
- matchLabels:
|
||||||
|
|
@ -233,13 +225,13 @@ metadata:
|
||||||
name: crossplane:system:aggregate-to-crossplane
|
name: crossplane:system:aggregate-to-crossplane
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
crossplane.io/scope: "system"
|
crossplane.io/scope: "system"
|
||||||
rbac.crossplane.io/aggregate-to-crossplane: "true"
|
rbac.crossplane.io/aggregate-to-crossplane: "true"
|
||||||
rules:
|
rules:
|
||||||
|
|
@ -256,6 +248,7 @@ rules:
|
||||||
- apiextensions.k8s.io
|
- apiextensions.k8s.io
|
||||||
resources:
|
resources:
|
||||||
- customresourcedefinitions
|
- customresourcedefinitions
|
||||||
|
- customresourcedefinitions/status
|
||||||
verbs:
|
verbs:
|
||||||
- "*"
|
- "*"
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
|
|
@ -333,13 +326,13 @@ metadata:
|
||||||
name: crossplane:allowed-provider-permissions
|
name: crossplane:allowed-provider-permissions
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
aggregationRule:
|
aggregationRule:
|
||||||
clusterRoleSelectors:
|
clusterRoleSelectors:
|
||||||
- matchLabels:
|
- matchLabels:
|
||||||
|
|
@ -352,13 +345,13 @@ metadata:
|
||||||
name: crossplane-rbac-manager
|
name: crossplane-rbac-manager
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- ""
|
- ""
|
||||||
|
|
@ -373,11 +366,18 @@ rules:
|
||||||
- ""
|
- ""
|
||||||
resources:
|
resources:
|
||||||
- namespaces
|
- namespaces
|
||||||
- serviceaccounts
|
|
||||||
verbs:
|
verbs:
|
||||||
- get
|
- get
|
||||||
- list
|
- list
|
||||||
- watch
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
# The RBAC manager creates a series of RBAC roles for each namespace it sees.
|
# The RBAC manager creates a series of RBAC roles for each namespace it sees.
|
||||||
# These RBAC roles are controlled (in the owner reference sense) by the namespace.
|
# These RBAC roles are controlled (in the owner reference sense) by the namespace.
|
||||||
# The RBAC manager needs permission to set finalizers on Namespaces in order to
|
# The RBAC manager needs permission to set finalizers on Namespaces in order to
|
||||||
|
|
@ -486,13 +486,13 @@ metadata:
|
||||||
name: crossplane-admin
|
name: crossplane-admin
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
aggregationRule:
|
aggregationRule:
|
||||||
clusterRoleSelectors:
|
clusterRoleSelectors:
|
||||||
- matchLabels:
|
- matchLabels:
|
||||||
|
|
@ -505,13 +505,13 @@ metadata:
|
||||||
name: crossplane-edit
|
name: crossplane-edit
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
aggregationRule:
|
aggregationRule:
|
||||||
clusterRoleSelectors:
|
clusterRoleSelectors:
|
||||||
- matchLabels:
|
- matchLabels:
|
||||||
|
|
@ -524,13 +524,13 @@ metadata:
|
||||||
name: crossplane-view
|
name: crossplane-view
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
aggregationRule:
|
aggregationRule:
|
||||||
clusterRoleSelectors:
|
clusterRoleSelectors:
|
||||||
- matchLabels:
|
- matchLabels:
|
||||||
|
|
@ -543,13 +543,13 @@ metadata:
|
||||||
name: crossplane-browse
|
name: crossplane-browse
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
aggregationRule:
|
aggregationRule:
|
||||||
clusterRoleSelectors:
|
clusterRoleSelectors:
|
||||||
- matchLabels:
|
- matchLabels:
|
||||||
|
|
@ -563,13 +563,13 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
rbac.crossplane.io/aggregate-to-admin: "true"
|
rbac.crossplane.io/aggregate-to-admin: "true"
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
rules:
|
rules:
|
||||||
# Crossplane administrators have access to view events.
|
# Crossplane administrators have access to view events.
|
||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
|
|
@ -598,7 +598,7 @@ rules:
|
||||||
verbs: ["*"]
|
verbs: ["*"]
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- pkg.crossplane.io
|
- pkg.crossplane.io
|
||||||
resources: [locks, providers, configurations, providerrevisions, configurationrevisions]
|
resources: ["*"]
|
||||||
verbs: ["*"]
|
verbs: ["*"]
|
||||||
# Crossplane administrators have access to view CRDs in order to debug XRDs.
|
# Crossplane administrators have access to view CRDs in order to debug XRDs.
|
||||||
- apiGroups: [apiextensions.k8s.io]
|
- apiGroups: [apiextensions.k8s.io]
|
||||||
|
|
@ -613,13 +613,13 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
rbac.crossplane.io/aggregate-to-edit: "true"
|
rbac.crossplane.io/aggregate-to-edit: "true"
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
rules:
|
rules:
|
||||||
# Crossplane editors have access to view events.
|
# Crossplane editors have access to view events.
|
||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
|
|
@ -641,7 +641,7 @@ rules:
|
||||||
verbs: ["*"]
|
verbs: ["*"]
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- pkg.crossplane.io
|
- pkg.crossplane.io
|
||||||
resources: [locks, providers, configurations, providerrevisions, configurationrevisions]
|
resources: ["*"]
|
||||||
verbs: ["*"]
|
verbs: ["*"]
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
||||||
|
|
@ -652,13 +652,13 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
rbac.crossplane.io/aggregate-to-view: "true"
|
rbac.crossplane.io/aggregate-to-view: "true"
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
rules:
|
rules:
|
||||||
# Crossplane viewers have access to view events.
|
# Crossplane viewers have access to view events.
|
||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
|
|
@ -675,7 +675,7 @@ rules:
|
||||||
verbs: [get, list, watch]
|
verbs: [get, list, watch]
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- pkg.crossplane.io
|
- pkg.crossplane.io
|
||||||
resources: [locks, providers, configurations, providerrevisions, configurationrevisions]
|
resources: ["*"]
|
||||||
verbs: [get, list, watch]
|
verbs: [get, list, watch]
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
||||||
|
|
@ -686,13 +686,13 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
rbac.crossplane.io/aggregate-to-browse: "true"
|
rbac.crossplane.io/aggregate-to-browse: "true"
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
rules:
|
rules:
|
||||||
# Crossplane browsers have access to view events.
|
# Crossplane browsers have access to view events.
|
||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
|
|
@ -706,94 +706,6 @@ rules:
|
||||||
resources: ["*"]
|
resources: ["*"]
|
||||||
verbs: [get, list, watch]
|
verbs: [get, list, watch]
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
|
||||||
# The below ClusterRoles are aggregated to the namespaced RBAC roles created by
|
|
||||||
# the Crossplane RBAC manager when it is running in --manage=All mode.
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: crossplane:aggregate-to-ns-admin
|
|
||||||
labels:
|
|
||||||
rbac.crossplane.io/aggregate-to-ns-admin: "true"
|
|
||||||
rbac.crossplane.io/base-of-ns-admin: "true"
|
|
||||||
app: crossplane
|
|
||||||
helm.sh/chart: crossplane-1.13.0
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
|
||||||
app.kubernetes.io/part-of: crossplane
|
|
||||||
app.kubernetes.io/name: crossplane
|
|
||||||
app.kubernetes.io/instance: crossplane
|
|
||||||
app.kubernetes.io/version: "1.13.0"
|
|
||||||
rules:
|
|
||||||
# Crossplane namespace admins have access to view events.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: [events]
|
|
||||||
verbs: [get, list, watch]
|
|
||||||
# Crossplane namespace admins may need to read or otherwise interact with
|
|
||||||
# resource claim connection secrets.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: [secrets]
|
|
||||||
verbs: ["*"]
|
|
||||||
# Crossplane namespace admins have access to view the roles that they may be
|
|
||||||
# able to grant to other subjects.
|
|
||||||
- apiGroups: [rbac.authorization.k8s.io]
|
|
||||||
resources: [roles]
|
|
||||||
verbs: [get, list, watch]
|
|
||||||
# Crossplane namespace admins have access to grant the access they have to other
|
|
||||||
# subjects.
|
|
||||||
- apiGroups: [rbac.authorization.k8s.io]
|
|
||||||
resources: [rolebindings]
|
|
||||||
verbs: ["*"]
|
|
||||||
---
|
|
||||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: crossplane:aggregate-to-ns-edit
|
|
||||||
labels:
|
|
||||||
rbac.crossplane.io/aggregate-to-ns-edit: "true"
|
|
||||||
rbac.crossplane.io/base-of-ns-edit: "true"
|
|
||||||
app: crossplane
|
|
||||||
helm.sh/chart: crossplane-1.13.0
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
|
||||||
app.kubernetes.io/part-of: crossplane
|
|
||||||
app.kubernetes.io/name: crossplane
|
|
||||||
app.kubernetes.io/instance: crossplane
|
|
||||||
app.kubernetes.io/version: "1.13.0"
|
|
||||||
rules:
|
|
||||||
# Crossplane namespace editors have access to view events.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: [events]
|
|
||||||
verbs: [get, list, watch]
|
|
||||||
# Crossplane namespace editors may need to read or otherwise interact with
|
|
||||||
# resource claim connection secrets.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: [secrets]
|
|
||||||
verbs: ["*"]
|
|
||||||
---
|
|
||||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: crossplane:aggregate-to-ns-view
|
|
||||||
labels:
|
|
||||||
rbac.crossplane.io/aggregate-to-ns-view: "true"
|
|
||||||
rbac.crossplane.io/base-of-ns-view: "true"
|
|
||||||
app: crossplane
|
|
||||||
helm.sh/chart: crossplane-1.13.0
|
|
||||||
app.kubernetes.io/managed-by: Helm
|
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
|
||||||
app.kubernetes.io/part-of: crossplane
|
|
||||||
app.kubernetes.io/name: crossplane
|
|
||||||
app.kubernetes.io/instance: crossplane
|
|
||||||
app.kubernetes.io/version: "1.13.0"
|
|
||||||
rules:
|
|
||||||
# Crossplane namespace viewers have access to view events.
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: [events]
|
|
||||||
verbs: [get, list, watch]
|
|
||||||
---
|
|
||||||
# Source: crossplane/templates/clusterrolebinding.yaml
|
# Source: crossplane/templates/clusterrolebinding.yaml
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: ClusterRoleBinding
|
kind: ClusterRoleBinding
|
||||||
|
|
@ -801,13 +713,13 @@ metadata:
|
||||||
name: crossplane
|
name: crossplane
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
|
|
@ -815,7 +727,7 @@ roleRef:
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: crossplane
|
name: crossplane
|
||||||
namespace: crossplane-system
|
namespace: default
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/rbac-manager-clusterrolebinding.yaml
|
# Source: crossplane/templates/rbac-manager-clusterrolebinding.yaml
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
|
@ -824,13 +736,13 @@ metadata:
|
||||||
name: crossplane-rbac-manager
|
name: crossplane-rbac-manager
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
|
|
@ -838,7 +750,7 @@ roleRef:
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
name: rbac-manager
|
name: rbac-manager
|
||||||
namespace: crossplane-system
|
namespace: default
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
|
@ -847,13 +759,13 @@ metadata:
|
||||||
name: crossplane-admin
|
name: crossplane-admin
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: ClusterRole
|
||||||
|
|
@ -868,17 +780,17 @@ apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: crossplane-webhooks
|
name: crossplane-webhooks
|
||||||
namespace: crossplane-system
|
namespace: default
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
release: crossplane
|
release: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
|
|
@ -893,17 +805,17 @@ apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: crossplane
|
name: crossplane
|
||||||
namespace: crossplane-system
|
namespace: default
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
release: crossplane
|
release: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
|
|
@ -917,20 +829,18 @@ spec:
|
||||||
labels:
|
labels:
|
||||||
app: crossplane
|
app: crossplane
|
||||||
release: crossplane
|
release: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
spec:
|
spec:
|
||||||
securityContext:
|
|
||||||
{}
|
|
||||||
serviceAccountName: crossplane
|
serviceAccountName: crossplane
|
||||||
hostNetwork: false
|
hostNetwork: false
|
||||||
initContainers:
|
initContainers:
|
||||||
- image: "crossplane/crossplane:v1.14.0"
|
- image: "xpkg.upbound.io/crossplane/crossplane:v1.15.0"
|
||||||
args:
|
args:
|
||||||
- core
|
- core
|
||||||
- init
|
- init
|
||||||
|
|
@ -954,11 +864,13 @@ spec:
|
||||||
resourceFieldRef:
|
resourceFieldRef:
|
||||||
containerName: crossplane-init
|
containerName: crossplane-init
|
||||||
resource: limits.cpu
|
resource: limits.cpu
|
||||||
|
divisor: "1"
|
||||||
- name: GOMEMLIMIT
|
- name: GOMEMLIMIT
|
||||||
valueFrom:
|
valueFrom:
|
||||||
resourceFieldRef:
|
resourceFieldRef:
|
||||||
containerName: crossplane-init
|
containerName: crossplane-init
|
||||||
resource: limits.memory
|
resource: limits.memory
|
||||||
|
divisor: "1"
|
||||||
- name: POD_NAMESPACE
|
- name: POD_NAMESPACE
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
|
|
@ -967,8 +879,6 @@ spec:
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
fieldPath: spec.serviceAccountName
|
fieldPath: spec.serviceAccountName
|
||||||
- name: "WEBHOOK_TLS_SECRET_NAME"
|
|
||||||
value: webhook-tls-secret
|
|
||||||
- name: "WEBHOOK_SERVICE_NAME"
|
- name: "WEBHOOK_SERVICE_NAME"
|
||||||
value: crossplane-webhooks
|
value: crossplane-webhooks
|
||||||
- name: "WEBHOOK_SERVICE_NAMESPACE"
|
- name: "WEBHOOK_SERVICE_NAMESPACE"
|
||||||
|
|
@ -977,8 +887,14 @@ spec:
|
||||||
fieldPath: metadata.namespace
|
fieldPath: metadata.namespace
|
||||||
- name: "WEBHOOK_SERVICE_PORT"
|
- name: "WEBHOOK_SERVICE_PORT"
|
||||||
value: "9443"
|
value: "9443"
|
||||||
|
- name: "TLS_CA_SECRET_NAME"
|
||||||
|
value: crossplane-root-ca
|
||||||
|
- name: "TLS_SERVER_SECRET_NAME"
|
||||||
|
value: crossplane-tls-server
|
||||||
|
- name: "TLS_CLIENT_SECRET_NAME"
|
||||||
|
value: crossplane-tls-client
|
||||||
containers:
|
containers:
|
||||||
- image: "crossplane/crossplane:v1.14.0"
|
- image: "xpkg.upbound.io/crossplane/crossplane:v1.15.0"
|
||||||
args:
|
args:
|
||||||
- core
|
- core
|
||||||
- start
|
- start
|
||||||
|
|
@ -991,7 +907,14 @@ spec:
|
||||||
requests:
|
requests:
|
||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 256Mi
|
memory: 256Mi
|
||||||
|
startupProbe:
|
||||||
|
failureThreshold: 30
|
||||||
|
periodSeconds: 2
|
||||||
|
tcpSocket:
|
||||||
|
port: readyz
|
||||||
ports:
|
ports:
|
||||||
|
- name: readyz
|
||||||
|
containerPort: 8081
|
||||||
- name: webhooks
|
- name: webhooks
|
||||||
containerPort: 9443
|
containerPort: 9443
|
||||||
securityContext:
|
securityContext:
|
||||||
|
|
@ -1005,11 +928,13 @@ spec:
|
||||||
resourceFieldRef:
|
resourceFieldRef:
|
||||||
containerName: crossplane
|
containerName: crossplane
|
||||||
resource: limits.cpu
|
resource: limits.cpu
|
||||||
|
divisor: "1"
|
||||||
- name: GOMEMLIMIT
|
- name: GOMEMLIMIT
|
||||||
valueFrom:
|
valueFrom:
|
||||||
resourceFieldRef:
|
resourceFieldRef:
|
||||||
containerName: crossplane
|
containerName: crossplane
|
||||||
resource: limits.memory
|
resource: limits.memory
|
||||||
|
divisor: "1"
|
||||||
- name: POD_NAMESPACE
|
- name: POD_NAMESPACE
|
||||||
valueFrom:
|
valueFrom:
|
||||||
fieldRef:
|
fieldRef:
|
||||||
|
|
@ -1020,47 +945,49 @@ spec:
|
||||||
fieldPath: spec.serviceAccountName
|
fieldPath: spec.serviceAccountName
|
||||||
- name: LEADER_ELECTION
|
- name: LEADER_ELECTION
|
||||||
value: "true"
|
value: "true"
|
||||||
- name: "WEBHOOK_TLS_SECRET_NAME"
|
- name: "TLS_SERVER_SECRET_NAME"
|
||||||
value: webhook-tls-secret
|
value: crossplane-tls-server
|
||||||
- name: "WEBHOOK_TLS_CERT_DIR"
|
- name: "TLS_SERVER_CERTS_DIR"
|
||||||
value: /webhook/tls
|
value: /tls/server
|
||||||
|
- name: "TLS_CLIENT_SECRET_NAME"
|
||||||
|
value: crossplane-tls-client
|
||||||
|
- name: "TLS_CLIENT_CERTS_DIR"
|
||||||
|
value: /tls/client
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- mountPath: /cache
|
- mountPath: /cache
|
||||||
name: package-cache
|
name: package-cache
|
||||||
- mountPath: /webhook/tls
|
- mountPath: /tls/server
|
||||||
name: webhook-tls-secret
|
name: tls-server-certs
|
||||||
|
- mountPath: /tls/client
|
||||||
|
name: tls-client-certs
|
||||||
volumes:
|
volumes:
|
||||||
- name: package-cache
|
- name: package-cache
|
||||||
emptyDir:
|
emptyDir:
|
||||||
medium:
|
medium:
|
||||||
sizeLimit: 20Mi
|
sizeLimit: 20Mi
|
||||||
- name: webhook-tls-secret
|
- name: tls-server-certs
|
||||||
secret:
|
secret:
|
||||||
# NOTE(muvaf): The tls.crt is used both by the server (requires it to
|
secretName: crossplane-tls-server
|
||||||
# be a single cert) and the caBundle fields of webhook configs and CRDs
|
- name: tls-client-certs
|
||||||
# which can accept a whole bundle of certificates. In order to meet
|
secret:
|
||||||
# the requirements of both, we require a single certificate instead of
|
secretName: crossplane-tls-client
|
||||||
# a bundle.
|
|
||||||
# It's assumed that initializer generates this anyway, so it should be
|
|
||||||
# fine.
|
|
||||||
secretName: webhook-tls-secret
|
|
||||||
---
|
---
|
||||||
# Source: crossplane/templates/rbac-manager-deployment.yaml
|
# Source: crossplane/templates/rbac-manager-deployment.yaml
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: crossplane-rbac-manager
|
name: crossplane-rbac-manager
|
||||||
namespace: crossplane-system
|
namespace: default
|
||||||
labels:
|
labels:
|
||||||
app: crossplane-rbac-manager
|
app: crossplane-rbac-manager
|
||||||
release: crossplane
|
release: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
|
|
@ -1074,19 +1001,17 @@ spec:
|
||||||
labels:
|
labels:
|
||||||
app: crossplane-rbac-manager
|
app: crossplane-rbac-manager
|
||||||
release: crossplane
|
release: crossplane
|
||||||
helm.sh/chart: crossplane-1.13.0
|
helm.sh/chart: crossplane-1.15.0
|
||||||
app.kubernetes.io/managed-by: Helm
|
app.kubernetes.io/managed-by: Helm
|
||||||
app.kubernetes.io/component: cloud-infrastructure-controller
|
app.kubernetes.io/component: cloud-infrastructure-controller
|
||||||
app.kubernetes.io/part-of: crossplane
|
app.kubernetes.io/part-of: crossplane
|
||||||
app.kubernetes.io/name: crossplane
|
app.kubernetes.io/name: crossplane
|
||||||
app.kubernetes.io/instance: crossplane
|
app.kubernetes.io/instance: crossplane
|
||||||
app.kubernetes.io/version: "1.13.0"
|
app.kubernetes.io/version: "1.15.0"
|
||||||
spec:
|
spec:
|
||||||
securityContext:
|
|
||||||
{}
|
|
||||||
serviceAccountName: rbac-manager
|
serviceAccountName: rbac-manager
|
||||||
initContainers:
|
initContainers:
|
||||||
- image: "crossplane/crossplane:v1.14.0"
|
- image: "xpkg.upbound.io/crossplane/crossplane:v1.15.0"
|
||||||
args:
|
args:
|
||||||
- rbac
|
- rbac
|
||||||
- init
|
- init
|
||||||
|
|
@ -1116,11 +1041,10 @@ spec:
|
||||||
containerName: crossplane-init
|
containerName: crossplane-init
|
||||||
resource: limits.memory
|
resource: limits.memory
|
||||||
containers:
|
containers:
|
||||||
- image: "crossplane/crossplane:v1.14.0"
|
- image: "xpkg.upbound.io/crossplane/crossplane:v1.15.0"
|
||||||
args:
|
args:
|
||||||
- rbac
|
- rbac
|
||||||
- start
|
- start
|
||||||
- --manage=Basic
|
|
||||||
- --provider-clusterrole=crossplane:allowed-provider-permissions
|
- --provider-clusterrole=crossplane:allowed-provider-permissions
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
name: crossplane
|
name: crossplane
|
||||||
|
|
@ -1155,10 +1079,10 @@ Release: crossplane
|
||||||
|
|
||||||
Chart Name: crossplane
|
Chart Name: crossplane
|
||||||
Chart Description: Crossplane is an open source Kubernetes add-on that enables platform teams to assemble infrastructure from multiple vendors, and expose higher level self-service APIs for application teams to consume.
|
Chart Description: Crossplane is an open source Kubernetes add-on that enables platform teams to assemble infrastructure from multiple vendors, and expose higher level self-service APIs for application teams to consume.
|
||||||
Chart Version: 1.13.0
|
Chart Version: 1.15.0
|
||||||
Chart Application Version: 1.13.0
|
Chart Application Version: 1.15.0
|
||||||
|
|
||||||
Kube Version: v1.27.4
|
Kube Version: v1.27.3
|
||||||
```
|
```
|
||||||
{{< /expand >}}
|
{{< /expand >}}
|
||||||
|
|
||||||
|
|
@ -1189,9 +1113,13 @@ compositeresourcedefinitions xrd,xrds apiextensions.crossplane.io/v1
|
||||||
compositionrevisions comprev apiextensions.crossplane.io/v1 false CompositionRevision
|
compositionrevisions comprev apiextensions.crossplane.io/v1 false CompositionRevision
|
||||||
compositions comp apiextensions.crossplane.io/v1 false Composition
|
compositions comp apiextensions.crossplane.io/v1 false Composition
|
||||||
environmentconfigs envcfg apiextensions.crossplane.io/v1alpha1 false EnvironmentConfig
|
environmentconfigs envcfg apiextensions.crossplane.io/v1alpha1 false EnvironmentConfig
|
||||||
|
usages apiextensions.crossplane.io/v1alpha1 false Usage
|
||||||
configurationrevisions pkg.crossplane.io/v1 false ConfigurationRevision
|
configurationrevisions pkg.crossplane.io/v1 false ConfigurationRevision
|
||||||
configurations pkg.crossplane.io/v1 false Configuration
|
configurations pkg.crossplane.io/v1 false Configuration
|
||||||
controllerconfigs pkg.crossplane.io/v1alpha1 false ControllerConfig
|
controllerconfigs pkg.crossplane.io/v1alpha1 false ControllerConfig
|
||||||
|
deploymentruntimeconfigs pkg.crossplane.io/v1beta1 false DeploymentRuntimeConfig
|
||||||
|
functionrevisions pkg.crossplane.io/v1beta1 false FunctionRevision
|
||||||
|
functions pkg.crossplane.io/v1beta1 false Function
|
||||||
locks pkg.crossplane.io/v1beta1 false Lock
|
locks pkg.crossplane.io/v1beta1 false Lock
|
||||||
providerrevisions pkg.crossplane.io/v1 false ProviderRevision
|
providerrevisions pkg.crossplane.io/v1 false ProviderRevision
|
||||||
providers pkg.crossplane.io/v1 false Provider
|
providers pkg.crossplane.io/v1 false Provider
|
||||||
|
|
@ -57,7 +57,7 @@ After installing Crossplane use `kubectl get crds` to view the Crossplane
|
||||||
installed CRDs.
|
installed CRDs.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl get crds
|
❯ kubectl get crd
|
||||||
NAME
|
NAME
|
||||||
compositeresourcedefinitions.apiextensions.crossplane.io
|
compositeresourcedefinitions.apiextensions.crossplane.io
|
||||||
compositionrevisions.apiextensions.crossplane.io
|
compositionrevisions.apiextensions.crossplane.io
|
||||||
|
|
@ -65,10 +65,15 @@ compositions.apiextensions.crossplane.io
|
||||||
configurationrevisions.pkg.crossplane.io
|
configurationrevisions.pkg.crossplane.io
|
||||||
configurations.pkg.crossplane.io
|
configurations.pkg.crossplane.io
|
||||||
controllerconfigs.pkg.crossplane.io
|
controllerconfigs.pkg.crossplane.io
|
||||||
|
deploymentruntimeconfigs.pkg.crossplane.io
|
||||||
|
environmentconfigs.apiextensions.crossplane.io
|
||||||
|
functionrevisions.pkg.crossplane.io
|
||||||
|
functions.pkg.crossplane.io
|
||||||
locks.pkg.crossplane.io
|
locks.pkg.crossplane.io
|
||||||
providerrevisions.pkg.crossplane.io
|
providerrevisions.pkg.crossplane.io
|
||||||
providers.pkg.crossplane.io
|
providers.pkg.crossplane.io
|
||||||
storeconfigs.secrets.crossplane.io
|
storeconfigs.secrets.crossplane.io
|
||||||
|
usages.apiextensions.crossplane.io
|
||||||
```
|
```
|
||||||
{{< /expand >}}
|
{{< /expand >}}
|
||||||
|
|
||||||
|
|
@ -220,7 +225,7 @@ metadata:
|
||||||
spec:
|
spec:
|
||||||
compositeTypeRef:
|
compositeTypeRef:
|
||||||
apiVersion: test.example.org/v1alpha1
|
apiVersion: test.example.org/v1alpha1
|
||||||
kind: myComputeResource
|
kind: MyComputeResource
|
||||||
# Removed for brevity
|
# Removed for brevity
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -230,9 +235,9 @@ label="comp" line="8">}}kind{{< /hover >}}.
|
||||||
|
|
||||||
```yaml {label="xr"}
|
```yaml {label="xr"}
|
||||||
apiVersion: test.example.org/v1alpha1
|
apiVersion: test.example.org/v1alpha1
|
||||||
kind: myComputeResource
|
kind: MyComputeResource
|
||||||
metadata:
|
metadata:
|
||||||
name: myResource
|
name: my-resource
|
||||||
spec:
|
spec:
|
||||||
storage: "large"
|
storage: "large"
|
||||||
```
|
```
|
||||||
|
|
@ -305,7 +310,7 @@ to define the _Composite Resource_ {{<hover label="xr2" line="6" >}}spec{{</hove
|
||||||
spec:
|
spec:
|
||||||
group: test.example.org
|
group: test.example.org
|
||||||
names:
|
names:
|
||||||
kind: myComputeResource
|
kind: MyComputeResource
|
||||||
versions:
|
versions:
|
||||||
- name: v1alpha1
|
- name: v1alpha1
|
||||||
schema:
|
schema:
|
||||||
|
|
@ -317,9 +322,9 @@ A _Composite Resource_ based on this _Composite Resource Definition_ looks like
|
||||||
```yaml {label="xr2"}
|
```yaml {label="xr2"}
|
||||||
# Composite Resource (XR)
|
# Composite Resource (XR)
|
||||||
apiVersion: test.example.org/v1alpha1
|
apiVersion: test.example.org/v1alpha1
|
||||||
kind: myComputeResource
|
kind: MyComputeResource
|
||||||
metadata:
|
metadata:
|
||||||
name: myResource
|
name: my-resource
|
||||||
spec:
|
spec:
|
||||||
storage: "large"
|
storage: "large"
|
||||||
```
|
```
|
||||||
|
|
@ -350,7 +355,7 @@ or {{<hover label="specVersions" line="21" >}}large{{< /hover >}}.
|
||||||
spec:
|
spec:
|
||||||
group: test.example.org
|
group: test.example.org
|
||||||
names:
|
names:
|
||||||
kind: myComputeResource
|
kind: MyComputeResource
|
||||||
versions:
|
versions:
|
||||||
- name: v1alpha1
|
- name: v1alpha1
|
||||||
served: true
|
served: true
|
||||||
|
|
@ -387,7 +392,7 @@ allows the creation of _Claims_ of `kind: computeClaim`.
|
||||||
spec:
|
spec:
|
||||||
group: test.example.org
|
group: test.example.org
|
||||||
names:
|
names:
|
||||||
kind: myComputeResource
|
kind: MyComputeResource
|
||||||
claimNames:
|
claimNames:
|
||||||
kind: computeClaim
|
kind: computeClaim
|
||||||
# Removed for brevity
|
# Removed for brevity
|
||||||
|
|
@ -426,7 +431,7 @@ _Composite Resources_.
|
||||||
spec:
|
spec:
|
||||||
group: test.example.org
|
group: test.example.org
|
||||||
names:
|
names:
|
||||||
kind: myComputeResource
|
kind: MyComputeResource
|
||||||
claimNames:
|
claimNames:
|
||||||
kind: computeClaim
|
kind: computeClaim
|
||||||
# Removed for brevity
|
# Removed for brevity
|
||||||
|
|
@ -472,9 +477,9 @@ The _Composite Resource Definition_ defines the
|
||||||
```yaml {label="xr-claim"}
|
```yaml {label="xr-claim"}
|
||||||
# Composite Resource (XR)
|
# Composite Resource (XR)
|
||||||
apiVersion: test.example.org/v1alpha1
|
apiVersion: test.example.org/v1alpha1
|
||||||
kind: myComputeResource
|
kind: MyComputeResource
|
||||||
metadata:
|
metadata:
|
||||||
name: myResource
|
name: my-resource
|
||||||
spec:
|
spec:
|
||||||
storage: "large"
|
storage: "large"
|
||||||
```
|
```
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
title: AWS Quickstart Part 2
|
title: AWS Quickstart Part 2
|
||||||
weight: 120
|
weight: 120
|
||||||
tocHidden: true
|
tocHidden: true
|
||||||
|
aliases:
|
||||||
|
- /master/getting-started/provider-aws-part-3
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< hint "important" >}}
|
{{< hint "important" >}}
|
||||||
|
|
@ -42,7 +44,7 @@ kind: Provider
|
||||||
metadata:
|
metadata:
|
||||||
name: provider-aws-s3
|
name: provider-aws-s3
|
||||||
spec:
|
spec:
|
||||||
package: xpkg.upbound.io/upbound/provider-aws-s3:v0.47.0
|
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.1.0
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -94,7 +96,7 @@ kind: Provider
|
||||||
metadata:
|
metadata:
|
||||||
name: provider-aws-dynamodb
|
name: provider-aws-dynamodb
|
||||||
spec:
|
spec:
|
||||||
package: xpkg.upbound.io/upbound/provider-aws-dynamodb:v0.47.0
|
package: xpkg.upbound.io/upbound/provider-aws-dynamodb:v1.1.0
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -104,9 +106,9 @@ View the new DynamoDB provider with `kubectl get providers`.
|
||||||
```shell {copy-lines="1"}
|
```shell {copy-lines="1"}
|
||||||
kubectl get providers
|
kubectl get providers
|
||||||
NAME INSTALLED HEALTHY PACKAGE AGE
|
NAME INSTALLED HEALTHY PACKAGE AGE
|
||||||
provider-aws-dynamodb True True xpkg.upbound.io/upbound/provider-aws-dynamodb:v0.47.0 3m55s
|
provider-aws-dynamodb True True xpkg.upbound.io/upbound/provider-aws-dynamodb:v1.1.0 3m55s
|
||||||
provider-aws-s3 True True xpkg.upbound.io/upbound/provider-aws-s3:v0.47.0 13m
|
provider-aws-s3 True True xpkg.upbound.io/upbound/provider-aws-s3:v1.1.0 13m
|
||||||
upbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:v0.47.0 13m
|
upbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:v1.1.0 13m
|
||||||
```
|
```
|
||||||
|
|
||||||
## Create a custom API
|
## Create a custom API
|
||||||
|
|
@ -306,10 +308,9 @@ with a template describing what infrastructure to deploy. Crossplane calls this
|
||||||
template a _Composition_.
|
template a _Composition_.
|
||||||
|
|
||||||
The {{<hover label="comp" line="3">}}Composition{{</hover>}} defines all the
|
The {{<hover label="comp" line="3">}}Composition{{</hover>}} defines all the
|
||||||
cloud resources to deploy.
|
cloud resources to deploy. Each entry in the template is a full resource
|
||||||
Each entry in the template
|
definition, defining all the resource settings and metadata like labels and
|
||||||
is a full resource definitions, defining all the resource settings and metadata
|
annotations.
|
||||||
like labels and annotations.
|
|
||||||
|
|
||||||
This template creates an AWS
|
This template creates an AWS
|
||||||
{{<hover label="comp" line="13">}}S3{{</hover>}}
|
{{<hover label="comp" line="13">}}S3{{</hover>}}
|
||||||
|
|
@ -317,13 +318,24 @@ This template creates an AWS
|
||||||
{{<hover label="comp" line="33">}}DynamoDB{{</hover>}}
|
{{<hover label="comp" line="33">}}DynamoDB{{</hover>}}
|
||||||
{{<hover label="comp" line="34">}}Table{{</hover>}}.
|
{{<hover label="comp" line="34">}}Table{{</hover>}}.
|
||||||
|
|
||||||
Crossplane uses {{<hover label="comp" line="19">}}patches{{</hover>}} to apply
|
|
||||||
the user's input to the resource template.
|
|
||||||
This Composition takes the user's
|
This Composition takes the user's
|
||||||
{{<hover label="comp" line="21">}}location{{</hover>}} input and uses it as the
|
{{<hover label="comp" line="21">}}location{{</hover>}} input and uses it as the
|
||||||
{{<hover label="comp" line="16">}}region{{</hover>}} used in the individual
|
{{<hover label="comp" line="16">}}region{{</hover>}} used in the individual
|
||||||
resource.
|
resource.
|
||||||
|
|
||||||
|
{{<hint "important" >}}
|
||||||
|
This Composition uses an array of resource templates. You can patch each
|
||||||
|
template with data copied from the custom API. Crossplane calls this a _Patch
|
||||||
|
and Transform_ Composition.
|
||||||
|
|
||||||
|
You don't have to use Patch and Transform. Crossplane supports a variety of
|
||||||
|
alternatives, including Go Templating and CUE. You can also write a function in
|
||||||
|
Go or Python to template your resources.
|
||||||
|
|
||||||
|
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||||
|
more information on configuring Compositions and all the available options.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
Apply this Composition to your cluster.
|
Apply this Composition to your cluster.
|
||||||
|
|
||||||
```yaml {label="comp",copy-lines="all"}
|
```yaml {label="comp",copy-lines="all"}
|
||||||
|
|
@ -333,51 +345,59 @@ kind: Composition
|
||||||
metadata:
|
metadata:
|
||||||
name: dynamo-with-bucket
|
name: dynamo-with-bucket
|
||||||
spec:
|
spec:
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: s3Bucket
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
apiVersion: s3.aws.upbound.io/v1beta1
|
functionRef:
|
||||||
kind: Bucket
|
name: function-patch-and-transform
|
||||||
metadata:
|
input:
|
||||||
name: crossplane-quickstart-bucket
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
spec:
|
kind: Resources
|
||||||
forProvider:
|
resources:
|
||||||
region: us-east-2
|
- name: s3Bucket
|
||||||
providerConfigRef:
|
base:
|
||||||
name: default
|
apiVersion: s3.aws.upbound.io/v1beta1
|
||||||
patches:
|
kind: Bucket
|
||||||
- type: FromCompositeFieldPath
|
metadata:
|
||||||
fromFieldPath: "spec.location"
|
name: crossplane-quickstart-bucket
|
||||||
toFieldPath: "spec.forProvider.region"
|
spec:
|
||||||
transforms:
|
forProvider:
|
||||||
- type: map
|
region: us-east-2
|
||||||
map:
|
providerConfigRef:
|
||||||
EU: "eu-north-1"
|
name: default
|
||||||
US: "us-east-2"
|
patches:
|
||||||
- name: dynamoDB
|
- type: FromCompositeFieldPath
|
||||||
base:
|
fromFieldPath: "spec.location"
|
||||||
apiVersion: dynamodb.aws.upbound.io/v1beta1
|
toFieldPath: "spec.forProvider.region"
|
||||||
kind: Table
|
transforms:
|
||||||
metadata:
|
- type: map
|
||||||
name: crossplane-quickstart-database
|
map:
|
||||||
spec:
|
EU: "eu-north-1"
|
||||||
forProvider:
|
US: "us-east-2"
|
||||||
region: "us-east-2"
|
- name: dynamoDB
|
||||||
writeCapacity: 1
|
base:
|
||||||
readCapacity: 1
|
apiVersion: dynamodb.aws.upbound.io/v1beta1
|
||||||
attribute:
|
kind: Table
|
||||||
- name: S3ID
|
metadata:
|
||||||
type: S
|
name: crossplane-quickstart-database
|
||||||
hashKey: S3ID
|
spec:
|
||||||
patches:
|
forProvider:
|
||||||
- type: FromCompositeFieldPath
|
region: "us-east-2"
|
||||||
fromFieldPath: "spec.location"
|
writeCapacity: 1
|
||||||
toFieldPath: "spec.forProvider.region"
|
readCapacity: 1
|
||||||
transforms:
|
attribute:
|
||||||
- type: map
|
- name: S3ID
|
||||||
map:
|
type: S
|
||||||
EU: "eu-north-1"
|
hashKey: S3ID
|
||||||
US: "us-east-2"
|
patches:
|
||||||
|
- type: FromCompositeFieldPath
|
||||||
|
fromFieldPath: "spec.location"
|
||||||
|
toFieldPath: "spec.forProvider.region"
|
||||||
|
transforms:
|
||||||
|
- type: map
|
||||||
|
map:
|
||||||
|
EU: "eu-north-1"
|
||||||
|
US: "us-east-2"
|
||||||
compositeTypeRef:
|
compositeTypeRef:
|
||||||
apiVersion: database.example.com/v1alpha1
|
apiVersion: database.example.com/v1alpha1
|
||||||
kind: NoSQL
|
kind: NoSQL
|
||||||
|
|
@ -387,14 +407,32 @@ EOF
|
||||||
The {{<hover label="comp" line="52">}}compositeTypeRef{{</hover >}} defines
|
The {{<hover label="comp" line="52">}}compositeTypeRef{{</hover >}} defines
|
||||||
which custom APIs can use this template to create resources.
|
which custom APIs can use this template to create resources.
|
||||||
|
|
||||||
|
A Composition uses a pipeline of _composition functions_ to define the cloud
|
||||||
|
resources to deploy. This template uses
|
||||||
|
{{<hover label="comp" line="10">}}function-patch-and-transform{{</hover>}}.
|
||||||
|
You must install the function before you can use it in a Composition.
|
||||||
|
|
||||||
|
Apply this Function to install `function-patch-and-transform`:
|
||||||
|
|
||||||
|
```yaml {label="install"}
|
||||||
|
cat <<EOF | kubectl apply -f -
|
||||||
|
apiVersion: pkg.crossplane.io/v1
|
||||||
|
kind: Function
|
||||||
|
metadata:
|
||||||
|
name: function-patch-and-transform
|
||||||
|
spec:
|
||||||
|
package: xpkg.upbound.io/crossplane-contrib/function-patch-and-transform:v0.1.4
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
{{<hint "tip" >}}
|
{{<hint "tip" >}}
|
||||||
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||||
more information on configuring Compositions and all the available options.
|
more information on configuring Compositions and all the available options.
|
||||||
|
|
||||||
Read the
|
Read the
|
||||||
[Patch and Transform documentation]({{<ref "../concepts/patch-and-transform">}})
|
[Patch and Transform function documentation]({{<ref "../guides/function-patch-and-transform">}})
|
||||||
for more information on how Crossplane uses patches to map user inputs to
|
for more information on how it uses patches to map user inputs to Composition
|
||||||
Composition resource templates.
|
resource templates.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
View the Composition with `kubectl get composition`
|
View the Composition with `kubectl get composition`
|
||||||
|
|
@ -5,7 +5,7 @@ weight: 100
|
||||||
|
|
||||||
Connect Crossplane to AWS to create and manage cloud resources from Kubernetes
|
Connect Crossplane to AWS to create and manage cloud resources from Kubernetes
|
||||||
with the
|
with the
|
||||||
[Upbound AWS Provider](https://marketplace.upbound.io/providers/upbound/provider-family-aws/v0.37.0).
|
[Upbound AWS Provider](https://marketplace.upbound.io/providers/upbound/provider-family-aws).
|
||||||
|
|
||||||
This guide is in two parts:
|
This guide is in two parts:
|
||||||
* Part 1 walks through installing Crossplane, configuring the provider to
|
* Part 1 walks through installing Crossplane, configuring the provider to
|
||||||
|
|
@ -37,7 +37,7 @@ kind: Provider
|
||||||
metadata:
|
metadata:
|
||||||
name: provider-aws-s3
|
name: provider-aws-s3
|
||||||
spec:
|
spec:
|
||||||
package: xpkg.upbound.io/upbound/provider-aws-s3:v0.47.0
|
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.1.0
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -52,8 +52,8 @@ Verify the provider installed with `kubectl get providers`.
|
||||||
```shell {copy-lines="1",label="getProvider"}
|
```shell {copy-lines="1",label="getProvider"}
|
||||||
kubectl get providers
|
kubectl get providers
|
||||||
NAME INSTALLED HEALTHY PACKAGE AGE
|
NAME INSTALLED HEALTHY PACKAGE AGE
|
||||||
provider-aws-s3 True True xpkg.upbound.io/upbound/provider-aws-s3:v0.47.0 97s
|
provider-aws-s3 True True xpkg.upbound.io/upbound/provider-aws-s3:1.1.0 97s
|
||||||
upbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:v0.47.0 88s
|
upbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:1.1.0 88s
|
||||||
```
|
```
|
||||||
|
|
||||||
The S3 Provider installs a second Provider, the
|
The S3 Provider installs a second Provider, the
|
||||||
|
|
@ -67,7 +67,7 @@ Every CRD maps to a unique AWS service Crossplane can provision and manage.
|
||||||
|
|
||||||
{{< hint type="tip" >}}
|
{{< hint type="tip" >}}
|
||||||
See details about all the supported CRDs in the
|
See details about all the supported CRDs in the
|
||||||
[Upbound Marketplace](https://marketplace.upbound.io/providers/upbound/provider-aws-s3/v0.47.0).
|
[Upbound Marketplace](https://marketplace.upbound.io/providers/upbound/provider-aws-s3/v1.1.0).
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
## Create a Kubernetes secret for AWS
|
## Create a Kubernetes secret for AWS
|
||||||
|
|
@ -45,7 +45,7 @@ kind: Provider
|
||||||
metadata:
|
metadata:
|
||||||
name: provider-azure-network
|
name: provider-azure-network
|
||||||
spec:
|
spec:
|
||||||
package: xpkg.upbound.io/upbound/provider-azure-network:v0.34.0
|
package: xpkg.upbound.io/upbound/provider-azure-network:v0.42.1
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -295,13 +295,24 @@ This template creates an Azure
|
||||||
{{<hover label="comp" line="90">}}VirtualNetwork{{</hover>}} and
|
{{<hover label="comp" line="90">}}VirtualNetwork{{</hover>}} and
|
||||||
{{<hover label="comp" line="110">}}ResourceGroup{{</hover>}}.
|
{{<hover label="comp" line="110">}}ResourceGroup{{</hover>}}.
|
||||||
|
|
||||||
Crossplane uses {{<hover label="comp" line="34">}}patches{{</hover>}} to apply
|
|
||||||
the user's input to the resource template.
|
|
||||||
This Composition takes the user's
|
This Composition takes the user's
|
||||||
{{<hover label="comp" line="36">}}location{{</hover>}} input and uses it as the
|
{{<hover label="comp" line="36">}}location{{</hover>}} input and uses it as the
|
||||||
{{<hover label="comp" line="37">}}location{{</hover>}} used in the individual
|
{{<hover label="comp" line="37">}}location{{</hover>}} used in the individual
|
||||||
resource.
|
resource.
|
||||||
|
|
||||||
|
{{<hint "important" >}}
|
||||||
|
This Composition uses an array of resource templates. You can patch each
|
||||||
|
template with data copied from the custom API. Crossplane calls this a _Patch
|
||||||
|
and Transform_ Composition.
|
||||||
|
|
||||||
|
You don't have to use Patch and Transform. Crossplane supports a variety of
|
||||||
|
alternatives, including Go Templating and CUE. You can also write a function in
|
||||||
|
Go or Python to template your resources.
|
||||||
|
|
||||||
|
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||||
|
more information on configuring Compositions and all the available options.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
Apply this Composition to your cluster.
|
Apply this Composition to your cluster.
|
||||||
|
|
||||||
```yaml {label="comp",copy-lines="all"}
|
```yaml {label="comp",copy-lines="all"}
|
||||||
|
|
@ -311,122 +322,130 @@ kind: Composition
|
||||||
metadata:
|
metadata:
|
||||||
name: crossplane-quickstart-vm-with-network
|
name: crossplane-quickstart-vm-with-network
|
||||||
spec:
|
spec:
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: quickstart-vm
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
apiVersion: compute.azure.upbound.io/v1beta1
|
functionRef:
|
||||||
kind: LinuxVirtualMachine
|
name: function-patch-and-transform
|
||||||
spec:
|
input:
|
||||||
forProvider:
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
adminUsername: adminuser
|
kind: Resources
|
||||||
adminSshKey:
|
resources:
|
||||||
- publicKey: ssh-rsa
|
- name: quickstart-vm
|
||||||
AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN
|
base:
|
||||||
example@docs.crossplane.io
|
apiVersion: compute.azure.upbound.io/v1beta1
|
||||||
username: adminuser
|
kind: LinuxVirtualMachine
|
||||||
location: "Central US"
|
spec:
|
||||||
osDisk:
|
forProvider:
|
||||||
- caching: ReadWrite
|
adminUsername: adminuser
|
||||||
storageAccountType: Standard_LRS
|
adminSshKey:
|
||||||
resourceGroupNameSelector:
|
- publicKey: ssh-rsa
|
||||||
matchControllerRef: true
|
AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN
|
||||||
size: Standard_B1ms
|
example@docs.crossplane.io
|
||||||
sourceImageReference:
|
username: adminuser
|
||||||
- offer: debian-11
|
location: "Central US"
|
||||||
publisher: Debian
|
osDisk:
|
||||||
sku: 11-backports-gen2
|
- caching: ReadWrite
|
||||||
version: latest
|
storageAccountType: Standard_LRS
|
||||||
networkInterfaceIdsSelector:
|
resourceGroupNameSelector:
|
||||||
matchControllerRef: true
|
|
||||||
patches:
|
|
||||||
- type: FromCompositeFieldPath
|
|
||||||
fromFieldPath: "spec.location"
|
|
||||||
toFieldPath: "spec.forProvider.location"
|
|
||||||
transforms:
|
|
||||||
- type: map
|
|
||||||
map:
|
|
||||||
EU: "Sweden Central"
|
|
||||||
US: "Central US"
|
|
||||||
- name: quickstart-nic
|
|
||||||
base:
|
|
||||||
apiVersion: network.azure.upbound.io/v1beta1
|
|
||||||
kind: NetworkInterface
|
|
||||||
spec:
|
|
||||||
forProvider:
|
|
||||||
ipConfiguration:
|
|
||||||
- name: crossplane-quickstart-configuration
|
|
||||||
privateIpAddressAllocation: Dynamic
|
|
||||||
subnetIdSelector:
|
|
||||||
matchControllerRef: true
|
matchControllerRef: true
|
||||||
location: "Central US"
|
size: Standard_B1ms
|
||||||
resourceGroupNameSelector:
|
sourceImageReference:
|
||||||
matchControllerRef: true
|
- offer: debian-11
|
||||||
patches:
|
publisher: Debian
|
||||||
- type: FromCompositeFieldPath
|
sku: 11-backports-gen2
|
||||||
fromFieldPath: "spec.location"
|
version: latest
|
||||||
toFieldPath: "spec.forProvider.location"
|
networkInterfaceIdsSelector:
|
||||||
transforms:
|
matchControllerRef: true
|
||||||
- type: map
|
patches:
|
||||||
map:
|
- type: FromCompositeFieldPath
|
||||||
EU: "Sweden Central"
|
fromFieldPath: "spec.location"
|
||||||
US: "Central US"
|
toFieldPath: "spec.forProvider.location"
|
||||||
- name: quickstart-subnet
|
transforms:
|
||||||
base:
|
- type: map
|
||||||
apiVersion: network.azure.upbound.io/v1beta1
|
map:
|
||||||
kind: Subnet
|
EU: "Sweden Central"
|
||||||
spec:
|
US: "Central US"
|
||||||
forProvider:
|
- name: quickstart-nic
|
||||||
addressPrefixes:
|
base:
|
||||||
- 10.0.1.0/24
|
apiVersion: network.azure.upbound.io/v1beta1
|
||||||
virtualNetworkNameSelector:
|
kind: NetworkInterface
|
||||||
matchControllerRef: true
|
spec:
|
||||||
resourceGroupNameSelector:
|
forProvider:
|
||||||
matchControllerRef: true
|
ipConfiguration:
|
||||||
patches:
|
- name: crossplane-quickstart-configuration
|
||||||
- type: FromCompositeFieldPath
|
privateIpAddressAllocation: Dynamic
|
||||||
fromFieldPath: "spec.location"
|
subnetIdSelector:
|
||||||
toFieldPath: "spec.forProvider.location"
|
matchControllerRef: true
|
||||||
transforms:
|
location: "Central US"
|
||||||
- type: map
|
resourceGroupNameSelector:
|
||||||
map:
|
matchControllerRef: true
|
||||||
EU: "Sweden Central"
|
patches:
|
||||||
US: "Central US"
|
- type: FromCompositeFieldPath
|
||||||
- name: quickstart-network
|
fromFieldPath: "spec.location"
|
||||||
base:
|
toFieldPath: "spec.forProvider.location"
|
||||||
apiVersion: network.azure.upbound.io/v1beta1
|
transforms:
|
||||||
kind: VirtualNetwork
|
- type: map
|
||||||
spec:
|
map:
|
||||||
forProvider:
|
EU: "Sweden Central"
|
||||||
addressSpace:
|
US: "Central US"
|
||||||
- 10.0.0.0/16
|
- name: quickstart-subnet
|
||||||
location: "Central US"
|
base:
|
||||||
resourceGroupNameSelector:
|
apiVersion: network.azure.upbound.io/v1beta1
|
||||||
matchControllerRef: true
|
kind: Subnet
|
||||||
patches:
|
spec:
|
||||||
- type: FromCompositeFieldPath
|
forProvider:
|
||||||
fromFieldPath: "spec.location"
|
addressPrefixes:
|
||||||
toFieldPath: "spec.forProvider.location"
|
- 10.0.1.0/24
|
||||||
transforms:
|
virtualNetworkNameSelector:
|
||||||
- type: map
|
matchControllerRef: true
|
||||||
map:
|
resourceGroupNameSelector:
|
||||||
EU: "Sweden Central"
|
matchControllerRef: true
|
||||||
US: "Central US"
|
patches:
|
||||||
- name: crossplane-resourcegroup
|
- type: FromCompositeFieldPath
|
||||||
base:
|
fromFieldPath: "spec.location"
|
||||||
apiVersion: azure.upbound.io/v1beta1
|
toFieldPath: "spec.forProvider.location"
|
||||||
kind: ResourceGroup
|
transforms:
|
||||||
spec:
|
- type: map
|
||||||
forProvider:
|
map:
|
||||||
location: Central US
|
EU: "Sweden Central"
|
||||||
patches:
|
US: "Central US"
|
||||||
- type: FromCompositeFieldPath
|
- name: quickstart-network
|
||||||
fromFieldPath: "spec.location"
|
base:
|
||||||
toFieldPath: "spec.forProvider.location"
|
apiVersion: network.azure.upbound.io/v1beta1
|
||||||
transforms:
|
kind: VirtualNetwork
|
||||||
- type: map
|
spec:
|
||||||
map:
|
forProvider:
|
||||||
EU: "Sweden Central"
|
addressSpace:
|
||||||
US: "Central US"
|
- 10.0.0.0/16
|
||||||
|
location: "Central US"
|
||||||
|
resourceGroupNameSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
patches:
|
||||||
|
- type: FromCompositeFieldPath
|
||||||
|
fromFieldPath: "spec.location"
|
||||||
|
toFieldPath: "spec.forProvider.location"
|
||||||
|
transforms:
|
||||||
|
- type: map
|
||||||
|
map:
|
||||||
|
EU: "Sweden Central"
|
||||||
|
US: "Central US"
|
||||||
|
- name: crossplane-resourcegroup
|
||||||
|
base:
|
||||||
|
apiVersion: azure.upbound.io/v1beta1
|
||||||
|
kind: ResourceGroup
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
location: Central US
|
||||||
|
patches:
|
||||||
|
- type: FromCompositeFieldPath
|
||||||
|
fromFieldPath: "spec.location"
|
||||||
|
toFieldPath: "spec.forProvider.location"
|
||||||
|
transforms:
|
||||||
|
- type: map
|
||||||
|
map:
|
||||||
|
EU: "Sweden Central"
|
||||||
|
US: "Central US"
|
||||||
compositeTypeRef:
|
compositeTypeRef:
|
||||||
apiVersion: compute.example.com/v1alpha1
|
apiVersion: compute.example.com/v1alpha1
|
||||||
kind: VirtualMachine
|
kind: VirtualMachine
|
||||||
|
|
@ -436,14 +455,32 @@ EOF
|
||||||
The {{<hover label="comp" line="52">}}compositeTypeRef{{</hover >}} defines
|
The {{<hover label="comp" line="52">}}compositeTypeRef{{</hover >}} defines
|
||||||
which custom APIs can use this template to create resources.
|
which custom APIs can use this template to create resources.
|
||||||
|
|
||||||
|
A Composition uses a pipeline of _composition functions_ to define the cloud
|
||||||
|
resources to deploy. This template uses
|
||||||
|
{{<hover label="comp" line="10">}}function-patch-and-transform{{</hover>}}.
|
||||||
|
You must install the function before you can use it in a Composition.
|
||||||
|
|
||||||
|
Apply this Function to install `function-patch-and-transform`:
|
||||||
|
|
||||||
|
```yaml {label="install"}
|
||||||
|
cat <<EOF | kubectl apply -f -
|
||||||
|
apiVersion: pkg.crossplane.io/v1
|
||||||
|
kind: Function
|
||||||
|
metadata:
|
||||||
|
name: function-patch-and-transform
|
||||||
|
spec:
|
||||||
|
package: xpkg.upbound.io/crossplane-contrib/function-patch-and-transform:v0.1.4
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
{{<hint "tip" >}}
|
{{<hint "tip" >}}
|
||||||
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||||
more information on configuring Compositions and all the available options.
|
more information on configuring Compositions and all the available options.
|
||||||
|
|
||||||
Read the
|
Read the
|
||||||
[Patch and Transform documentation]({{<ref "../concepts/patch-and-transform">}})
|
[Patch and Transform function documentation]({{<ref "../guides/function-patch-and-transform">}})
|
||||||
for more information on how Crossplane uses patches to map user inputs to
|
for more information on how it uses patches to map user inputs to Composition
|
||||||
Composition resource templates.
|
resource templates.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
View the Composition with `kubectl get composition`
|
View the Composition with `kubectl get composition`
|
||||||
|
|
@ -468,7 +505,7 @@ kind: Provider
|
||||||
metadata:
|
metadata:
|
||||||
name: provider-azure-compute
|
name: provider-azure-compute
|
||||||
spec:
|
spec:
|
||||||
package: xpkg.upbound.io/upbound/provider-azure-compute:v0.34.0
|
package: xpkg.upbound.io/upbound/provider-azure-compute:v0.42.1
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -478,9 +515,9 @@ View the new Compute provider with `kubectl get providers`.
|
||||||
```shell {copy-lines="1"}
|
```shell {copy-lines="1"}
|
||||||
kubectl get providers
|
kubectl get providers
|
||||||
NAME INSTALLED HEALTHY PACKAGE AGE
|
NAME INSTALLED HEALTHY PACKAGE AGE
|
||||||
provider-azure-compute True True xpkg.upbound.io/upbound/provider-azure-compute:v0.34.0 25s
|
provider-azure-compute True True xpkg.upbound.io/upbound/provider-azure-compute:v0.42.1 25s
|
||||||
provider-azure-network True True xpkg.upbound.io/upbound/provider-azure-network:v0.34.0 3h
|
provider-azure-network True True xpkg.upbound.io/upbound/provider-azure-network:v0.42.1 3h
|
||||||
upbound-provider-family-azure True True xpkg.upbound.io/upbound/provider-family-azure:v0.34.0 3h
|
upbound-provider-family-azure True True xpkg.upbound.io/upbound/provider-family-azure:v0.42.1 3h
|
||||||
```
|
```
|
||||||
|
|
||||||
## Access the custom API
|
## Access the custom API
|
||||||
|
|
@ -39,7 +39,7 @@ kind: Provider
|
||||||
metadata:
|
metadata:
|
||||||
name: provider-azure-network
|
name: provider-azure-network
|
||||||
spec:
|
spec:
|
||||||
package: xpkg.upbound.io/upbound/provider-azure-network:v0.34.0
|
package: xpkg.upbound.io/upbound/provider-azure-network:v0.42.1
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -54,8 +54,8 @@ Verify the provider installed with `kubectl get providers`.
|
||||||
```shell {copy-lines="1",label="getProvider"}
|
```shell {copy-lines="1",label="getProvider"}
|
||||||
kubectl get providers
|
kubectl get providers
|
||||||
NAME INSTALLED HEALTHY PACKAGE AGE
|
NAME INSTALLED HEALTHY PACKAGE AGE
|
||||||
provider-azure-network True True xpkg.upbound.io/upbound/provider-azure-network:v0.34.0 38s
|
provider-azure-network True True xpkg.upbound.io/upbound/provider-azure-network:v0.42.1 38s
|
||||||
upbound-provider-family-azure True True xpkg.upbound.io/upbound/provider-family-azure:v0.34.0 26s
|
upbound-provider-family-azure True True xpkg.upbound.io/upbound/provider-family-azure:v0.42.1 26s
|
||||||
```
|
```
|
||||||
|
|
||||||
The Network Provider installs a second Provider, the
|
The Network Provider installs a second Provider, the
|
||||||
|
|
@ -69,7 +69,7 @@ Every CRD maps to a unique Azure service Crossplane can provision and manage.
|
||||||
|
|
||||||
{{< hint type="tip" >}}
|
{{< hint type="tip" >}}
|
||||||
See details about all the supported CRDs in the
|
See details about all the supported CRDs in the
|
||||||
[Upbound Marketplace](https://marketplace.upbound.io/providers/upbound/provider-family-azure/v0.34.0).
|
[Upbound Marketplace](https://marketplace.upbound.io/providers/upbound/provider-family-azure/v0.42.1).
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
title: GCP Quickstart Part 2
|
title: GCP Quickstart Part 2
|
||||||
weight: 120
|
weight: 120
|
||||||
tocHidden: true
|
tocHidden: true
|
||||||
|
aliases:
|
||||||
|
- /master/getting-started/provider-azure-part-3
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< hint "important" >}}
|
{{< hint "important" >}}
|
||||||
|
|
@ -335,13 +337,24 @@ This template creates a GCP
|
||||||
{{<hover label="comp" line="25">}}PubSub{{</hover>}}
|
{{<hover label="comp" line="25">}}PubSub{{</hover>}}
|
||||||
{{<hover label="comp" line="26">}}Topic{{</hover>}}.
|
{{<hover label="comp" line="26">}}Topic{{</hover>}}.
|
||||||
|
|
||||||
Crossplane uses {{<hover label="comp" line="15">}}patches{{</hover>}} to apply
|
|
||||||
the user's input to the resource template.
|
|
||||||
This Composition takes the user's
|
This Composition takes the user's
|
||||||
{{<hover label="comp" line="16">}}location{{</hover>}} input and uses it as the
|
{{<hover label="comp" line="16">}}location{{</hover>}} input and uses it as the
|
||||||
{{<hover label="comp" line="14">}}location{{</hover>}} used in the individual
|
{{<hover label="comp" line="14">}}location{{</hover>}} used in the individual
|
||||||
resource.
|
resource.
|
||||||
|
|
||||||
|
{{<hint "important" >}}
|
||||||
|
This Composition uses an array of resource templates. You can patch each
|
||||||
|
template with data copied from the custom API. Crossplane calls this a _Patch
|
||||||
|
and Transform_ Composition.
|
||||||
|
|
||||||
|
You don't have to use Patch and Transform. Crossplane supports a variety of
|
||||||
|
alternatives, including Go Templating and CUE. You can also write a function in
|
||||||
|
Go or Python to template your resources.
|
||||||
|
|
||||||
|
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||||
|
more information on configuring Compositions and all the available options.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
Apply this Composition to your cluster.
|
Apply this Composition to your cluster.
|
||||||
|
|
||||||
```yaml {label="comp",copy-lines="all"}
|
```yaml {label="comp",copy-lines="all"}
|
||||||
|
|
@ -351,39 +364,47 @@ kind: Composition
|
||||||
metadata:
|
metadata:
|
||||||
name: topic-with-bucket
|
name: topic-with-bucket
|
||||||
spec:
|
spec:
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: crossplane-quickstart-bucket
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
apiVersion: storage.gcp.upbound.io/v1beta1
|
functionRef:
|
||||||
kind: Bucket
|
name: function-patch-and-transform
|
||||||
spec:
|
input:
|
||||||
forProvider:
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
location: "US"
|
kind: Resources
|
||||||
patches:
|
resources:
|
||||||
- fromFieldPath: "spec.location"
|
- name: crossplane-quickstart-bucket
|
||||||
toFieldPath: "spec.forProvider.location"
|
base:
|
||||||
transforms:
|
apiVersion: storage.gcp.upbound.io/v1beta1
|
||||||
- type: map
|
kind: Bucket
|
||||||
map:
|
spec:
|
||||||
EU: "EU"
|
forProvider:
|
||||||
US: "US"
|
location: "US"
|
||||||
- name: crossplane-quickstart-topic
|
patches:
|
||||||
base:
|
- fromFieldPath: "spec.location"
|
||||||
apiVersion: pubsub.gcp.upbound.io/v1beta1
|
toFieldPath: "spec.forProvider.location"
|
||||||
kind: Topic
|
transforms:
|
||||||
spec:
|
- type: map
|
||||||
forProvider:
|
map:
|
||||||
messageStoragePolicy:
|
EU: "EU"
|
||||||
- allowedPersistenceRegions:
|
US: "US"
|
||||||
- "us-central1"
|
- name: crossplane-quickstart-topic
|
||||||
patches:
|
base:
|
||||||
- fromFieldPath: "spec.location"
|
apiVersion: pubsub.gcp.upbound.io/v1beta1
|
||||||
toFieldPath: "spec.forProvider.messageStoragePolicy[0].allowedPersistenceRegions[0]"
|
kind: Topic
|
||||||
transforms:
|
spec:
|
||||||
- type: map
|
forProvider:
|
||||||
map:
|
messageStoragePolicy:
|
||||||
EU: "europe-central2"
|
- allowedPersistenceRegions:
|
||||||
US: "us-central1"
|
- "us-central1"
|
||||||
|
patches:
|
||||||
|
- fromFieldPath: "spec.location"
|
||||||
|
toFieldPath: "spec.forProvider.messageStoragePolicy[0].allowedPersistenceRegions[0]"
|
||||||
|
transforms:
|
||||||
|
- type: map
|
||||||
|
map:
|
||||||
|
EU: "europe-central2"
|
||||||
|
US: "us-central1"
|
||||||
compositeTypeRef:
|
compositeTypeRef:
|
||||||
apiVersion: queue.example.com/v1alpha1
|
apiVersion: queue.example.com/v1alpha1
|
||||||
kind: PubSub
|
kind: PubSub
|
||||||
|
|
@ -393,14 +414,32 @@ EOF
|
||||||
The {{<hover label="comp" line="40">}}compositeTypeRef{{</hover >}} defines
|
The {{<hover label="comp" line="40">}}compositeTypeRef{{</hover >}} defines
|
||||||
which custom APIs can use this template to create resources.
|
which custom APIs can use this template to create resources.
|
||||||
|
|
||||||
|
A Composition uses a pipeline of _composition functions_ to define the cloud
|
||||||
|
resources to deploy. This template uses
|
||||||
|
{{<hover label="comp" line="10">}}function-patch-and-transform{{</hover>}}.
|
||||||
|
You must install the function before you can use it in a Composition.
|
||||||
|
|
||||||
|
Apply this Function to install `function-patch-and-transform`:
|
||||||
|
|
||||||
|
```yaml {label="install"}
|
||||||
|
cat <<EOF | kubectl apply -f -
|
||||||
|
apiVersion: pkg.crossplane.io/v1
|
||||||
|
kind: Function
|
||||||
|
metadata:
|
||||||
|
name: function-patch-and-transform
|
||||||
|
spec:
|
||||||
|
package: xpkg.upbound.io/crossplane-contrib/function-patch-and-transform:v0.1.4
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
{{<hint "tip" >}}
|
{{<hint "tip" >}}
|
||||||
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||||
more information on configuring Compositions and all the available options.
|
more information on configuring Compositions and all the available options.
|
||||||
|
|
||||||
Read the
|
Read the
|
||||||
[Patch and Transform documentation]({{<ref "../concepts/patch-and-transform">}})
|
[Patch and Transform function documentation]({{<ref "../guides/function-patch-and-transform">}})
|
||||||
for more information on how Crossplane uses patches to map user inputs to
|
for more information on how it uses patches to map user inputs to Composition
|
||||||
Composition resource templates.
|
resource templates.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
View the Composition with `kubectl get composition`
|
View the Composition with `kubectl get composition`
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Guides
|
title: Guides
|
||||||
weight: 400
|
weight: 100
|
||||||
description: Crossplane integrations and detailed examples.
|
description: Crossplane integrations and detailed examples.
|
||||||
---
|
---
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -5,7 +5,7 @@ weight: 200
|
||||||
|
|
||||||
If you have resources that are already provisioned in a Provider,
|
If you have resources that are already provisioned in a Provider,
|
||||||
you can import them as managed resources and let Crossplane manage them.
|
you can import them as managed resources and let Crossplane manage them.
|
||||||
A managed resource's [`managementPolicies`]({{<ref "/v1.14/concepts/managed-resources#managementpolicies">}})
|
A managed resource's [`managementPolicies`]({{<ref "/v1.16/concepts/managed-resources#managementpolicies">}})
|
||||||
field enables importing external resources into Crossplane.
|
field enables importing external resources into Crossplane.
|
||||||
|
|
||||||
Crossplane can import resources either [manually]({{<ref "#import-resources-manually">}})
|
Crossplane can import resources either [manually]({{<ref "#import-resources-manually">}})
|
||||||
|
|
@ -84,7 +84,7 @@ managed resource `spec` changes the external resource.
|
||||||
|
|
||||||
## Import resources automatically
|
## Import resources automatically
|
||||||
|
|
||||||
Automatically import external resources with an `Observe` [management policy]({{<ref "/v1.14/concepts/managed-resources#managementpolicies">}}).
|
Automatically import external resources with an `Observe` [management policy]({{<ref "/v1.16/concepts/managed-resources#managementpolicies">}}).
|
||||||
|
|
||||||
Crossplane imports observe only resources but never changes or deletes the
|
Crossplane imports observe only resources but never changes or deletes the
|
||||||
resources.
|
resources.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Troubleshoot
|
title: Troubleshoot Crossplane
|
||||||
weight: 306
|
weight: 306
|
||||||
---
|
---
|
||||||
## Requested Resource Not Found
|
## Requested Resource Not Found
|
||||||
|
|
@ -411,35 +411,47 @@ spec:
|
||||||
compositeTypeRef:
|
compositeTypeRef:
|
||||||
apiVersion: ess.example.org/v1alpha1
|
apiVersion: ess.example.org/v1alpha1
|
||||||
kind: CompositeESSInstance
|
kind: CompositeESSInstance
|
||||||
resources:
|
mode: Pipeline
|
||||||
- name: serviceaccount
|
pipeline:
|
||||||
base:
|
- step: patch-and-transform
|
||||||
apiVersion: iam.gcp.crossplane.io/v1alpha1
|
functionRef:
|
||||||
kind: ServiceAccount
|
name: function-patch-and-transform
|
||||||
metadata:
|
input:
|
||||||
name: ess-test-sa
|
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||||
spec:
|
kind: Resources
|
||||||
forProvider:
|
resources:
|
||||||
displayName: a service account to test ess
|
- name: serviceaccount
|
||||||
- name: serviceaccountkey
|
base:
|
||||||
base:
|
apiVersion: iam.gcp.crossplane.io/v1alpha1
|
||||||
apiVersion: iam.gcp.crossplane.io/v1alpha1
|
kind: ServiceAccount
|
||||||
kind: ServiceAccountKey
|
|
||||||
spec:
|
|
||||||
forProvider:
|
|
||||||
serviceAccountSelector:
|
|
||||||
matchControllerRef: true
|
|
||||||
publishConnectionDetailsTo:
|
|
||||||
name: ess-mr-conn
|
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
name: ess-test-sa
|
||||||
environment: development
|
spec:
|
||||||
team: backend
|
forProvider:
|
||||||
configRef:
|
displayName: a service account to test ess
|
||||||
name: vault
|
- name: serviceaccountkey
|
||||||
connectionDetails:
|
base:
|
||||||
- fromConnectionSecretKey: publicKey
|
apiVersion: iam.gcp.crossplane.io/v1alpha1
|
||||||
- fromConnectionSecretKey: publicKeyType" | kubectl apply -f -
|
kind: ServiceAccountKey
|
||||||
|
spec:
|
||||||
|
forProvider:
|
||||||
|
serviceAccountSelector:
|
||||||
|
matchControllerRef: true
|
||||||
|
publishConnectionDetailsTo:
|
||||||
|
name: ess-mr-conn
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
environment: development
|
||||||
|
team: backend
|
||||||
|
configRef:
|
||||||
|
name: vault
|
||||||
|
connectionDetails:
|
||||||
|
- name: publicKey
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: publicKey
|
||||||
|
- name: publicKey
|
||||||
|
type: FromConnectionSecretKey
|
||||||
|
fromConnectionSecretKey: publicKeyType" | kubectl apply -f -
|
||||||
```
|
```
|
||||||
|
|
||||||
### Create a Claim
|
### Create a Claim
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Write a Composition Function in Go
|
title: Write a Composition Function in Go
|
||||||
state: beta
|
|
||||||
alphaVersion: "1.11"
|
|
||||||
betaVersion: "1.14"
|
|
||||||
weight: 80
|
weight: 80
|
||||||
description: "Composition functions allow you to template resources using Go"
|
description: "Composition functions allow you to template resources using Go"
|
||||||
---
|
---
|
||||||
|
|
@ -11,7 +8,7 @@ Composition functions (or just functions, for short) are custom programs that
|
||||||
template Crossplane resources. Crossplane calls composition functions to
|
template Crossplane resources. Crossplane calls composition functions to
|
||||||
determine what resources it should create when you create a composite resource
|
determine what resources it should create when you create a composite resource
|
||||||
(XR). Read the
|
(XR). Read the
|
||||||
[concepts]({{<ref "../concepts/composition-functions" >}})
|
[concepts]({{<ref "../concepts/compositions" >}})
|
||||||
page to learn more about composition functions.
|
page to learn more about composition functions.
|
||||||
|
|
||||||
You can write a function to template resources using a general purpose
|
You can write a function to template resources using a general purpose
|
||||||
|
|
@ -22,7 +19,7 @@ conditionals. This guide explains how to write a composition function in
|
||||||
|
|
||||||
{{< hint "important" >}}
|
{{< hint "important" >}}
|
||||||
It helps to be familiar with
|
It helps to be familiar with
|
||||||
[how composition functions work]({{<ref "../concepts/composition-functions#how-composition-functions-work" >}})
|
[how composition functions work]({{<ref "../concepts/compositions#how-composition-functions-work" >}})
|
||||||
before following this guide.
|
before following this guide.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
@ -79,17 +76,17 @@ build or test a composition function.
|
||||||
|
|
||||||
## Initialize the function from a template
|
## Initialize the function from a template
|
||||||
|
|
||||||
Use the `crossplane beta xpkg init` command to initialize a new function. When
|
Use the `crossplane xpkg init` command to initialize a new function. When
|
||||||
you run this command it initializes your function using
|
you run this command it initializes your function using
|
||||||
[a GitHub repository](https://github.com/crossplane/function-template-go)
|
[a GitHub repository](https://github.com/crossplane/function-template-go)
|
||||||
as a template.
|
as a template.
|
||||||
|
|
||||||
```shell {copy-lines=1}
|
```shell {copy-lines=1}
|
||||||
crossplane beta xpkg init function-xbuckets function-template-go -d function-xbuckets
|
crossplane xpkg init function-xbuckets function-template-go -d function-xbuckets
|
||||||
Initialized package "function-xbuckets" in directory "/home/negz/control/negz/function-xbuckets" from https://github.com/crossplane/function-template-go/tree/91a1a5eed21964ff98966d72cc6db6f089ad63f4 (main)
|
Initialized package "function-xbuckets" in directory "/home/negz/control/negz/function-xbuckets" from https://github.com/crossplane/function-template-go/tree/91a1a5eed21964ff98966d72cc6db6f089ad63f4 (main)
|
||||||
```
|
```
|
||||||
|
|
||||||
The `crossplane beta init xpkg` command creates a directory named
|
The `crossplane xpkg init` command creates a directory named
|
||||||
`function-xbuckets`. When you run the command the new directory should look like
|
`function-xbuckets`. When you run the command the new directory should look like
|
||||||
this:
|
this:
|
||||||
|
|
||||||
|
|
@ -111,7 +108,7 @@ some other files in the template:
|
||||||
<!--
|
<!--
|
||||||
This tip talks about future plans for Crossplane.
|
This tip talks about future plans for Crossplane.
|
||||||
-->
|
-->
|
||||||
In v1.14 of the Crossplane CLI `crossplane beta xpkg init` just clones a
|
In v1.14 of the Crossplane CLI `crossplane xpkg init` just clones a
|
||||||
template GitHub repository. A future CLI release will automate tasks like
|
template GitHub repository. A future CLI release will automate tasks like
|
||||||
replacing the template name with the new function's name. See Crossplane issue
|
replacing the template name with the new function's name. See Crossplane issue
|
||||||
[#4941](https://github.com/crossplane/crossplane/issues/4941) for details.
|
[#4941](https://github.com/crossplane/crossplane/issues/4941) for details.
|
||||||
|
|
@ -134,7 +131,7 @@ should delete the `input` and `package/input` directories.
|
||||||
|
|
||||||
The `input` directory defines a Go struct that a function can use to take input,
|
The `input` directory defines a Go struct that a function can use to take input,
|
||||||
using the `input` field from a Composition. The
|
using the `input` field from a Composition. The
|
||||||
[composition functions]({{<ref "../concepts/composition-functions" >}})
|
[composition functions]({{<ref "../concepts/compositions" >}})
|
||||||
documentation explains how to pass an input to a composition function.
|
documentation explains how to pass an input to a composition function.
|
||||||
|
|
||||||
The `package/input` directory contains an OpenAPI schema generated from the
|
The `package/input` directory contains an OpenAPI schema generated from the
|
||||||
|
|
@ -163,7 +160,7 @@ method in `fn.go`. When you first open the file it contains a "hello world"
|
||||||
function.
|
function.
|
||||||
|
|
||||||
```go {label="hello-world"}
|
```go {label="hello-world"}
|
||||||
func (f *Function) RunFunction(_ context.Context, req *fnv1beta1.RunFunctionRequest) (*fnv1beta1.RunFunctionResponse, error) {
|
func (f *Function) RunFunction(_ context.Context, req *fnv1.RunFunctionRequest) (*fnv1.RunFunctionResponse, error) {
|
||||||
f.log.Info("Running Function", "tag", req.GetMeta().GetTag())
|
f.log.Info("Running Function", "tag", req.GetMeta().GetTag())
|
||||||
|
|
||||||
rsp := response.To(req, response.DefaultTTL)
|
rsp := response.To(req, response.DefaultTTL)
|
||||||
|
|
@ -190,13 +187,13 @@ The function tells Crossplane what resources it should compose by returning a
|
||||||
Crossplane generates the `RunFunctionRequest` and `RunFunctionResponse` structs
|
Crossplane generates the `RunFunctionRequest` and `RunFunctionResponse` structs
|
||||||
using [Protocol Buffers](http://protobuf.dev). You can find detailed schemas for
|
using [Protocol Buffers](http://protobuf.dev). You can find detailed schemas for
|
||||||
`RunFunctionRequest` and `RunFunctionResponse` in the
|
`RunFunctionRequest` and `RunFunctionResponse` in the
|
||||||
[Buf Schema Registry](https://buf.build/crossplane/crossplane/docs/main:apiextensions.fn.proto.v1beta1).
|
[Buf Schema Registry](https://buf.build/crossplane/crossplane/docs/main:apiextensions.fn.proto.v1).
|
||||||
{{</hint>}}
|
{{</hint>}}
|
||||||
|
|
||||||
Edit the `RunFunction` method to replace it with this code.
|
Edit the `RunFunction` method to replace it with this code.
|
||||||
|
|
||||||
```go {hl_lines="4-56"}
|
```go {hl_lines="4-56"}
|
||||||
func (f *Function) RunFunction(_ context.Context, req *fnv1beta1.RunFunctionRequest) (*fnv1beta1.RunFunctionResponse, error) {
|
func (f *Function) RunFunction(_ context.Context, req *fnv1.RunFunctionRequest) (*fnv1.RunFunctionResponse, error) {
|
||||||
rsp := response.To(req, response.DefaultTTL)
|
rsp := response.To(req, response.DefaultTTL)
|
||||||
|
|
||||||
xr, err := request.GetObservedCompositeResource(req)
|
xr, err := request.GetObservedCompositeResource(req)
|
||||||
|
|
@ -274,7 +271,7 @@ import (
|
||||||
|
|
||||||
"github.com/crossplane/function-sdk-go/errors"
|
"github.com/crossplane/function-sdk-go/errors"
|
||||||
"github.com/crossplane/function-sdk-go/logging"
|
"github.com/crossplane/function-sdk-go/logging"
|
||||||
fnv1beta1 "github.com/crossplane/function-sdk-go/proto/v1beta1"
|
fnv1 "github.com/crossplane/function-sdk-go/proto/v1"
|
||||||
"github.com/crossplane/function-sdk-go/request"
|
"github.com/crossplane/function-sdk-go/request"
|
||||||
"github.com/crossplane/function-sdk-go/resource"
|
"github.com/crossplane/function-sdk-go/resource"
|
||||||
"github.com/crossplane/function-sdk-go/resource/composed"
|
"github.com/crossplane/function-sdk-go/resource/composed"
|
||||||
|
|
@ -283,14 +280,14 @@ import (
|
||||||
|
|
||||||
// Function returns whatever response you ask it to.
|
// Function returns whatever response you ask it to.
|
||||||
type Function struct {
|
type Function struct {
|
||||||
fnv1beta1.UnimplementedFunctionRunnerServiceServer
|
fnv1.UnimplementedFunctionRunnerServiceServer
|
||||||
|
|
||||||
log logging.Logger
|
log logging.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
// RunFunction observes an XBuckets composite resource (XR). It adds an S3
|
// RunFunction observes an XBuckets composite resource (XR). It adds an S3
|
||||||
// bucket to the desired state for every entry in the XR's spec.names array.
|
// bucket to the desired state for every entry in the XR's spec.names array.
|
||||||
func (f *Function) RunFunction(_ context.Context, req *fnv1beta1.RunFunctionRequest) (*fnv1beta1.RunFunctionResponse, error) {
|
func (f *Function) RunFunction(_ context.Context, req *fnv1.RunFunctionRequest) (*fnv1.RunFunctionResponse, error) {
|
||||||
f.log.Info("Running Function", "tag", req.GetMeta().GetTag())
|
f.log.Info("Running Function", "tag", req.GetMeta().GetTag())
|
||||||
|
|
||||||
// Create a response to the request. This copies the desired state and
|
// Create a response to the request. This copies the desired state and
|
||||||
|
|
@ -428,8 +425,8 @@ for the SDK.
|
||||||
|
|
||||||
## Test the function end-to-end
|
## Test the function end-to-end
|
||||||
|
|
||||||
Test your function by adding unit tests, and by using the `crossplane beta
|
Test your function by adding unit tests, and by using the `crossplane render`
|
||||||
render` command.
|
command.
|
||||||
|
|
||||||
Go has rich support for unit testing. When you initialize a function from the
|
Go has rich support for unit testing. When you initialize a function from the
|
||||||
template it adds some unit tests to `fn_test.go`. These tests follow Go's
|
template it adds some unit tests to `fn_test.go`. These tests follow Go's
|
||||||
|
|
@ -456,17 +453,17 @@ import (
|
||||||
|
|
||||||
"github.com/crossplane/crossplane-runtime/pkg/logging"
|
"github.com/crossplane/crossplane-runtime/pkg/logging"
|
||||||
|
|
||||||
fnv1beta1 "github.com/crossplane/function-sdk-go/proto/v1beta1"
|
fnv1 "github.com/crossplane/function-sdk-go/proto/v1"
|
||||||
"github.com/crossplane/function-sdk-go/resource"
|
"github.com/crossplane/function-sdk-go/resource"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRunFunction(t *testing.T) {
|
func TestRunFunction(t *testing.T) {
|
||||||
type args struct {
|
type args struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
req *fnv1beta1.RunFunctionRequest
|
req *fnv1.RunFunctionRequest
|
||||||
}
|
}
|
||||||
type want struct {
|
type want struct {
|
||||||
rsp *fnv1beta1.RunFunctionResponse
|
rsp *fnv1.RunFunctionResponse
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -478,9 +475,9 @@ func TestRunFunction(t *testing.T) {
|
||||||
"AddTwoBuckets": {
|
"AddTwoBuckets": {
|
||||||
reason: "The Function should add two buckets to the desired composed resources",
|
reason: "The Function should add two buckets to the desired composed resources",
|
||||||
args: args{
|
args: args{
|
||||||
req: &fnv1beta1.RunFunctionRequest{
|
req: &fnv1.RunFunctionRequest{
|
||||||
Observed: &fnv1beta1.State{
|
Observed: &fnv1.State{
|
||||||
Composite: &fnv1beta1.Resource{
|
Composite: &fnv1.Resource{
|
||||||
// MustStructJSON is a handy way to provide mock
|
// MustStructJSON is a handy way to provide mock
|
||||||
// resources.
|
// resources.
|
||||||
Resource: resource.MustStructJSON(`{
|
Resource: resource.MustStructJSON(`{
|
||||||
|
|
@ -502,10 +499,10 @@ func TestRunFunction(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
want: want{
|
want: want{
|
||||||
rsp: &fnv1beta1.RunFunctionResponse{
|
rsp: &fnv1.RunFunctionResponse{
|
||||||
Meta: &fnv1beta1.ResponseMeta{Ttl: durationpb.New(60 * time.Second)},
|
Meta: &fnv1.ResponseMeta{Ttl: durationpb.New(60 * time.Second)},
|
||||||
Desired: &fnv1beta1.State{
|
Desired: &fnv1.State{
|
||||||
Resources: map[string]*fnv1beta1.Resource{
|
Resources: map[string]*fnv1.Resource{
|
||||||
"xbuckets-test-bucket-a": {Resource: resource.MustStructJSON(`{
|
"xbuckets-test-bucket-a": {Resource: resource.MustStructJSON(`{
|
||||||
"apiVersion": "s3.aws.upbound.io/v1beta1",
|
"apiVersion": "s3.aws.upbound.io/v1beta1",
|
||||||
"kind": "Bucket",
|
"kind": "Bucket",
|
||||||
|
|
@ -582,7 +579,7 @@ Expand the following block to see example files.
|
||||||
|
|
||||||
{{<expand "The xr.yaml, composition.yaml and function.yaml files">}}
|
{{<expand "The xr.yaml, composition.yaml and function.yaml files">}}
|
||||||
|
|
||||||
You can recreate the output below using by running `crossplane beta render` with
|
You can recreate the output below using by running `crossplane render` with
|
||||||
these files.
|
these files.
|
||||||
|
|
||||||
The `xr.yaml` file contains the composite resource to render:
|
The `xr.yaml` file contains the composite resource to render:
|
||||||
|
|
@ -627,7 +624,7 @@ The `functions.yaml` file contains the Functions the Composition references in
|
||||||
its pipeline steps:
|
its pipeline steps:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
apiVersion: pkg.crossplane.io/v1beta1
|
apiVersion: pkg.crossplane.io/v1
|
||||||
kind: Function
|
kind: Function
|
||||||
metadata:
|
metadata:
|
||||||
name: function-xbuckets
|
name: function-xbuckets
|
||||||
|
|
@ -642,12 +639,12 @@ spec:
|
||||||
|
|
||||||
The Function in `functions.yaml` uses the
|
The Function in `functions.yaml` uses the
|
||||||
{{<hover label="development" line="6">}}Development{{</hover>}}
|
{{<hover label="development" line="6">}}Development{{</hover>}}
|
||||||
runtime. This tells `crossplane beta render` that your function is running
|
runtime. This tells `crossplane render` that your function is running
|
||||||
locally. It connects to your locally running function instead of using Docker to
|
locally. It connects to your locally running function instead of using Docker to
|
||||||
pull and run the function.
|
pull and run the function.
|
||||||
|
|
||||||
```yaml {label="development"}
|
```yaml {label="development"}
|
||||||
apiVersion: pkg.crossplane.io/v1beta1
|
apiVersion: pkg.crossplane.io/v1
|
||||||
kind: Function
|
kind: Function
|
||||||
metadata:
|
metadata:
|
||||||
name: function-xbuckets
|
name: function-xbuckets
|
||||||
|
|
@ -667,10 +664,10 @@ to run without encryption or authentication. Only use it during testing and
|
||||||
development.
|
development.
|
||||||
{{</hint>}}
|
{{</hint>}}
|
||||||
|
|
||||||
In a separate terminal, run `crossplane beta render`.
|
In a separate terminal, run `crossplane render`.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
crossplane beta render xr.yaml composition.yaml functions.yaml
|
crossplane render xr.yaml composition.yaml functions.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
This command calls your function. In the terminal where your function is running
|
This command calls your function. In the terminal where your function is running
|
||||||
|
|
@ -682,7 +679,7 @@ go run . --insecure --debug
|
||||||
2023-10-31T16:17:32.159-0700 INFO function-xbuckets/fn.go:125 Added desired buckets {"xr-version": "example.crossplane.io/v1", "xr-kind": "XBuckets", "xr-name": "example-buckets", "region": "us-east-2", "count": 3}
|
2023-10-31T16:17:32.159-0700 INFO function-xbuckets/fn.go:125 Added desired buckets {"xr-version": "example.crossplane.io/v1", "xr-kind": "XBuckets", "xr-name": "example-buckets", "region": "us-east-2", "count": 3}
|
||||||
```
|
```
|
||||||
|
|
||||||
The `crossplane beta render` command prints the desired resources the function
|
The `crossplane render` command prints the desired resources the function
|
||||||
returns.
|
returns.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
@ -740,7 +737,7 @@ spec:
|
||||||
|
|
||||||
{{<hint "tip">}}
|
{{<hint "tip">}}
|
||||||
Read the composition functions documentation to learn more about
|
Read the composition functions documentation to learn more about
|
||||||
[testing composition functions]({{< ref "../concepts/composition-functions#test-a-composition-that-uses-functions" >}}).
|
[testing composition functions]({{< ref "../concepts/compositions#test-a-composition" >}}).
|
||||||
{{</hint>}}
|
{{</hint>}}
|
||||||
|
|
||||||
## Build and push the function to a package registry
|
## Build and push the function to a package registry
|
||||||
|
|
@ -757,7 +754,7 @@ then pushing all the packages to a single tag in the registry.
|
||||||
|
|
||||||
Pushing your function to a registry allows you to use your function in a
|
Pushing your function to a registry allows you to use your function in a
|
||||||
Crossplane control plane. See the
|
Crossplane control plane. See the
|
||||||
[composition functions documentation]({{<ref "../concepts/composition-functions" >}}).
|
[composition functions documentation]({{<ref "../concepts/compositions" >}}).
|
||||||
to learn how to use a function in a control plane.
|
to learn how to use a function in a control plane.
|
||||||
|
|
||||||
Use Docker to build a runtime for each platform.
|
Use Docker to build a runtime for each platform.
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Write a Composition Function in Python
|
title: Write a Composition Function in Python
|
||||||
state: beta
|
|
||||||
alphaVersion: "1.11"
|
|
||||||
betaVersion: "1.14"
|
|
||||||
weight: 81
|
weight: 81
|
||||||
description: "Composition functions allow you to template resources using Python"
|
description: "Composition functions allow you to template resources using Python"
|
||||||
---
|
---
|
||||||
|
|
@ -11,7 +8,7 @@ Composition functions (or just functions, for short) are custom programs that
|
||||||
template Crossplane resources. Crossplane calls composition functions to
|
template Crossplane resources. Crossplane calls composition functions to
|
||||||
determine what resources it should create when you create a composite resource
|
determine what resources it should create when you create a composite resource
|
||||||
(XR). Read the
|
(XR). Read the
|
||||||
[concepts]({{<ref "../concepts/composition-functions" >}})
|
[concepts]({{<ref "../concepts/compositions" >}})
|
||||||
page to learn more about composition functions.
|
page to learn more about composition functions.
|
||||||
|
|
||||||
You can write a function to template resources using a general purpose
|
You can write a function to template resources using a general purpose
|
||||||
|
|
@ -22,7 +19,7 @@ conditionals. This guide explains how to write a composition function in
|
||||||
|
|
||||||
{{< hint "important" >}}
|
{{< hint "important" >}}
|
||||||
It helps to be familiar with
|
It helps to be familiar with
|
||||||
[how composition functions work]({{<ref "../concepts/composition-functions#how-composition-functions-work" >}})
|
[how composition functions work]({{<ref "../concepts/compositions#how-composition-functions-work" >}})
|
||||||
before following this guide.
|
before following this guide.
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
@ -80,17 +77,17 @@ build or test a composition function.
|
||||||
|
|
||||||
## Initialize the function from a template
|
## Initialize the function from a template
|
||||||
|
|
||||||
Use the `crossplane beta xpkg init` command to initialize a new function. When
|
Use the `crossplane xpkg init` command to initialize a new function. When
|
||||||
you run this command it initializes your function using
|
you run this command it initializes your function using
|
||||||
[a GitHub repository](https://github.com/crossplane/function-template-python)
|
[a GitHub repository](https://github.com/crossplane/function-template-python)
|
||||||
as a template.
|
as a template.
|
||||||
|
|
||||||
```shell {copy-lines=1}
|
```shell {copy-lines=1}
|
||||||
crossplane beta xpkg init function-xbuckets https://github.com/crossplane/function-template-python -d function-xbuckets
|
crossplane xpkg init function-xbuckets https://github.com/crossplane/function-template-python -d function-xbuckets
|
||||||
Initialized package "function-xbuckets" in directory "/home/negz/control/negz/function-xbuckets" from https://github.com/crossplane/function-template-python/tree/bfed6923ab4c8e7adeed70f41138645fc7d38111 (main)
|
Initialized package "function-xbuckets" in directory "/home/negz/control/negz/function-xbuckets" from https://github.com/crossplane/function-template-python/tree/bfed6923ab4c8e7adeed70f41138645fc7d38111 (main)
|
||||||
```
|
```
|
||||||
|
|
||||||
The `crossplane beta init xpkg` command creates a directory named
|
The `crossplane xpkg init` command creates a directory named
|
||||||
`function-xbuckets`. When you run the command the new directory should look like
|
`function-xbuckets`. When you run the command the new directory should look like
|
||||||
this:
|
this:
|
||||||
|
|
||||||
|
|
@ -118,7 +115,7 @@ know about some other files in the template:
|
||||||
<!--
|
<!--
|
||||||
This tip talks about future plans for Crossplane.
|
This tip talks about future plans for Crossplane.
|
||||||
-->
|
-->
|
||||||
In v1.14 of the Crossplane CLI `crossplane beta xpkg init` just clones a
|
In v1.14 of the Crossplane CLI `crossplane xpkg init` just clones a
|
||||||
template GitHub repository. A future CLI release will automate tasks like
|
template GitHub repository. A future CLI release will automate tasks like
|
||||||
replacing the template name with the new function's name. See Crossplane issue
|
replacing the template name with the new function's name. See Crossplane issue
|
||||||
[#4941](https://github.com/crossplane/crossplane/issues/4941) for details.
|
[#4941](https://github.com/crossplane/crossplane/issues/4941) for details.
|
||||||
|
|
@ -132,7 +129,7 @@ The `package/input` directory defines the OpenAPI schema for the a function's
|
||||||
input. The function in this guide doesn't accept an input. Delete the
|
input. The function in this guide doesn't accept an input. Delete the
|
||||||
`package/input` directory.
|
`package/input` directory.
|
||||||
|
|
||||||
The [composition functions]({{<ref "../concepts/composition-functions" >}})
|
The [composition functions]({{<ref "../concepts/compositions" >}})
|
||||||
documentation explains composition function inputs.
|
documentation explains composition function inputs.
|
||||||
|
|
||||||
{{<hint "tip">}}
|
{{<hint "tip">}}
|
||||||
|
|
@ -151,7 +148,7 @@ method in `function/fn.py`. When you first open the file it contains a "hello
|
||||||
world" function.
|
world" function.
|
||||||
|
|
||||||
```python {label="hello-world"}
|
```python {label="hello-world"}
|
||||||
async def RunFunction(self, req: fnv1beta1.RunFunctionRequest, _: grpc.aio.ServicerContext) -> fnv1beta1.RunFunctionResponse:
|
async def RunFunction(self, req: fnv1.RunFunctionRequest, _: grpc.aio.ServicerContext) -> fnv1.RunFunctionResponse:
|
||||||
log = self.log.bind(tag=req.meta.tag)
|
log = self.log.bind(tag=req.meta.tag)
|
||||||
log.info("Running function")
|
log.info("Running function")
|
||||||
|
|
||||||
|
|
@ -178,7 +175,7 @@ The function tells Crossplane what resources it should compose by returning a
|
||||||
Edit the `RunFunction` method to replace it with this code.
|
Edit the `RunFunction` method to replace it with this code.
|
||||||
|
|
||||||
```python {hl_lines="7-28"}
|
```python {hl_lines="7-28"}
|
||||||
async def RunFunction(self, req: fnv1beta1.RunFunctionRequest, _: grpc.aio.ServicerContext) -> fnv1beta1.RunFunctionResponse:
|
async def RunFunction(self, req: fnv1.RunFunctionRequest, _: grpc.aio.ServicerContext) -> fnv1.RunFunctionResponse:
|
||||||
log = self.log.bind(tag=req.meta.tag)
|
log = self.log.bind(tag=req.meta.tag)
|
||||||
log.info("Running function")
|
log.info("Running function")
|
||||||
|
|
||||||
|
|
@ -219,11 +216,11 @@ commentary explaining the function's logic.
|
||||||
|
|
||||||
import grpc
|
import grpc
|
||||||
from crossplane.function import logging, response
|
from crossplane.function import logging, response
|
||||||
from crossplane.function.proto.v1beta1 import run_function_pb2 as fnv1beta1
|
from crossplane.function.proto.v1 import run_function_pb2 as fnv1
|
||||||
from crossplane.function.proto.v1beta1 import run_function_pb2_grpc as grpcv1beta1
|
from crossplane.function.proto.v1 import run_function_pb2_grpc as grpcv1
|
||||||
|
|
||||||
|
|
||||||
class FunctionRunner(grpcv1beta1.FunctionRunnerService):
|
class FunctionRunner(grpcv1.FunctionRunnerService):
|
||||||
"""A FunctionRunner handles gRPC RunFunctionRequests."""
|
"""A FunctionRunner handles gRPC RunFunctionRequests."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
@ -231,8 +228,8 @@ class FunctionRunner(grpcv1beta1.FunctionRunnerService):
|
||||||
self.log = logging.get_logger()
|
self.log = logging.get_logger()
|
||||||
|
|
||||||
async def RunFunction(
|
async def RunFunction(
|
||||||
self, req: fnv1beta1.RunFunctionRequest, _: grpc.aio.ServicerContext
|
self, req: fnv1.RunFunctionRequest, _: grpc.aio.ServicerContext
|
||||||
) -> fnv1beta1.RunFunctionResponse:
|
) -> fnv1.RunFunctionResponse:
|
||||||
"""Run the function."""
|
"""Run the function."""
|
||||||
# Create a logger for this request.
|
# Create a logger for this request.
|
||||||
log = self.log.bind(tag=req.meta.tag)
|
log = self.log.bind(tag=req.meta.tag)
|
||||||
|
|
@ -257,7 +254,7 @@ class FunctionRunner(grpcv1beta1.FunctionRunnerService):
|
||||||
# the key and mutate its value as if it did exist.
|
# the key and mutate its value as if it did exist.
|
||||||
#
|
#
|
||||||
# The below code works because accessing the xbuckets-{name} key
|
# The below code works because accessing the xbuckets-{name} key
|
||||||
# automatically creates a new, empty fnv1beta1.Resource message. The
|
# automatically creates a new, empty fnv1.Resource message. The
|
||||||
# Resource message has a resource field containing an empty Struct
|
# Resource message has a resource field containing an empty Struct
|
||||||
# object that can be populated from a dictionary by calling update.
|
# object that can be populated from a dictionary by calling update.
|
||||||
#
|
#
|
||||||
|
|
@ -308,7 +305,7 @@ Read [the Python Function SDK documentation](https://crossplane.github.io/functi
|
||||||
The Python SDK automatically generates the `RunFunctionRequest` and
|
The Python SDK automatically generates the `RunFunctionRequest` and
|
||||||
`RunFunctionResponse` Python objects from a
|
`RunFunctionResponse` Python objects from a
|
||||||
[Protocol Buffers](https://protobuf.dev) schema. You can see the schema in the
|
[Protocol Buffers](https://protobuf.dev) schema. You can see the schema in the
|
||||||
[Buf Schema Registry](https://buf.build/crossplane/crossplane/docs/main:apiextensions.fn.proto.v1beta1).
|
[Buf Schema Registry](https://buf.build/crossplane/crossplane/docs/main:apiextensions.fn.proto.v1).
|
||||||
|
|
||||||
The fields of the generated Python objects behave similarly to builtin Python
|
The fields of the generated Python objects behave similarly to builtin Python
|
||||||
types like dictionaries and lists. Be aware that there are some differences.
|
types like dictionaries and lists. Be aware that there are some differences.
|
||||||
|
|
@ -321,7 +318,7 @@ Instead of adding a new resource like this:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
resource = {"apiVersion": "example.org/v1", "kind": "Composed", ...}
|
resource = {"apiVersion": "example.org/v1", "kind": "Composed", ...}
|
||||||
rsp.desired.resources["new-resource"] = fnv1beta1.Resource(resource=resource)
|
rsp.desired.resources["new-resource"] = fnv1.Resource(resource=resource)
|
||||||
```
|
```
|
||||||
|
|
||||||
Pretend it already exists and mutate it, like this:
|
Pretend it already exists and mutate it, like this:
|
||||||
|
|
@ -338,8 +335,8 @@ for further details.
|
||||||
|
|
||||||
## Test the function end-to-end
|
## Test the function end-to-end
|
||||||
|
|
||||||
Test your function by adding unit tests, and by using the `crossplane beta
|
Test your function by adding unit tests, and by using the `crossplane render`
|
||||||
render` command.
|
command.
|
||||||
|
|
||||||
When you initialize a function from the
|
When you initialize a function from the
|
||||||
template it adds some unit tests to `tests/test_fn.py`. These tests use the
|
template it adds some unit tests to `tests/test_fn.py`. These tests use the
|
||||||
|
|
@ -355,7 +352,7 @@ import dataclasses
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from crossplane.function import logging, resource
|
from crossplane.function import logging, resource
|
||||||
from crossplane.function.proto.v1beta1 import run_function_pb2 as fnv1beta1
|
from crossplane.function.proto.v1 import run_function_pb2 as fnv1
|
||||||
from google.protobuf import duration_pb2 as durationpb
|
from google.protobuf import duration_pb2 as durationpb
|
||||||
from google.protobuf import json_format
|
from google.protobuf import json_format
|
||||||
from google.protobuf import struct_pb2 as structpb
|
from google.protobuf import struct_pb2 as structpb
|
||||||
|
|
@ -372,15 +369,15 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
class TestCase:
|
class TestCase:
|
||||||
reason: str
|
reason: str
|
||||||
req: fnv1beta1.RunFunctionRequest
|
req: fnv1.RunFunctionRequest
|
||||||
want: fnv1beta1.RunFunctionResponse
|
want: fnv1.RunFunctionResponse
|
||||||
|
|
||||||
cases = [
|
cases = [
|
||||||
TestCase(
|
TestCase(
|
||||||
reason="The function should compose two S3 buckets.",
|
reason="The function should compose two S3 buckets.",
|
||||||
req=fnv1beta1.RunFunctionRequest(
|
req=fnv1.RunFunctionRequest(
|
||||||
observed=fnv1beta1.State(
|
observed=fnv1.State(
|
||||||
composite=fnv1beta1.Resource(
|
composite=fnv1.Resource(
|
||||||
resource=resource.dict_to_struct(
|
resource=resource.dict_to_struct(
|
||||||
{
|
{
|
||||||
"apiVersion": "example.crossplane.io/v1alpha1",
|
"apiVersion": "example.crossplane.io/v1alpha1",
|
||||||
|
|
@ -395,11 +392,11 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
want=fnv1beta1.RunFunctionResponse(
|
want=fnv1.RunFunctionResponse(
|
||||||
meta=fnv1beta1.ResponseMeta(ttl=durationpb.Duration(seconds=60)),
|
meta=fnv1.ResponseMeta(ttl=durationpb.Duration(seconds=60)),
|
||||||
desired=fnv1beta1.State(
|
desired=fnv1.State(
|
||||||
resources={
|
resources={
|
||||||
"xbuckets-test-bucket-a": fnv1beta1.Resource(
|
"xbuckets-test-bucket-a": fnv1.Resource(
|
||||||
resource=resource.dict_to_struct(
|
resource=resource.dict_to_struct(
|
||||||
{
|
{
|
||||||
"apiVersion": "s3.aws.upbound.io/v1beta1",
|
"apiVersion": "s3.aws.upbound.io/v1beta1",
|
||||||
|
|
@ -415,7 +412,7 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
"xbuckets-test-bucket-b": fnv1beta1.Resource(
|
"xbuckets-test-bucket-b": fnv1.Resource(
|
||||||
resource=resource.dict_to_struct(
|
resource=resource.dict_to_struct(
|
||||||
{
|
{
|
||||||
"apiVersion": "s3.aws.upbound.io/v1beta1",
|
"apiVersion": "s3.aws.upbound.io/v1beta1",
|
||||||
|
|
@ -482,7 +479,7 @@ Expand the following block to see example files.
|
||||||
|
|
||||||
{{<expand "The xr.yaml, composition.yaml and function.yaml files">}}
|
{{<expand "The xr.yaml, composition.yaml and function.yaml files">}}
|
||||||
|
|
||||||
You can recreate the output below using by running `crossplane beta render` with
|
You can recreate the output below using by running `crossplane render` with
|
||||||
these files.
|
these files.
|
||||||
|
|
||||||
The `xr.yaml` file contains the composite resource to render:
|
The `xr.yaml` file contains the composite resource to render:
|
||||||
|
|
@ -527,7 +524,7 @@ The `functions.yaml` file contains the Functions the Composition references in
|
||||||
its pipeline steps:
|
its pipeline steps:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
apiVersion: pkg.crossplane.io/v1beta1
|
apiVersion: pkg.crossplane.io/v1
|
||||||
kind: Function
|
kind: Function
|
||||||
metadata:
|
metadata:
|
||||||
name: function-xbuckets
|
name: function-xbuckets
|
||||||
|
|
@ -542,12 +539,12 @@ spec:
|
||||||
|
|
||||||
The Function in `functions.yaml` uses the
|
The Function in `functions.yaml` uses the
|
||||||
{{<hover label="development" line="6">}}Development{{</hover>}}
|
{{<hover label="development" line="6">}}Development{{</hover>}}
|
||||||
runtime. This tells `crossplane beta render` that your function is running
|
runtime. This tells `crossplane render` that your function is running
|
||||||
locally. It connects to your locally running function instead of using Docker to
|
locally. It connects to your locally running function instead of using Docker to
|
||||||
pull and run the function.
|
pull and run the function.
|
||||||
|
|
||||||
```yaml {label="development"}
|
```yaml {label="development"}
|
||||||
apiVersion: pkg.crossplane.io/v1beta1
|
apiVersion: pkg.crossplane.io/v1
|
||||||
kind: Function
|
kind: Function
|
||||||
metadata:
|
metadata:
|
||||||
name: function-xbuckets
|
name: function-xbuckets
|
||||||
|
|
@ -566,10 +563,10 @@ hatch run development
|
||||||
Only use it during testing and development.
|
Only use it during testing and development.
|
||||||
{{</hint>}}
|
{{</hint>}}
|
||||||
|
|
||||||
In a separate terminal, run `crossplane beta render`.
|
In a separate terminal, run `crossplane render`.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
crossplane beta render xr.yaml composition.yaml functions.yaml
|
crossplane render xr.yaml composition.yaml functions.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
This command calls your function. In the terminal where your function is running
|
This command calls your function. In the terminal where your function is running
|
||||||
|
|
@ -581,7 +578,7 @@ hatch run development
|
||||||
2024-01-11T22:12:58.153792Z [info ] Added desired buckets count=3 filename=fn.py lineno=68 region=us-east-2 tag=
|
2024-01-11T22:12:58.153792Z [info ] Added desired buckets count=3 filename=fn.py lineno=68 region=us-east-2 tag=
|
||||||
```
|
```
|
||||||
|
|
||||||
The `crossplane beta render` command prints the desired resources the function
|
The `crossplane render` command prints the desired resources the function
|
||||||
returns.
|
returns.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
@ -639,7 +636,7 @@ spec:
|
||||||
|
|
||||||
{{<hint "tip">}}
|
{{<hint "tip">}}
|
||||||
Read the composition functions documentation to learn more about
|
Read the composition functions documentation to learn more about
|
||||||
[testing composition functions]({{< ref "../concepts/composition-functions#test-a-composition-that-uses-functions" >}}).
|
[testing composition functions]({{< ref "../concepts/compositions#test-a-composition" >}}).
|
||||||
{{</hint>}}
|
{{</hint>}}
|
||||||
|
|
||||||
## Build and push the function to a package registry
|
## Build and push the function to a package registry
|
||||||
|
|
@ -656,7 +653,7 @@ then pushing all the packages to a single tag in the registry.
|
||||||
|
|
||||||
Pushing your function to a registry allows you to use your function in a
|
Pushing your function to a registry allows you to use your function in a
|
||||||
Crossplane control plane. See the
|
Crossplane control plane. See the
|
||||||
[composition functions documentation]({{<ref "../concepts/composition-functions" >}}).
|
[composition functions documentation]({{<ref "../concepts/compositions" >}}).
|
||||||
to learn how to use a function in a control plane.
|
to learn how to use a function in a control plane.
|
||||||
|
|
||||||
Use Docker to build a runtime for each platform.
|
Use Docker to build a runtime for each platform.
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: Learn
|
title: Learn More
|
||||||
description: Learn more about Crossplane.
|
description: Learn more about Crossplane.
|
||||||
|
weight: 500
|
||||||
---
|
---
|
||||||
|
|
||||||
If you have any questions, please drop us a note on [Crossplane Slack][join-crossplane-slack] or [contact us][contact-us]!
|
If you have any questions, please drop us a note on [Crossplane Slack][join-crossplane-slack] or [contact us][contact-us]!
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
---
|
---
|
||||||
title: Install, Uninstall and Upgrade
|
title: Install, Upgrade and Uninstall
|
||||||
weight: 300
|
weight: 10
|
||||||
description: Manage Crossplane installations
|
description: Manage Crossplane installations
|
||||||
---
|
---
|
||||||
|
|
||||||
## [Install Crossplane](install/)
|
## [Install Crossplane](install/)
|
||||||
How to install and customize Crossplane in an existing Kubernetes cluster.
|
How to install and customize Crossplane in an existing Kubernetes cluster.
|
||||||
|
|
||||||
|
## [Upgrade Crossplane](upgrade/)
|
||||||
|
How to upgrade Crossplane to newer versions of the software.
|
||||||
|
|
||||||
## [Uninstall Crossplane](uninstall/)
|
## [Uninstall Crossplane](uninstall/)
|
||||||
How to remove Crossplane from a Kubernetes cluster.
|
How to remove Crossplane from a Kubernetes cluster.
|
||||||
|
|
@ -18,6 +18,7 @@ If you don't have a Kubernetes cluster create one locally with [Kind](https://ki
|
||||||
|
|
||||||
Install Crossplane using the Crossplane published _Helm chart_.
|
Install Crossplane using the Crossplane published _Helm chart_.
|
||||||
|
|
||||||
|
|
||||||
### Add the Crossplane Helm repository
|
### Add the Crossplane Helm repository
|
||||||
|
|
||||||
Add the Crossplane repository with the `helm repo add` command.
|
Add the Crossplane repository with the `helm repo add` command.
|
||||||
|
|
@ -71,6 +72,7 @@ helm install crossplane \
|
||||||
{{< /hint >}}
|
{{< /hint >}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Installed deployments
|
## Installed deployments
|
||||||
Crossplane creates two Kubernetes _deployments_ in the `crossplane-system`
|
Crossplane creates two Kubernetes _deployments_ in the `crossplane-system`
|
||||||
namespace to deploy the Crossplane pods.
|
namespace to deploy the Crossplane pods.
|
||||||
|
|
@ -90,7 +92,7 @@ Kubernetes cluster.
|
||||||
After the `init` container finishes, the `crossplane` pod manages two Kubernetes
|
After the `init` container finishes, the `crossplane` pod manages two Kubernetes
|
||||||
controllers.
|
controllers.
|
||||||
* The _Package Manager controller_ installs the
|
* The _Package Manager controller_ installs the
|
||||||
provider and configuration packages.
|
provider, function and configuration packages.
|
||||||
* The _Composition controller_ installs and manages the
|
* The _Composition controller_ installs and manages the
|
||||||
Crossplane _Composite Resource Definitions_, _Compositions_ and _Claims_.
|
Crossplane _Composite Resource Definitions_, _Compositions_ and _Claims_.
|
||||||
|
|
||||||
|
|
@ -110,6 +112,7 @@ chart.
|
||||||
|
|
||||||
Apply customizations with the command line or with a Helm _values_ file.
|
Apply customizations with the command line or with a Helm _values_ file.
|
||||||
|
|
||||||
|
<!-- Generated from Helm README at https://github.com/crossplane/crossplane/blob/master/cluster/charts/crossplane/README.md -->
|
||||||
<!-- vale gitlab.Substitutions = NO -->
|
<!-- vale gitlab.Substitutions = NO -->
|
||||||
<!-- allow lowercase yaml -->
|
<!-- allow lowercase yaml -->
|
||||||
{{<expand "All Crossplane customization options" >}}
|
{{<expand "All Crossplane customization options" >}}
|
||||||
|
|
@ -127,6 +130,7 @@ Apply customizations with the command line or with a Helm _values_ file.
|
||||||
| `extraObjects` | To add arbitrary Kubernetes Objects during a Helm Install | `[]` |
|
| `extraObjects` | To add arbitrary Kubernetes Objects during a Helm Install | `[]` |
|
||||||
| `extraVolumeMountsCrossplane` | Add custom `volumeMounts` to the Crossplane pod. | `{}` |
|
| `extraVolumeMountsCrossplane` | Add custom `volumeMounts` to the Crossplane pod. | `{}` |
|
||||||
| `extraVolumesCrossplane` | Add custom `volumes` to the Crossplane pod. | `{}` |
|
| `extraVolumesCrossplane` | Add custom `volumes` to the Crossplane pod. | `{}` |
|
||||||
|
| `function.packages` | A list of Function packages to install. | `[]` |
|
||||||
| `hostNetwork` | Enable `hostNetwork` for the Crossplane deployment. Caution: enabling `hostNetwork` grants the Crossplane Pod access to the host network namespace. | `false` |
|
| `hostNetwork` | Enable `hostNetwork` for the Crossplane deployment. Caution: enabling `hostNetwork` grants the Crossplane Pod access to the host network namespace. | `false` |
|
||||||
| `image.pullPolicy` | The image pull policy used for Crossplane and RBAC Manager pods. | `"IfNotPresent"` |
|
| `image.pullPolicy` | The image pull policy used for Crossplane and RBAC Manager pods. | `"IfNotPresent"` |
|
||||||
| `image.repository` | Repository for the Crossplane pod image. | `"xpkg.upbound.io/crossplane/crossplane"` |
|
| `image.repository` | Repository for the Crossplane pod image. | `"xpkg.upbound.io/crossplane/crossplane"` |
|
||||||
|
|
@ -147,11 +151,11 @@ Apply customizations with the command line or with a Helm _values_ file.
|
||||||
| `rbacManager.args` | Add custom arguments to the RBAC Manager pod. | `[]` |
|
| `rbacManager.args` | Add custom arguments to the RBAC Manager pod. | `[]` |
|
||||||
| `rbacManager.deploy` | Deploy the RBAC Manager pod and its required roles. | `true` |
|
| `rbacManager.deploy` | Deploy the RBAC Manager pod and its required roles. | `true` |
|
||||||
| `rbacManager.leaderElection` | Enable [leader election](https://docs.crossplane.io/latest/concepts/pods/#leader-election) for the RBAC Manager pod. | `true` |
|
| `rbacManager.leaderElection` | Enable [leader election](https://docs.crossplane.io/latest/concepts/pods/#leader-election) for the RBAC Manager pod. | `true` |
|
||||||
| `rbacManager.managementPolicy` | Defines the Roles and ClusterRoles the RBAC Manager creates and manages. - A policy of `Basic` creates and binds Roles only for the Crossplane ServiceAccount, Provider ServiceAccounts and creates Crossplane ClusterRoles. - A policy of `All` includes all the `Basic` settings and also creates Crossplane Roles in all namespaces. - Read the Crossplane docs for more information on the [RBAC Roles and ClusterRoles](https://docs.crossplane.io/latest/concepts/pods/#crossplane-clusterroles) | `"Basic"` |
|
|
||||||
| `rbacManager.nodeSelector` | Add `nodeSelectors` to the RBAC Manager pod deployment. | `{}` |
|
| `rbacManager.nodeSelector` | Add `nodeSelectors` to the RBAC Manager pod deployment. | `{}` |
|
||||||
| `rbacManager.replicas` | The number of RBAC Manager pod `replicas` to deploy. | `1` |
|
| `rbacManager.replicas` | The number of RBAC Manager pod `replicas` to deploy. | `1` |
|
||||||
| `rbacManager.skipAggregatedClusterRoles` | Don't install aggregated Crossplane ClusterRoles. | `false` |
|
| `rbacManager.skipAggregatedClusterRoles` | Don't install aggregated Crossplane ClusterRoles. | `false` |
|
||||||
| `rbacManager.tolerations` | Add `tolerations` to the RBAC Manager pod deployment. | `[]` |
|
| `rbacManager.tolerations` | Add `tolerations` to the RBAC Manager pod deployment. | `[]` |
|
||||||
|
| `rbacManager.topologySpreadConstraints` | Add `topologySpreadConstraints` to the RBAC Manager pod deployment. | `[]` |
|
||||||
| `registryCaBundleConfig.key` | The ConfigMap key containing a custom CA bundle to enable fetching packages from registries with unknown or untrusted certificates. | `""` |
|
| `registryCaBundleConfig.key` | The ConfigMap key containing a custom CA bundle to enable fetching packages from registries with unknown or untrusted certificates. | `""` |
|
||||||
| `registryCaBundleConfig.name` | The ConfigMap name containing a custom CA bundle to enable fetching packages from registries with unknown or untrusted certificates. | `""` |
|
| `registryCaBundleConfig.name` | The ConfigMap name containing a custom CA bundle to enable fetching packages from registries with unknown or untrusted certificates. | `""` |
|
||||||
| `replicas` | The number of Crossplane pod `replicas` to deploy. | `1` |
|
| `replicas` | The number of Crossplane pod `replicas` to deploy. | `1` |
|
||||||
|
|
@ -173,6 +177,7 @@ Apply customizations with the command line or with a Helm _values_ file.
|
||||||
| `securityContextRBACManager.runAsUser` | The user ID used by the RBAC Manager pod. | `65532` |
|
| `securityContextRBACManager.runAsUser` | The user ID used by the RBAC Manager pod. | `65532` |
|
||||||
| `serviceAccount.customAnnotations` | Add custom `annotations` to the Crossplane ServiceAccount. | `{}` |
|
| `serviceAccount.customAnnotations` | Add custom `annotations` to the Crossplane ServiceAccount. | `{}` |
|
||||||
| `tolerations` | Add `tolerations` to the Crossplane pod deployment. | `[]` |
|
| `tolerations` | Add `tolerations` to the Crossplane pod deployment. | `[]` |
|
||||||
|
| `topologySpreadConstraints` | Add `topologySpreadConstraints` to the Crossplane pod deployment. | `[]` |
|
||||||
| `webhooks.enabled` | Enable webhooks for Crossplane and installed Provider packages. | `true` |
|
| `webhooks.enabled` | Enable webhooks for Crossplane and installed Provider packages. | `true` |
|
||||||
{{< /table >}}
|
{{< /table >}}
|
||||||
{{< /expand >}}
|
{{< /expand >}}
|
||||||
|
|
@ -246,11 +251,13 @@ at the table below.
|
||||||
| Status | Flag | Description |
|
| Status | Flag | Description |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| Beta | `--enable-composition-functions` | Enable support for Composition Functions. |
|
| Beta | `--enable-composition-functions` | Enable support for Composition Functions. |
|
||||||
|
| Beta | `--enable-composition-functions-extra-resources` | Enable support for Composition Functions Extra Resources. Only respected with `--enable-composition-functions` enabled. |
|
||||||
| Beta | `--enable-composition-webhook-schema-validation` | Enable Composition validation using schemas. |
|
| Beta | `--enable-composition-webhook-schema-validation` | Enable Composition validation using schemas. |
|
||||||
| Beta | `--enable-deployment-runtime-configs` | Enable support for DeploymentRuntimeConfigs. |
|
| Beta | `--enable-deployment-runtime-configs` | Enable support for DeploymentRuntimeConfigs. |
|
||||||
| Alpha | `--enable-environment-configs` | Enable support for EnvironmentConfigs. |
|
| Alpha | `--enable-environment-configs` | Enable support for EnvironmentConfigs. |
|
||||||
| Alpha | `--enable-external-secret-stores` | Enable support for External Secret Stores. |
|
| Alpha | `--enable-external-secret-stores` | Enable support for External Secret Stores. |
|
||||||
| Alpha | `--enable-realtime-compositions` | Enable support for real time compositions. |
|
| Alpha | `--enable-realtime-compositions` | Enable support for real time compositions. |
|
||||||
|
| Alpha | `--enable-ssa-claims` | Enable support for using server-side apply to sync claims with XRs. |
|
||||||
| Alpha | `--enable-usages` | Enable support for Usages. |
|
| Alpha | `--enable-usages` | Enable support for Usages. |
|
||||||
{{< /table >}}
|
{{< /table >}}
|
||||||
{{< /expand >}}
|
{{< /expand >}}
|
||||||
|
|
@ -259,6 +266,15 @@ Set these flags either in the `values.yaml` file or at install time using the
|
||||||
`--set` flag, for example: `--set
|
`--set` flag, for example: `--set
|
||||||
args='{"--enable-composition-functions","--enable-composition-webhook-schema-validation"}'`.
|
args='{"--enable-composition-functions","--enable-composition-webhook-schema-validation"}'`.
|
||||||
|
|
||||||
|
#### Change the default package registry
|
||||||
|
|
||||||
|
Beginning with Crossplane version 1.15.0 Crossplane downloads packages from the
|
||||||
|
[Upbound Marketplace](https://marketplace.upbound.io) at `xpkg.upbound.io`
|
||||||
|
instead of DockerHub.
|
||||||
|
|
||||||
|
Change the default registry location during the Crossplane install with
|
||||||
|
`--set args='{"--registry=index.docker.io"}'`.
|
||||||
|
|
||||||
### Install pre-release Crossplane versions
|
### Install pre-release Crossplane versions
|
||||||
Install a pre-release versions of Crossplane from the `master` Crossplane Helm channel.
|
Install a pre-release versions of Crossplane from the `master` Crossplane Helm channel.
|
||||||
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
---
|
||||||
|
title: Upgrade Crossplane
|
||||||
|
weight: 200
|
||||||
|
---
|
||||||
|
|
||||||
|
The recommended upgrade method for an existing Crossplane install is to use
|
||||||
|
[Helm](http://helm.io).
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
* [Helm](https://helm.sh/docs/intro/install/) version `v3.2.0` or later
|
||||||
|
|
||||||
|
|
||||||
|
## Add the Crossplane Helm repository
|
||||||
|
Verify Helm has the Crossplane repository.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
helm repo add crossplane-stable https://charts.crossplane.io/stable
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update the Helm repository
|
||||||
|
|
||||||
|
Update the local Crossplane Helm chart with `helm repo update`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
helm repo update
|
||||||
|
```
|
||||||
|
|
||||||
|
{{<hint "important" >}}
|
||||||
|
Upgrading Crossplane without updating the Helm chart installs the last version
|
||||||
|
available in the locally cached Helm chart.
|
||||||
|
{{< /hint >}}
|
||||||
|
|
||||||
|
## Upgrade Crossplane
|
||||||
|
|
||||||
|
Upgrade Crossplane with `helm upgrade`, providing the Crossplane namespace.
|
||||||
|
By default, Crossplane installs into the `crossplane-system`
|
||||||
|
namespace.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
helm upgrade crossplane --namespace crossplane-system crossplane-stable/crossplane
|
||||||
|
```
|
||||||
|
|
||||||
|
Helm preserves any arguments or flags originally used when installing
|
||||||
|
Crossplane.
|
||||||
|
|
||||||
|
Crossplane uses any new default behaviors unless they're changed in the `helm
|
||||||
|
upgrade` command.
|
||||||
|
|
||||||
|
For example, in v1.15.0 Crossplane changed the default image registry from
|
||||||
|
`index.docker.io` to `xpkg.upbound.io`. Upgrading Crossplane from a version
|
||||||
|
before v1.15.0 updates the default package registry.
|
||||||
|
|
||||||
|
Override new defaults by
|
||||||
|
[customizing the Helm chart]({{<ref "install#customize-the-crossplane-helm-chart" >}})
|
||||||
|
with the upgrade command.
|
||||||
|
|
||||||
|
For example, to maintain the original image registry use
|
||||||
|
```shell
|
||||||
|
helm upgrade crossplane --namespace crossplane-system crossplane-stable/crossplane `--set 'args={"--registry=index.docker.io"}'
|
||||||
|
```
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Which which version is the "Latest"?
|
# Which which version is the "Latest"?
|
||||||
LATEST_VER="1.16"
|
LATEST_VER="1.17"
|
||||||
|
|
||||||
# Make a copy of /content/$LATEST_VER to the directory /latest
|
# Make a copy of /content/$LATEST_VER to the directory /latest
|
||||||
# Search indexing only points to /latest, this prevents broken or out of date
|
# Search indexing only points to /latest, this prevents broken or out of date
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue