mirror of https://github.com/crossplane/docs.git
commit
22fb432c5c
|
|
@ -90,7 +90,7 @@ security:
|
|||
# Global parameters accessible by any Page
|
||||
params:
|
||||
# The current "latest" version. Used in the version dropdown
|
||||
latest: "1.16"
|
||||
latest: "1.17"
|
||||
docs: true
|
||||
anchors:
|
||||
# Generate heading anchors for any heading between min and max
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -32,9 +33,12 @@ spec:
|
|||
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.
|
||||
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: |-
|
||||
|
|
@ -76,6 +80,7 @@ spec:
|
|||
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.
|
||||
|
|
@ -100,6 +105,7 @@ spec:
|
|||
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`.
|
||||
|
|
@ -108,6 +114,9 @@ spec:
|
|||
- 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
|
||||
|
|
@ -219,6 +228,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- conversionReviewVersions
|
||||
type: object
|
||||
|
|
@ -265,12 +275,18 @@ spec:
|
|||
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.
|
||||
|
|
@ -309,6 +325,7 @@ spec:
|
|||
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.
|
||||
|
|
@ -333,6 +350,7 @@ spec:
|
|||
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`.
|
||||
|
|
@ -341,6 +359,9 @@ spec:
|
|||
- 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
|
||||
|
|
@ -480,6 +501,13 @@ spec:
|
|||
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.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -34,8 +35,12 @@ spec:
|
|||
schema:
|
||||
openAPIV3Schema:
|
||||
description: |-
|
||||
A CompositionRevision represents a revision in time of a Composition.
|
||||
Revisions are created by Crossplane; they should be treated as immutable.
|
||||
A CompositionRevision represents a revision of a Composition. Crossplane
|
||||
creates new revisions when there are changes to the Composition.
|
||||
|
||||
|
||||
Crossplane creates and manages CompositionRevisions. Don't directly edit
|
||||
CompositionRevisions.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -74,6 +79,9 @@ spec:
|
|||
- apiVersion
|
||||
- kind
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: Value is immutable
|
||||
rule: self == oldSelf
|
||||
environment:
|
||||
description: |-
|
||||
Environment configures the environment in which resources are rendered.
|
||||
|
|
@ -283,7 +291,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options on
|
||||
a field path
|
||||
a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -458,6 +466,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -467,6 +476,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -578,17 +588,20 @@ spec:
|
|||
Mode controls what type or "mode" of Composition will be used.
|
||||
|
||||
|
||||
"Resources" (the default) indicates that a Composition uses what is
|
||||
commonly referred to as "Patch & Transform" or P&T composition. This mode
|
||||
of Composition uses an array of resources, each a template for a composed
|
||||
resource.
|
||||
"Pipeline" indicates that a Composition specifies a pipeline of
|
||||
Composition Functions, each of which is responsible for producing
|
||||
composed resources that Crossplane should create or update.
|
||||
|
||||
|
||||
"Pipeline" indicates that a Composition specifies a pipeline
|
||||
of Composition Functions, each of which is responsible for producing
|
||||
composed resources that Crossplane should create or update. THE PIPELINE
|
||||
MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane
|
||||
feature flag is disabled.
|
||||
"Resources" indicates that a Composition uses what is commonly referred
|
||||
to as "Patch & Transform" or P&T composition. This mode of Composition
|
||||
uses an array of resources, each a template for a composed resource.
|
||||
|
||||
|
||||
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:
|
||||
- Resources
|
||||
- Pipeline
|
||||
|
|
@ -602,6 +615,9 @@ spec:
|
|||
|
||||
PatchSets are only used by the "Resources" mode of Composition. They
|
||||
are ignored by other modes.
|
||||
|
||||
|
||||
Deprecated: Use Composition Functions instead.
|
||||
items:
|
||||
description: |-
|
||||
A PatchSet is a set of patches that can be reused from all resources within
|
||||
|
|
@ -695,7 +711,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options
|
||||
on a field path
|
||||
on a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -871,6 +887,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -880,6 +897,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -976,13 +994,49 @@ spec:
|
|||
|
||||
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
||||
ignored by other modes.
|
||||
|
||||
|
||||
THIS IS A BETA FIELD. It is not honored if the relevant Crossplane
|
||||
feature flag is disabled.
|
||||
items:
|
||||
description: A PipelineStep in a Composition Function pipeline.
|
||||
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:
|
||||
description: |-
|
||||
FunctionRef is a reference to the Composition Function this step should
|
||||
|
|
@ -1010,6 +1064,9 @@ spec:
|
|||
- step
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- step
|
||||
x-kubernetes-list-type: map
|
||||
publishConnectionDetailsWithStoreConfigRef:
|
||||
default:
|
||||
name: default
|
||||
|
|
@ -1037,6 +1094,9 @@ spec:
|
|||
|
||||
Resources are only used by the "Resources" mode of Composition. They are
|
||||
ignored by other modes.
|
||||
|
||||
|
||||
Deprecated: Use Composition Functions instead.
|
||||
items:
|
||||
description: |-
|
||||
ComposedTemplate is used to provide information about how the composed resource
|
||||
|
|
@ -1191,7 +1251,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options
|
||||
on a field path
|
||||
on a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -1367,6 +1427,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -1376,6 +1437,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -1471,7 +1533,7 @@ spec:
|
|||
items:
|
||||
description: |-
|
||||
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
||||
for consumption
|
||||
for consumption.
|
||||
properties:
|
||||
fieldPath:
|
||||
description: FieldPath shows the path of the field whose
|
||||
|
|
@ -1528,6 +1590,9 @@ spec:
|
|||
description: Revision number. Newer revisions have larger numbers.
|
||||
format: int64
|
||||
type: integer
|
||||
x-kubernetes-validations:
|
||||
- message: Value is immutable
|
||||
rule: self == oldSelf
|
||||
writeConnectionSecretsToNamespace:
|
||||
description: |-
|
||||
WriteConnectionSecretsToNamespace specifies the namespace in which the
|
||||
|
|
@ -1564,6 +1629,13 @@ spec:
|
|||
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.
|
||||
|
|
@ -1610,8 +1682,12 @@ spec:
|
|||
schema:
|
||||
openAPIV3Schema:
|
||||
description: |-
|
||||
A CompositionRevision represents a revision in time of a Composition.
|
||||
Revisions are created by Crossplane; they should be treated as immutable.
|
||||
A CompositionRevision represents a revision of a Composition. Crossplane
|
||||
creates new revisions when there are changes to the Composition.
|
||||
|
||||
|
||||
Crossplane creates and manages CompositionRevisions. Don't directly edit
|
||||
CompositionRevisions.
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -1650,6 +1726,9 @@ spec:
|
|||
- apiVersion
|
||||
- kind
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: Value is immutable
|
||||
rule: self == oldSelf
|
||||
environment:
|
||||
description: |-
|
||||
Environment configures the environment in which resources are rendered.
|
||||
|
|
@ -1859,7 +1938,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options on
|
||||
a field path
|
||||
a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -2034,6 +2113,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -2043,6 +2123,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -2154,17 +2235,20 @@ spec:
|
|||
Mode controls what type or "mode" of Composition will be used.
|
||||
|
||||
|
||||
"Resources" (the default) indicates that a Composition uses what is
|
||||
commonly referred to as "Patch & Transform" or P&T composition. This mode
|
||||
of Composition uses an array of resources, each a template for a composed
|
||||
resource.
|
||||
"Pipeline" indicates that a Composition specifies a pipeline of
|
||||
Composition Functions, each of which is responsible for producing
|
||||
composed resources that Crossplane should create or update.
|
||||
|
||||
|
||||
"Pipeline" indicates that a Composition specifies a pipeline
|
||||
of Composition Functions, each of which is responsible for producing
|
||||
composed resources that Crossplane should create or update. THE PIPELINE
|
||||
MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane
|
||||
feature flag is disabled.
|
||||
"Resources" indicates that a Composition uses what is commonly referred
|
||||
to as "Patch & Transform" or P&T composition. This mode of Composition
|
||||
uses an array of resources, each a template for a composed resource.
|
||||
|
||||
|
||||
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:
|
||||
- Resources
|
||||
- Pipeline
|
||||
|
|
@ -2178,6 +2262,9 @@ spec:
|
|||
|
||||
PatchSets are only used by the "Resources" mode of Composition. They
|
||||
are ignored by other modes.
|
||||
|
||||
|
||||
Deprecated: Use Composition Functions instead.
|
||||
items:
|
||||
description: |-
|
||||
A PatchSet is a set of patches that can be reused from all resources within
|
||||
|
|
@ -2271,7 +2358,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options
|
||||
on a field path
|
||||
on a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -2447,6 +2534,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -2456,6 +2544,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -2552,13 +2641,49 @@ spec:
|
|||
|
||||
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
||||
ignored by other modes.
|
||||
|
||||
|
||||
THIS IS A BETA FIELD. It is not honored if the relevant Crossplane
|
||||
feature flag is disabled.
|
||||
items:
|
||||
description: A PipelineStep in a Composition Function pipeline.
|
||||
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:
|
||||
description: |-
|
||||
FunctionRef is a reference to the Composition Function this step should
|
||||
|
|
@ -2586,6 +2711,9 @@ spec:
|
|||
- step
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- step
|
||||
x-kubernetes-list-type: map
|
||||
publishConnectionDetailsWithStoreConfigRef:
|
||||
default:
|
||||
name: default
|
||||
|
|
@ -2613,6 +2741,9 @@ spec:
|
|||
|
||||
Resources are only used by the "Resources" mode of Composition. They are
|
||||
ignored by other modes.
|
||||
|
||||
|
||||
Deprecated: Use Composition Functions instead.
|
||||
items:
|
||||
description: |-
|
||||
ComposedTemplate is used to provide information about how the composed resource
|
||||
|
|
@ -2767,7 +2898,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options
|
||||
on a field path
|
||||
on a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -2943,6 +3074,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -2952,6 +3084,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -3047,7 +3180,7 @@ spec:
|
|||
items:
|
||||
description: |-
|
||||
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
||||
for consumption
|
||||
for consumption.
|
||||
properties:
|
||||
fieldPath:
|
||||
description: FieldPath shows the path of the field whose
|
||||
|
|
@ -3104,6 +3237,9 @@ spec:
|
|||
description: Revision number. Newer revisions have larger numbers.
|
||||
format: int64
|
||||
type: integer
|
||||
x-kubernetes-validations:
|
||||
- message: Value is immutable
|
||||
rule: self == oldSelf
|
||||
writeConnectionSecretsToNamespace:
|
||||
description: |-
|
||||
WriteConnectionSecretsToNamespace specifies the namespace in which the
|
||||
|
|
@ -3140,6 +3276,13 @@ spec:
|
|||
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.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -30,7 +31,13 @@ spec:
|
|||
name: v1
|
||||
schema:
|
||||
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:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -67,6 +74,9 @@ spec:
|
|||
- apiVersion
|
||||
- kind
|
||||
type: object
|
||||
x-kubernetes-validations:
|
||||
- message: Value is immutable
|
||||
rule: self == oldSelf
|
||||
environment:
|
||||
description: |-
|
||||
Environment configures the environment in which resources are rendered.
|
||||
|
|
@ -276,7 +286,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options on
|
||||
a field path
|
||||
a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -451,6 +461,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -460,6 +471,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -571,17 +583,20 @@ spec:
|
|||
Mode controls what type or "mode" of Composition will be used.
|
||||
|
||||
|
||||
"Resources" (the default) indicates that a Composition uses what is
|
||||
commonly referred to as "Patch & Transform" or P&T composition. This mode
|
||||
of Composition uses an array of resources, each a template for a composed
|
||||
resource.
|
||||
"Pipeline" indicates that a Composition specifies a pipeline of
|
||||
Composition Functions, each of which is responsible for producing
|
||||
composed resources that Crossplane should create or update.
|
||||
|
||||
|
||||
"Pipeline" indicates that a Composition specifies a pipeline
|
||||
of Composition Functions, each of which is responsible for producing
|
||||
composed resources that Crossplane should create or update. THE PIPELINE
|
||||
MODE IS A BETA FEATURE. It is not honored if the relevant Crossplane
|
||||
feature flag is disabled.
|
||||
"Resources" indicates that a Composition uses what is commonly referred
|
||||
to as "Patch & Transform" or P&T composition. This mode of Composition
|
||||
uses an array of resources, each a template for a composed resource.
|
||||
|
||||
|
||||
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:
|
||||
- Resources
|
||||
- Pipeline
|
||||
|
|
@ -595,6 +610,9 @@ spec:
|
|||
|
||||
PatchSets are only used by the "Resources" mode of Composition. They
|
||||
are ignored by other modes.
|
||||
|
||||
|
||||
Deprecated: Use Composition Functions instead.
|
||||
items:
|
||||
description: |-
|
||||
A PatchSet is a set of patches that can be reused from all resources within
|
||||
|
|
@ -688,7 +706,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options
|
||||
on a field path
|
||||
on a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -864,6 +882,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -873,6 +892,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -969,13 +989,49 @@ spec:
|
|||
|
||||
The Pipeline is only used by the "Pipeline" mode of Composition. It is
|
||||
ignored by other modes.
|
||||
|
||||
|
||||
THIS IS A BETA FIELD. It is not honored if the relevant Crossplane
|
||||
feature flag is disabled.
|
||||
items:
|
||||
description: A PipelineStep in a Composition Function pipeline.
|
||||
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:
|
||||
description: |-
|
||||
FunctionRef is a reference to the Composition Function this step should
|
||||
|
|
@ -1003,6 +1059,9 @@ spec:
|
|||
- step
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-map-keys:
|
||||
- step
|
||||
x-kubernetes-list-type: map
|
||||
publishConnectionDetailsWithStoreConfigRef:
|
||||
default:
|
||||
name: default
|
||||
|
|
@ -1030,6 +1089,9 @@ spec:
|
|||
|
||||
Resources are only used by the "Resources" mode of Composition. They are
|
||||
ignored by other modes.
|
||||
|
||||
|
||||
Deprecated: Use Composition Functions instead.
|
||||
items:
|
||||
description: |-
|
||||
ComposedTemplate is used to provide information about how the composed resource
|
||||
|
|
@ -1184,7 +1246,7 @@ spec:
|
|||
type: string
|
||||
mergeOptions:
|
||||
description: MergeOptions Specifies merge options
|
||||
on a field path
|
||||
on a field path.
|
||||
properties:
|
||||
appendSlice:
|
||||
description: Specifies that already existing elements
|
||||
|
|
@ -1360,6 +1422,7 @@ spec:
|
|||
`ToJson` converts any input value into its raw JSON representation.
|
||||
`ToSha1`, `ToSha256` and `ToSha512` generate a hash value based on the input
|
||||
converted to JSON.
|
||||
`ToAdler32` generate a addler32 hash based on the input string.
|
||||
enum:
|
||||
- ToUpper
|
||||
- ToLower
|
||||
|
|
@ -1369,6 +1432,7 @@ spec:
|
|||
- ToSha1
|
||||
- ToSha256
|
||||
- ToSha512
|
||||
- ToAdler32
|
||||
type: string
|
||||
fmt:
|
||||
description: |-
|
||||
|
|
@ -1464,7 +1528,7 @@ spec:
|
|||
items:
|
||||
description: |-
|
||||
ReadinessCheck is used to indicate how to tell whether a resource is ready
|
||||
for consumption
|
||||
for consumption.
|
||||
properties:
|
||||
fieldPath:
|
||||
description: FieldPath shows the path of the field whose
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -24,8 +25,13 @@ spec:
|
|||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A EnvironmentConfig contains a set of arbitrary, unstructured
|
||||
values.
|
||||
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: |-
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -28,8 +29,16 @@ spec:
|
|||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A Usage defines a deletion blocking relationship between two
|
||||
resources.
|
||||
description: |-
|
||||
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:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -168,6 +177,13 @@ spec:
|
|||
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.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -41,7 +42,13 @@ spec:
|
|||
name: v1
|
||||
schema:
|
||||
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:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -70,7 +77,7 @@ spec:
|
|||
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
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||
type: object
|
||||
desiredState:
|
||||
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
|
||||
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.
|
||||
|
|
@ -229,6 +243,7 @@ spec:
|
|||
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
|
||||
|
|
@ -237,6 +252,7 @@ spec:
|
|||
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
|
||||
|
|
@ -244,18 +260,21 @@ spec:
|
|||
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
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -32,8 +33,14 @@ spec:
|
|||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Configuration is the CRD type for a request to add a configuration
|
||||
to Crossplane.
|
||||
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: |-
|
||||
|
|
@ -64,7 +71,7 @@ spec:
|
|||
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
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||
type: object
|
||||
ignoreCrossplaneConstraints:
|
||||
default: false
|
||||
|
|
@ -145,6 +152,13 @@ spec:
|
|||
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.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -24,10 +25,15 @@ spec:
|
|||
schema:
|
||||
openAPIV3Schema:
|
||||
description: |-
|
||||
ControllerConfig is the CRD type for a packaged controller configuration.
|
||||
Deprecated: This API is replaced by DeploymentRuntimeConfig, and is scheduled
|
||||
to be removed in a future release. See the design doc for more details:
|
||||
https://github.com/crossplane/crossplane/blob/11bbe13ea3604928cc4e24e8d0d18f3f5f7e847c/design/one-pager-package-runtime-config.md
|
||||
A ControllerConfig applies settings to controllers like Provider pods.
|
||||
Deprecated: Use the
|
||||
[DeploymentRuntimeConfig](https://docs.crossplane.io/latest/concepts/providers#runtime-configuration)
|
||||
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:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -106,11 +112,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
description: A list of node selector requirements
|
||||
by node's fields.
|
||||
|
|
@ -138,11 +146,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
weight:
|
||||
|
|
@ -155,6 +165,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
description: |-
|
||||
If the affinity requirements specified by this field are not met at
|
||||
|
|
@ -199,11 +210,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchFields:
|
||||
description: A list of node selector requirements
|
||||
by node's fields.
|
||||
|
|
@ -231,14 +244,17 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- nodeSelectorTerms
|
||||
type: object
|
||||
|
|
@ -299,11 +315,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -318,12 +336,12 @@ spec:
|
|||
description: |-
|
||||
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
|
||||
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
|
||||
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.
|
||||
The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
|
||||
Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
|
||||
The same key is forbidden to exist in both matchLabelKeys and labelSelector.
|
||||
Also, matchLabelKeys cannot be set when labelSelector isn't set.
|
||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||
items:
|
||||
type: string
|
||||
|
|
@ -333,12 +351,12 @@ spec:
|
|||
description: |-
|
||||
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
|
||||
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
|
||||
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.
|
||||
The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
|
||||
Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
|
||||
The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
|
||||
Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
|
||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||
items:
|
||||
type: string
|
||||
|
|
@ -379,11 +397,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -403,6 +423,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
description: |-
|
||||
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
||||
|
|
@ -425,6 +446,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
description: |-
|
||||
If the affinity requirements specified by this field are not met at
|
||||
|
|
@ -474,11 +496,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -493,12 +517,12 @@ spec:
|
|||
description: |-
|
||||
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
|
||||
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
|
||||
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.
|
||||
The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
|
||||
Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
|
||||
The same key is forbidden to exist in both matchLabelKeys and labelSelector.
|
||||
Also, matchLabelKeys cannot be set when labelSelector isn't set.
|
||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||
items:
|
||||
type: string
|
||||
|
|
@ -508,12 +532,12 @@ spec:
|
|||
description: |-
|
||||
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
|
||||
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
|
||||
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.
|
||||
The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
|
||||
Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
|
||||
The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
|
||||
Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
|
||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||
items:
|
||||
type: string
|
||||
|
|
@ -553,11 +577,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -577,6 +603,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
description: |-
|
||||
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
||||
|
|
@ -589,6 +616,7 @@ spec:
|
|||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
podAntiAffinity:
|
||||
description: Describes pod anti-affinity scheduling rules (e.g.
|
||||
|
|
@ -646,11 +674,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -665,12 +695,12 @@ spec:
|
|||
description: |-
|
||||
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
|
||||
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
|
||||
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.
|
||||
The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
|
||||
Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
|
||||
The same key is forbidden to exist in both matchLabelKeys and labelSelector.
|
||||
Also, matchLabelKeys cannot be set when labelSelector isn't set.
|
||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||
items:
|
||||
type: string
|
||||
|
|
@ -680,12 +710,12 @@ spec:
|
|||
description: |-
|
||||
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
|
||||
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
|
||||
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.
|
||||
The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
|
||||
Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
|
||||
The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
|
||||
Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
|
||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||
items:
|
||||
type: string
|
||||
|
|
@ -726,11 +756,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -750,6 +782,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
description: |-
|
||||
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
||||
|
|
@ -772,6 +805,7 @@ spec:
|
|||
- weight
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
description: |-
|
||||
If the anti-affinity requirements specified by this field are not met at
|
||||
|
|
@ -821,11 +855,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -840,12 +876,12 @@ spec:
|
|||
description: |-
|
||||
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
|
||||
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
|
||||
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.
|
||||
The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.
|
||||
Also, MatchLabelKeys cannot be set when LabelSelector isn't set.
|
||||
The same key is forbidden to exist in both matchLabelKeys and labelSelector.
|
||||
Also, matchLabelKeys cannot be set when labelSelector isn't set.
|
||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||
items:
|
||||
type: string
|
||||
|
|
@ -855,12 +891,12 @@ spec:
|
|||
description: |-
|
||||
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
|
||||
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
|
||||
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.
|
||||
The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.
|
||||
Also, MismatchLabelKeys cannot be set when LabelSelector isn't set.
|
||||
The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
|
||||
Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
|
||||
This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate.
|
||||
items:
|
||||
type: string
|
||||
|
|
@ -900,11 +936,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -924,6 +962,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
topologyKey:
|
||||
description: |-
|
||||
This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
|
||||
|
|
@ -936,6 +975,7 @@ spec:
|
|||
- topologyKey
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
type: object
|
||||
args:
|
||||
|
|
@ -1157,7 +1197,7 @@ spec:
|
|||
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: http://kubernetes.io/docs/user-guide/annotations
|
||||
More info: http:https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
|
||||
type: object
|
||||
labels:
|
||||
additionalProperties:
|
||||
|
|
@ -1168,7 +1208,7 @@ spec:
|
|||
labels on the pod, not the pod selector. Labels will be merged
|
||||
with internal labels used by crossplane, and labels with a
|
||||
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
|
||||
nodeName:
|
||||
|
|
@ -1190,6 +1230,29 @@ spec:
|
|||
PodSecurityContext holds pod-level security attributes and common container settings.
|
||||
Optional: Defaults to empty. See type description for default values of each field.
|
||||
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:
|
||||
description: |-
|
||||
A special supplemental group that applies to all containers in a pod.
|
||||
|
|
@ -1309,6 +1372,7 @@ spec:
|
|||
format: int64
|
||||
type: integer
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
sysctls:
|
||||
description: |-
|
||||
Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
|
||||
|
|
@ -1328,6 +1392,7 @@ spec:
|
|||
- value
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
windowsOptions:
|
||||
description: |-
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
type: string
|
||||
securityContext:
|
||||
|
|
@ -1500,6 +1565,30 @@ spec:
|
|||
2) has CAP_SYS_ADMIN
|
||||
Note that this field cannot be set when spec.os.name is windows.
|
||||
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:
|
||||
description: |-
|
||||
The capabilities to add/drop when running containers.
|
||||
|
|
@ -1512,12 +1601,14 @@ spec:
|
|||
description: Capability represent POSIX capabilities type
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
drop:
|
||||
description: Removed capabilities
|
||||
items:
|
||||
description: Capability represent POSIX capabilities type
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
privileged:
|
||||
description: |-
|
||||
|
|
@ -1725,6 +1816,8 @@ spec:
|
|||
to container and the other way around.
|
||||
When not set, MountPropagationNone is used.
|
||||
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
|
||||
name:
|
||||
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).
|
||||
Defaults to false.
|
||||
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:
|
||||
description: |-
|
||||
Path within the volume from which the container's volume should be mounted.
|
||||
|
|
@ -1862,6 +1978,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
path:
|
||||
description: 'path is Optional: Used as the mounted root,
|
||||
rather than the full Ceph tree, default is /'
|
||||
|
|
@ -1989,6 +2106,7 @@ spec:
|
|||
- path
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
name:
|
||||
description: |-
|
||||
Name of the referent.
|
||||
|
|
@ -2072,8 +2190,8 @@ spec:
|
|||
properties:
|
||||
fieldRef:
|
||||
description: 'Required: Selects a field of the pod:
|
||||
only annotations, labels, name and namespace are
|
||||
supported.'
|
||||
only annotations, labels, name, namespace and uid
|
||||
are supported.'
|
||||
properties:
|
||||
apiVersion:
|
||||
description: Version of the schema the FieldPath
|
||||
|
|
@ -2132,6 +2250,7 @@ spec:
|
|||
- path
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
emptyDir:
|
||||
description: |-
|
||||
|
|
@ -2254,6 +2373,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
dataSource:
|
||||
description: |-
|
||||
dataSource field can be used to specify either:
|
||||
|
|
@ -2398,11 +2518,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -2430,7 +2552,7 @@ spec:
|
|||
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
|
||||
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.
|
||||
type: string
|
||||
volumeMode:
|
||||
|
|
@ -2474,6 +2596,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
wwids:
|
||||
description: |-
|
||||
wwids Optional: FC volume world wide identifiers (wwids)
|
||||
|
|
@ -2481,6 +2604,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
flexVolume:
|
||||
description: |-
|
||||
|
|
@ -2701,6 +2825,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
readOnly:
|
||||
description: |-
|
||||
readOnly here will force the ReadOnly setting in VolumeMounts.
|
||||
|
|
@ -2889,11 +3014,13 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
|
|
@ -2972,6 +3099,7 @@ spec:
|
|||
- path
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
name:
|
||||
description: |-
|
||||
Name of the referent.
|
||||
|
|
@ -2999,7 +3127,7 @@ spec:
|
|||
fieldRef:
|
||||
description: 'Required: Selects a field
|
||||
of the pod: only annotations, labels,
|
||||
name and namespace are supported.'
|
||||
name, namespace and uid are supported.'
|
||||
properties:
|
||||
apiVersion:
|
||||
description: Version of the schema the
|
||||
|
|
@ -3062,6 +3190,7 @@ spec:
|
|||
- path
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
secret:
|
||||
description: secret information about the secret data
|
||||
|
|
@ -3105,6 +3234,7 @@ spec:
|
|||
- path
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
name:
|
||||
description: |-
|
||||
Name of the referent.
|
||||
|
|
@ -3148,6 +3278,7 @@ spec:
|
|||
type: object
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
type: object
|
||||
quobyte:
|
||||
description: quobyte represents a Quobyte mount on the host
|
||||
|
|
@ -3218,6 +3349,7 @@ spec:
|
|||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
pool:
|
||||
description: |-
|
||||
pool is the rados pool name.
|
||||
|
|
@ -3372,6 +3504,7 @@ spec:
|
|||
- path
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
optional:
|
||||
description: optional field specify whether the Secret or
|
||||
its keys must be defined
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -38,10 +39,16 @@ spec:
|
|||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1beta1
|
||||
name: v1
|
||||
schema:
|
||||
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:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -70,7 +77,7 @@ spec:
|
|||
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
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||
type: object
|
||||
controllerConfigRef:
|
||||
description: |-
|
||||
|
|
@ -196,6 +203,13 @@ spec:
|
|||
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.
|
||||
|
|
@ -277,6 +291,7 @@ spec:
|
|||
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
|
||||
|
|
@ -285,6 +300,7 @@ spec:
|
|||
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
|
||||
|
|
@ -292,18 +308,21 @@ spec:
|
|||
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
|
||||
|
|
@ -314,3 +333,319 @@ spec:
|
|||
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: {}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -29,11 +30,16 @@ spec:
|
|||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1beta1
|
||||
name: v1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: Function is the CRD type for a request to deploy a long-running
|
||||
Function.
|
||||
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: |-
|
||||
|
|
@ -62,7 +68,7 @@ spec:
|
|||
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
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||
type: object
|
||||
controllerConfigRef:
|
||||
description: |-
|
||||
|
|
@ -176,6 +182,13 @@ spec:
|
|||
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.
|
||||
|
|
@ -220,3 +233,219 @@ spec:
|
|||
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,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -41,7 +42,13 @@ spec:
|
|||
name: v1
|
||||
schema:
|
||||
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:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -70,7 +77,7 @@ spec:
|
|||
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
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||
type: object
|
||||
controllerConfigRef:
|
||||
description: |-
|
||||
|
|
@ -196,6 +203,13 @@ spec:
|
|||
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.
|
||||
|
|
@ -272,6 +286,7 @@ spec:
|
|||
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
|
||||
|
|
@ -280,6 +295,7 @@ spec:
|
|||
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
|
||||
|
|
@ -287,18 +303,21 @@ spec:
|
|||
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
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -32,7 +33,13 @@ spec:
|
|||
name: v1
|
||||
schema:
|
||||
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:
|
||||
apiVersion:
|
||||
description: |-
|
||||
|
|
@ -63,7 +70,7 @@ spec:
|
|||
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
|
||||
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||
type: object
|
||||
controllerConfigRef:
|
||||
description: |-
|
||||
|
|
@ -177,6 +184,13 @@ spec:
|
|||
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.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
|
|
@ -29,8 +30,9 @@ spec:
|
|||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A StoreConfig configures how Crossplane controllers should store
|
||||
connection details.
|
||||
description: |-
|
||||
A StoreConfig configures how Crossplane controllers should store connection
|
||||
details in an external secret store.
|
||||
properties:
|
||||
apiVersion:
|
||||
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"
|
||||
weight: -1
|
||||
cascade:
|
||||
version: "1.14"
|
||||
version: "1.17"
|
||||
---
|
||||
|
||||
{{< img src="/media/banner.png" alt="Crossplane Popsicle Truck" size="large" >}}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Crossplane API
|
||||
title: API Reference
|
||||
weight: 400
|
||||
description: "API details for Crossplane's core types"
|
||||
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
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: usages.apiextensions.crossplane.io
|
||||
spec:
|
||||
group: apiextensions.crossplane.io
|
||||
|
|
@ -28,18 +29,31 @@ spec:
|
|||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A Usage defines a deletion blocking relationship between two
|
||||
resources.
|
||||
description: |-
|
||||
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:
|
||||
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'
|
||||
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'
|
||||
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
|
||||
|
|
@ -53,7 +67,9 @@ spec:
|
|||
description: API version of the referent.
|
||||
type: string
|
||||
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
|
||||
resourceRef:
|
||||
description: Reference to the resource.
|
||||
|
|
@ -65,12 +81,14 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
resourceSelector:
|
||||
description: Selector to the resource. This field will be ignored
|
||||
if ResourceRef is set.
|
||||
description: |-
|
||||
Selector to the resource.
|
||||
This field will be ignored if ResourceRef is set.
|
||||
properties:
|
||||
matchControllerRef:
|
||||
description: MatchControllerRef ensures an object with the
|
||||
same controller reference as the selecting object is selected.
|
||||
description: |-
|
||||
MatchControllerRef ensures an object with the same controller reference
|
||||
as the selecting object is selected.
|
||||
type: boolean
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
|
|
@ -91,7 +109,9 @@ spec:
|
|||
description: API version of the referent.
|
||||
type: string
|
||||
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
|
||||
resourceRef:
|
||||
description: Reference to the resource.
|
||||
|
|
@ -103,12 +123,14 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
resourceSelector:
|
||||
description: Selector to the resource. This field will be ignored
|
||||
if ResourceRef is set.
|
||||
description: |-
|
||||
Selector to the resource.
|
||||
This field will be ignored if ResourceRef is set.
|
||||
properties:
|
||||
matchControllerRef:
|
||||
description: MatchControllerRef ensures an object with the
|
||||
same controller reference as the selecting object is selected.
|
||||
description: |-
|
||||
MatchControllerRef ensures an object with the same controller reference
|
||||
as the selecting object is selected.
|
||||
type: boolean
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
|
|
@ -145,14 +167,23 @@ spec:
|
|||
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.
|
||||
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.
|
||||
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.
|
||||
|
|
@ -162,8 +193,9 @@ spec:
|
|||
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.
|
||||
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
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: configurationrevisions.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
|
|
@ -41,17 +42,28 @@ spec:
|
|||
name: v1
|
||||
schema:
|
||||
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:
|
||||
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'
|
||||
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'
|
||||
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
|
||||
|
|
@ -61,9 +73,11 @@ spec:
|
|||
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'
|
||||
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
|
||||
desiredState:
|
||||
description: DesiredState of the PackageRevision. Can be either Active
|
||||
|
|
@ -71,9 +85,10 @@ spec:
|
|||
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.
|
||||
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
|
||||
|
|
@ -81,36 +96,44 @@ spec:
|
|||
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.
|
||||
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.
|
||||
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.
|
||||
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?'
|
||||
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.
|
||||
description: |-
|
||||
Revision number. Indicates when the revision will be garbage collected
|
||||
based on the parent's RevisionHistoryLimit.
|
||||
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.
|
||||
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:
|
||||
- desiredState
|
||||
|
|
@ -127,14 +150,23 @@ spec:
|
|||
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.
|
||||
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.
|
||||
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.
|
||||
|
|
@ -144,8 +176,9 @@ spec:
|
|||
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.
|
||||
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
|
||||
|
|
@ -170,9 +203,10 @@ spec:
|
|||
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.
|
||||
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.
|
||||
|
|
@ -193,34 +227,32 @@ spec:
|
|||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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
|
||||
|
|
@ -228,18 +260,21 @@ spec:
|
|||
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
|
||||
|
|
@ -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
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: locks.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
|
|
@ -23,14 +24,19 @@ spec:
|
|||
description: Lock is the CRD type that tracks package dependencies.
|
||||
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'
|
||||
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'
|
||||
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
|
||||
|
|
@ -39,16 +45,17 @@ spec:
|
|||
description: LockPackage is a package that is in the lock.
|
||||
properties:
|
||||
dependencies:
|
||||
description: Dependencies are the list of dependencies of this package.
|
||||
The order of the dependencies will dictate the order in which
|
||||
they are resolved.
|
||||
description: |-
|
||||
Dependencies are the list of dependencies of this package. The order of
|
||||
the dependencies will dictate the order in which they are resolved.
|
||||
items:
|
||||
description: A Dependency is a dependency of a package in the
|
||||
lock.
|
||||
properties:
|
||||
constraints:
|
||||
description: Constraints is a valid semver range, which will
|
||||
be used to select a valid dependency version.
|
||||
description: |-
|
||||
Constraints is a valid semver range, which will be used to select a valid
|
||||
dependency version.
|
||||
type: string
|
||||
package:
|
||||
description: Package is the OCI image name without a tag or
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: providerrevisions.pkg.crossplane.io
|
||||
spec:
|
||||
group: pkg.crossplane.io
|
||||
|
|
@ -41,17 +42,28 @@ spec:
|
|||
name: v1
|
||||
schema:
|
||||
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:
|
||||
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'
|
||||
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'
|
||||
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
|
||||
|
|
@ -61,14 +73,17 @@ spec:
|
|||
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'
|
||||
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.'
|
||||
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.
|
||||
|
|
@ -82,9 +97,10 @@ spec:
|
|||
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.
|
||||
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
|
||||
|
|
@ -92,36 +108,43 @@ spec:
|
|||
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.
|
||||
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.
|
||||
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.
|
||||
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?'
|
||||
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.
|
||||
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.
|
||||
description: |-
|
||||
RuntimeConfigRef references a RuntimeConfig resource that will be used
|
||||
to configure the package runtime.
|
||||
properties:
|
||||
apiVersion:
|
||||
default: pkg.crossplane.io/v1beta1
|
||||
|
|
@ -139,17 +162,21 @@ spec:
|
|||
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.
|
||||
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.
|
||||
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.
|
||||
description: |-
|
||||
TLSServerSecretName is the name of the TLS Secret that stores server
|
||||
certificates of the Provider.
|
||||
type: string
|
||||
required:
|
||||
- desiredState
|
||||
|
|
@ -166,14 +193,23 @@ spec:
|
|||
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.
|
||||
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.
|
||||
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.
|
||||
|
|
@ -183,8 +219,9 @@ spec:
|
|||
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.
|
||||
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
|
||||
|
|
@ -209,9 +246,10 @@ spec:
|
|||
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.
|
||||
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.
|
||||
|
|
@ -232,34 +270,32 @@ spec:
|
|||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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
|
||||
|
|
@ -267,18 +303,21 @@ spec:
|
|||
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
|
||||
|
|
@ -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
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.13.0
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: storeconfigs.secrets.crossplane.io
|
||||
spec:
|
||||
group: secrets.crossplane.io
|
||||
|
|
@ -29,18 +30,24 @@ spec:
|
|||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: A StoreConfig configures how Crossplane controllers should store
|
||||
connection details.
|
||||
description: |-
|
||||
A StoreConfig configures how Crossplane controllers should store connection
|
||||
details in an external secret store.
|
||||
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'
|
||||
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'
|
||||
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
|
||||
|
|
@ -48,24 +55,26 @@ spec:
|
|||
description: A StoreConfigSpec defines the desired state of a StoreConfig.
|
||||
properties:
|
||||
defaultScope:
|
||||
description: DefaultScope used for scoping secrets for "cluster-scoped"
|
||||
resources. If store type is "Kubernetes", this would mean the default
|
||||
namespace to store connection secrets for cluster scoped resources.
|
||||
description: |-
|
||||
DefaultScope used for scoping 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.
|
||||
Typically, should be set as Crossplane installation namespace.
|
||||
type: string
|
||||
kubernetes:
|
||||
description: Kubernetes configures a Kubernetes secret store. If the
|
||||
"type" is "Kubernetes" but no config provided, in cluster config
|
||||
description: |-
|
||||
Kubernetes configures a Kubernetes secret store.
|
||||
If the "type" is "Kubernetes" but no config provided, in cluster config
|
||||
will be used.
|
||||
properties:
|
||||
auth:
|
||||
description: Credentials used to connect to the Kubernetes API.
|
||||
properties:
|
||||
env:
|
||||
description: Env is a reference to an environment variable
|
||||
that contains credentials that must be used to connect to
|
||||
the provider.
|
||||
description: |-
|
||||
Env is a reference to an environment variable that contains credentials
|
||||
that must be used to connect to the provider.
|
||||
properties:
|
||||
name:
|
||||
description: Name is the name of an environment variable.
|
||||
|
|
@ -74,9 +83,9 @@ spec:
|
|||
- name
|
||||
type: object
|
||||
fs:
|
||||
description: Fs is a reference to a filesystem location that
|
||||
contains credentials that must be used to connect to the
|
||||
provider.
|
||||
description: |-
|
||||
Fs is a reference to a filesystem location that contains credentials that
|
||||
must be used to connect to the provider.
|
||||
properties:
|
||||
path:
|
||||
description: Path is a filesystem path.
|
||||
|
|
@ -85,9 +94,9 @@ spec:
|
|||
- path
|
||||
type: object
|
||||
secretRef:
|
||||
description: A SecretRef is a reference to a secret key that
|
||||
contains the credentials that must be used to connect to
|
||||
the provider.
|
||||
description: |-
|
||||
A SecretRef is a reference to a secret key that contains the credentials
|
||||
that must be used to connect to the provider.
|
||||
properties:
|
||||
key:
|
||||
description: The key to select.
|
||||
|
|
@ -143,9 +152,10 @@ spec:
|
|||
type: object
|
||||
type:
|
||||
default: Kubernetes
|
||||
description: Type configures which secret store to be used. Only the
|
||||
configuration block for this store will be used and others will
|
||||
be ignored if provided. Default is Kubernetes.
|
||||
description: |-
|
||||
Type configures which secret store to be used. Only the configuration
|
||||
block for this store will be used and others will be ignored if provided.
|
||||
Default is Kubernetes.
|
||||
enum:
|
||||
- Kubernetes
|
||||
- Vault
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
weight: 400
|
||||
title: Crossplane CLI
|
||||
weight: 200
|
||||
title: CLI Reference
|
||||
description: "Documentation for the Crossplane command-line interface"
|
||||
---
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Concepts
|
||||
weight: 100
|
||||
weight: 50
|
||||
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,
|
||||
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
|
||||
data store, like a Kubernetes ConfigMap. EnvironmentConfigs are useful for
|
||||
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`.
|
||||
|
||||
{{< 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.
|
||||
{{< /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.
|
||||
|
||||
For more information read the
|
||||
[Composition documentation]({{<ref "./compositions#storing-connection-details">}}).
|
||||
[Composition documentation]({{<ref "./compositions#store-connection-details">}}).
|
||||
{{< /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
|
||||
the `spec.compositeDeletePolicy` property with either the `Background` or `Foreground` value.
|
||||
|
||||
|
||||
The default value is `defaultCompositeDeletePolicy: Background`.
|
||||
|
||||
Set
|
||||
|
|
@ -133,16 +133,27 @@ kind: Composition
|
|||
metadata:
|
||||
name: my-composition
|
||||
spec:
|
||||
resources:
|
||||
- name: database
|
||||
base:
|
||||
# Removed for brevity
|
||||
patches:
|
||||
- fromFieldPath: metadata.annotations
|
||||
toFieldPath: metadata.annotations
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
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
|
||||
|
||||
|
|
@ -152,7 +163,7 @@ Select a specific Composition for a composite resource to use with
|
|||
{{<hint "important">}}
|
||||
The selected Composition must allow the composite resource to use it with a
|
||||
`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.
|
||||
{{< /hint >}}
|
||||
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Composition Revisions
|
||||
weight: 35
|
||||
---
|
||||
|
||||
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
|
||||
database configuration of an Azure MySQL Server and a few firewall rules. 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
|
||||
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`.
|
||||
|
||||
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
|
||||
actual infrastructure - your MySQL Servers and firewall rules - match your
|
||||
desired state. If you have 10 `PlatformDB` XRs all using the `big-platform-db`
|
||||
|
|
@ -169,17 +170,25 @@ spec:
|
|||
compositeTypeRef:
|
||||
apiVersion: aws.example.upbound.io/v1alpha1
|
||||
kind: MyVPC
|
||||
resources:
|
||||
- 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
|
||||
name: my-vcp
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: my-vpc
|
||||
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.
|
||||
|
|
@ -381,17 +390,25 @@ spec:
|
|||
compositeTypeRef:
|
||||
apiVersion: aws.example.upbound.io/v1alpha1
|
||||
kind: MyVPC
|
||||
resources:
|
||||
- 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
|
||||
name: my-vcp
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: my-vpc
|
||||
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:
|
||||
|
|
@ -1,29 +1,121 @@
|
|||
---
|
||||
title: Composition Functions
|
||||
state: beta
|
||||
alphaVersion: "1.11"
|
||||
betaVersion: "1.14"
|
||||
weight: 80
|
||||
description: "Composition Functions allow you to template resources using general-purpose programming languages"
|
||||
title: Compositions
|
||||
weight: 30
|
||||
aliases:
|
||||
- composition
|
||||
- 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
|
||||
template Crossplane resources. Crossplane calls composition functions to
|
||||
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.
|
||||
Compositions are a template for creating multiple managed resources as a single
|
||||
object.
|
||||
|
||||
You can build a function using general purpose programming languages such as Go
|
||||
or Python. The Crossplane community has also built functions that let you
|
||||
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">}}).
|
||||
A Composition _composes_ individual managed resources together into a larger,
|
||||
reusable, solution.
|
||||
|
||||
## 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
|
||||
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.
|
||||
|
||||
|
||||
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"}
|
||||
apiVersion: pkg.crossplane.io/v1beta1
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Function
|
||||
metadata:
|
||||
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
|
||||
(`crossplane-system`).
|
||||
|
||||
## Verify a composition function
|
||||
### Verify a composition function
|
||||
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
{{<hover label="single" line="6">}}mode{{</hover>}} to
|
||||
{{<hover label="single" line="6">}}Pipeline{{</hover>}}.
|
||||
|
|
@ -122,12 +200,11 @@ The function defines the
|
|||
{{<hover label="single" line="13">}}kind{{</hover>}} of input.
|
||||
|
||||
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
|
||||
templates.
|
||||
The input kind is {{<hover label="single" line="13">}}Resources{{</hover>}},
|
||||
and it accepts [Patch and Transform]({{<ref "./patch-and-transform">}})
|
||||
{{<hover label="single" line="14">}}resources{{</hover>}} as input.
|
||||
and it accepts {{<hover label="single" line="14">}}resources{{</hover>}} as input.
|
||||
|
||||
```yaml {label="single",copy-lines="none"}
|
||||
apiVersion: apiextensions.crossplane.io/v1
|
||||
|
|
@ -153,8 +230,7 @@ spec:
|
|||
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
|
||||
changes. When a Composition has a pipeline of two or more steps, Crossplane
|
||||
|
|
@ -187,20 +263,183 @@ spec:
|
|||
value: |
|
||||
apiVersion: "s3.aws.upbound.io/v1beta1"
|
||||
kind: "Bucket"
|
||||
spec:
|
||||
forProvider:
|
||||
region: "us-east-2"
|
||||
spec: forProvider: region: "us-east-2"
|
||||
- step: automatically-detect-readiness
|
||||
functionRef:
|
||||
name: function-auto-ready
|
||||
```
|
||||
|
||||
## Test a composition that uses functions
|
||||
|
||||
You can preview the output of any composition that uses composition functions
|
||||
using the Crossplane CLI. You don't need a Crossplane control plane to do
|
||||
this. The Crossplane CLI uses Docker Engine to run functions.
|
||||
### Enable composite resources
|
||||
|
||||
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">}}
|
||||
See the [Crossplane CLI docs]({{<ref "../cli">}}) to
|
||||
|
|
@ -208,17 +447,17 @@ learn how to install and use the Crossplane CLI.
|
|||
{{< /hint >}}
|
||||
|
||||
{{<hint "important">}}
|
||||
Running `crossplane beta render` requires [Docker](https://www.docker.com).
|
||||
Running `crossplane render` requires [Docker](https://www.docker.com).
|
||||
{{< /hint >}}
|
||||
|
||||
Provide a composite resource, composition and composition functions to render
|
||||
the output locally.
|
||||
|
||||
```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
|
||||
created.
|
||||
|
||||
|
|
@ -251,7 +490,7 @@ spec:
|
|||
|
||||
{{<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.
|
||||
|
||||
The `xr.yaml` file contains the composite resource to render:
|
||||
|
|
@ -301,7 +540,7 @@ its pipeline steps:
|
|||
|
||||
```yaml
|
||||
---
|
||||
apiVersion: pkg.crossplane.io/v1beta1
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Function
|
||||
metadata:
|
||||
name: function-patch-and-transform
|
||||
|
|
@ -311,11 +550,11 @@ spec:
|
|||
{{</expand>}}
|
||||
|
||||
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
|
||||
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
|
||||
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`.
|
||||
|
||||
```yaml {label="development"}
|
||||
apiVersion: pkg.crossplane.io/v1beta1
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Function
|
||||
metadata:
|
||||
name: function-patch-and-transform
|
||||
|
|
@ -346,7 +585,7 @@ Use the `Development` runtime when you
|
|||
function end-to-end.
|
||||
{{</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:
|
||||
|
||||
* `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
|
||||
[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
|
||||
|
||||
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 -->
|
||||
|
||||
```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)
|
||||
response.Normal(rsp, "Hello world!")
|
||||
return rsp, nil
|
||||
}
|
||||
```
|
||||
|
||||
Some people design composition functions for you to use them with any kind of
|
||||
composite resource.
|
||||
[Function Patch and Transform](https://github.com/crossplane-contrib/function-patch-and-transform)
|
||||
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>}}
|
||||
Crossplane has [language specific guides]({{<ref "../guides">}}) to writing a
|
||||
composition function. Refer to the guide for your preferred language to learn
|
||||
how to write a composition function.
|
||||
|
||||
When you're writing a composition function it's useful to know how composition
|
||||
functions work. Read the next section to learn
|
||||
|
|
@ -480,6 +776,11 @@ sequenceDiagram
|
|||
Crossplane Pod->>+API Server: Observe composite resource
|
||||
Crossplane Pod->>+Function Pod: gRPC RunFunctionRequest
|
||||
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
|
||||
```
|
||||
|
||||
|
|
@ -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).
|
||||
{{</hint>}}
|
||||
|
||||
When Crossplane calls a function it includes four important things in the
|
||||
RunFunctionRequest.
|
||||
When Crossplane calls a function the first time it includes four important
|
||||
things in the RunFunctionRequest.
|
||||
|
||||
1. The __observed 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
|
||||
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">}}
|
||||
<!-- vale write-good.Weasel = NO -->
|
||||
<!-- 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
|
||||
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
|
||||
any composed resources. It sends them to your function as part of the observed
|
||||
|
|
@ -673,28 +986,4 @@ context.
|
|||
Crossplane can write context too. If you enable the alpha
|
||||
[composition environment]({{<ref "environment-configs">}}) feature Crossplane
|
||||
writes the environment to the top-level context field
|
||||
`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.
|
||||
`apiextensions.crossplane.io/environment`.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Understanding Connection Details
|
||||
weight: 11
|
||||
title: Connection Details
|
||||
weight: 110
|
||||
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">}}).
|
||||
* Define the `writeConnectionSecretToRef` name and namespace for each resource in the
|
||||
[Composition]({{<ref "/master/concepts/compositions#composed-resource-secrets">}}).
|
||||
* Define the list of secret keys produced by each composed resource with `connectionDetails` in the
|
||||
[Composition]({{<ref "./compositions#define-secret-keys">}}).
|
||||
* Define the list of secret keys produced by each composed resource with in the
|
||||
[Composition]({{<ref "/master/concepts/compositions">}}).
|
||||
* Optionally, define the `connectionSecretKeys` in a
|
||||
[CompositeResourceDefinition]({{<ref "/master/concepts/composite-resource-definitions#manage-connection-secrets">}}).
|
||||
|
||||
|
|
@ -63,74 +63,96 @@ spec:
|
|||
compositeTypeRef:
|
||||
apiVersion: example.org/v1alpha1
|
||||
kind: XSecretTest
|
||||
resources:
|
||||
- name: key
|
||||
base:
|
||||
apiVersion: iam.aws.upbound.io/v1beta1
|
||||
kind: AccessKey
|
||||
spec:
|
||||
forProvider:
|
||||
userSelector:
|
||||
matchControllerRef: true
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1
|
||||
connectionDetails:
|
||||
- fromConnectionSecretKey: username
|
||||
- fromConnectionSecretKey: password
|
||||
- fromConnectionSecretKey: attribute.secret
|
||||
- fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
||||
patches:
|
||||
- fromFieldPath: "metadata.uid"
|
||||
toFieldPath: "spec.writeConnectionSecretToRef.name"
|
||||
transforms:
|
||||
- type: string
|
||||
string:
|
||||
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
|
||||
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:
|
||||
userSelector:
|
||||
matchControllerRef: true
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1
|
||||
connectionDetails:
|
||||
- name: user
|
||||
type: FromConnectionSecretKey
|
||||
fromConnectionSecretKey: username
|
||||
- name: key2-password
|
||||
- name: password
|
||||
type: FromConnectionSecretKey
|
||||
fromConnectionSecretKey: password
|
||||
- name: key2-secret
|
||||
- name: key
|
||||
type: FromConnectionSecretKey
|
||||
fromConnectionSecretKey: attribute.secret
|
||||
- name: key2-smtp
|
||||
- name: smtp
|
||||
type: FromConnectionSecretKey
|
||||
fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
||||
patches:
|
||||
- fromFieldPath: "metadata.uid"
|
||||
toFieldPath: "spec.writeConnectionSecretToRef.name"
|
||||
transforms:
|
||||
- type: string
|
||||
string:
|
||||
fmt: "%s-secret2"
|
||||
```
|
||||
patches:
|
||||
- fromFieldPath: "metadata.uid"
|
||||
toFieldPath: "spec.writeConnectionSecretToRef.name"
|
||||
transforms:
|
||||
- type: string
|
||||
string:
|
||||
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 "Reference CompositeResourceDefinition" >}}
|
||||
|
|
@ -284,28 +306,36 @@ apiVersion: apiextensions.crossplane.io/v1
|
|||
kind: Composition
|
||||
spec:
|
||||
writeConnectionSecretsToNamespace: other-namespace
|
||||
resources:
|
||||
- name: key1
|
||||
base:
|
||||
apiVersion: iam.aws.upbound.io/v1beta1
|
||||
kind: AccessKey
|
||||
spec:
|
||||
forProvider:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1-secret
|
||||
- name: key2
|
||||
base:
|
||||
apiVersion: iam.aws.upbound.io/v1beta1
|
||||
kind: AccessKey
|
||||
spec:
|
||||
forProvider:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key2-secret
|
||||
# Removed for brevity
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: key1
|
||||
base:
|
||||
apiVersion: iam.aws.upbound.io/v1beta1
|
||||
kind: AccessKey
|
||||
spec:
|
||||
forProvider:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1-secret
|
||||
- name: key2
|
||||
base:
|
||||
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
|
||||
|
|
@ -364,23 +394,39 @@ apiVersion: apiextensions.crossplane.io/v1
|
|||
kind: Composition
|
||||
spec:
|
||||
writeConnectionSecretsToNamespace: other-namespace
|
||||
resources:
|
||||
- name: key
|
||||
base:
|
||||
apiVersion: iam.aws.upbound.io/v1beta1
|
||||
kind: AccessKey
|
||||
spec:
|
||||
forProvider:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1
|
||||
connectionDetails:
|
||||
- fromConnectionSecretKey: username
|
||||
- fromConnectionSecretKey: password
|
||||
- fromConnectionSecretKey: attribute.secret
|
||||
- fromConnectionSecretKey: attribute.ses_smtp_password_v4
|
||||
# Removed for brevity
|
||||
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
|
||||
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
|
||||
|
|
@ -418,28 +464,39 @@ apiVersion: apiextensions.crossplane.io/v1
|
|||
kind: Composition
|
||||
spec:
|
||||
writeConnectionSecretsToNamespace: other-namespace
|
||||
resources:
|
||||
- name: key
|
||||
base:
|
||||
kind: AccessKey
|
||||
spec:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1
|
||||
connectionDetails:
|
||||
- fromConnectionSecretKey: username
|
||||
- name: key2
|
||||
base:
|
||||
kind: AccessKey
|
||||
spec:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key2
|
||||
connectionDetails:
|
||||
- name: key2-user
|
||||
fromConnectionSecretKey: username
|
||||
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:
|
||||
kind: AccessKey
|
||||
spec:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1
|
||||
connectionDetails:
|
||||
- name: user
|
||||
type: FromConnectionSecretKey
|
||||
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,
|
||||
|
|
@ -548,28 +605,39 @@ apiVersion: apiextensions.crossplane.io/v1
|
|||
kind: Composition
|
||||
spec:
|
||||
writeConnectionSecretsToNamespace: other-namespace
|
||||
resources:
|
||||
- name: key
|
||||
base:
|
||||
kind: AccessKey
|
||||
spec:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1
|
||||
connectionDetails:
|
||||
- fromConnectionSecretKey: username
|
||||
- name: key2
|
||||
base:
|
||||
kind: AccessKey
|
||||
spec:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key2
|
||||
connectionDetails:
|
||||
- name: key2-user
|
||||
fromConnectionSecretKey: username
|
||||
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:
|
||||
kind: AccessKey
|
||||
spec:
|
||||
# Removed for brevity
|
||||
writeConnectionSecretToRef:
|
||||
namespace: docs
|
||||
name: key1
|
||||
connectionDetails:
|
||||
- name: user
|
||||
type: FromConnectionSecretKey
|
||||
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
|
||||
|
|
@ -3,7 +3,7 @@ title: Environment Configurations
|
|||
weight: 75
|
||||
state: alpha
|
||||
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
|
||||
[ConfigMap](https://kubernetes.io/docs/concepts/configuration/configmap/)-like
|
||||
resource used
|
||||
by Compositions. Compositions can use the environment to store information from
|
||||
individual resources or to apply [patches]({{<ref "patch-and-transform">}}).
|
||||
resource used by Compositions. Compositions can use the environment to store
|
||||
information from individual resources or to apply patches.
|
||||
|
||||
Crossplane supports multiple EnvironmentConfigs, each acting as a unique
|
||||
data store.
|
||||
|
|
@ -220,7 +219,6 @@ spec:
|
|||
- key: my-label-key
|
||||
type: FromCompositeFieldPath
|
||||
valueFromFieldPath: spec.parameters.deploy
|
||||
resources:
|
||||
# Removed for brevity
|
||||
```
|
||||
|
||||
|
|
@ -347,7 +345,6 @@ spec:
|
|||
type: FromCompositeFieldPath
|
||||
valueFromFieldPath: spec.parameters.deploy
|
||||
fromFieldPathPolicy: Optional
|
||||
resources:
|
||||
# Removed for brevity
|
||||
```
|
||||
|
||||
|
|
@ -386,7 +383,6 @@ spec:
|
|||
type: FromCompositeFieldPath
|
||||
valueFromFieldPath: spec.parameters.deploy
|
||||
fromFieldPathPolicy: Optional
|
||||
resources:
|
||||
# Removed for brevity
|
||||
```
|
||||
|
||||
|
|
@ -397,87 +393,22 @@ Defining the default value _after_ the label always overwrites the label
|
|||
value.
|
||||
{{< /hint >}}
|
||||
|
||||
## Patching with EnvironmentConfigs
|
||||
## Use EnvironmentConfigs in a Composition
|
||||
|
||||
When Crossplane creates or updates a composite resource, Crossplane
|
||||
merges all the specified EnvironmentConfigs into an in-memory environment.
|
||||
When Crossplane creates or updates a composite resource, it merges all the
|
||||
specified EnvironmentConfigs into an in-memory environment.
|
||||
|
||||
The composite resource can read or write data between the EnvironmentConfig and
|
||||
composite resource or between the EnvironmentConfig and individual resources
|
||||
defined inside the composite resource.
|
||||
Crossplane sends the merged, in-memory environment to the composition function
|
||||
pipeline using the
|
||||
[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" >}}
|
||||
Read about EnvironmentConfig patch types in the
|
||||
[Patch and Transform]({{<ref "./patch-and-transform">}}) documentation.
|
||||
The Patch and Transform function can use the environment to patch composed
|
||||
resources. Read about EnvironmentConfig patch types in the
|
||||
[Patch and Transform function documentation]({{<ref "../guides/function-patch-and-transform">}}).
|
||||
{{< /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.
|
||||
|
||||
{{<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
|
||||
Subnet resource only matches VPC resources with the label
|
||||
`my-label: label-value`.
|
||||
|
|
@ -204,6 +198,100 @@ spec:
|
|||
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
|
||||
|
||||
|
|
@ -403,8 +491,7 @@ kind: Instance
|
|||
spec:
|
||||
forProvider:
|
||||
# Removed for brevity
|
||||
providerConfigRef:
|
||||
name: user-keys
|
||||
providerConfigRef: user-keys
|
||||
```
|
||||
|
||||
```yaml {label="pc"}
|
||||
|
|
@ -625,7 +712,7 @@ kind: RDSInstance
|
|||
metadata:
|
||||
name: my-rds-instance
|
||||
annotations:
|
||||
crossplane.io/external-name: my-custom-namee
|
||||
crossplane.io/external-name: my-custom-name
|
||||
```
|
||||
|
||||
```shell {copy-lines="1"}
|
||||
|
|
@ -636,21 +723,143 @@ my-rds-instance True True my-custom-name 11m
|
|||
|
||||
### Creation annotations
|
||||
|
||||
Providers create new managed resources with the
|
||||
`crossplane.io/external-create-pending` annotation.
|
||||
When an external system like AWS generates nondeterministic resource names it's
|
||||
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
|
||||
`crossplane.io/external-create-failed` annotation after making the external API
|
||||
call and receiving a response.
|
||||
{{<hint "tip">}}
|
||||
Crossplane calls resources that a provider creates but doesn't manage _leaked
|
||||
resources_.
|
||||
{{</hint>}}
|
||||
|
||||
{{<hint "note" >}}
|
||||
If a Provider restarts before creating the `succeed` or `fail` annotations the
|
||||
Provider can't reconcile the managed resource.
|
||||
Providers set three creation annotations to avoid and detect leaked resources:
|
||||
|
||||
Read Crossplane [issue #3037](https://github.com/crossplane/crossplane/issues/3037#issuecomment-1110142427)
|
||||
for more details
|
||||
{{< /hint >}}
|
||||
* {{<hover label="creation" line="8">}}crossplane.io/external-create-pending{{</hover>}} -
|
||||
The last time the provider was about to create the resource.
|
||||
* {{<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
|
||||
Manually applying the `crossplane.io/paused` annotation causes the Provider to
|
||||
|
|
@ -10,19 +10,19 @@ A _Configuration_ package is an
|
|||
[Compositions]({{<ref "./compositions" >}}),
|
||||
[Composite Resource Definitions]({{<ref "./composite-resource-definitions" >}})
|
||||
and any required [Providers]({{<ref "./providers">}}) or
|
||||
[Functions]({{<ref "./composition-functions" >}}).
|
||||
[Functions]({{<ref "./compositions" >}}).
|
||||
|
||||
Configuration packages make your Crossplane configuration fully portable.
|
||||
|
||||
{{<hint "important" >}}
|
||||
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.
|
||||
|
||||
Refer to the
|
||||
[Provider]({{<ref "./providers">}}) and
|
||||
[Composition Functions]({{<ref "./composition-functions">}}) chapters for
|
||||
[Composition Functions]({{<ref "./compositions">}}) chapters for
|
||||
details on their usage of packages.
|
||||
{{< /hint >}}
|
||||
|
||||
|
|
@ -33,6 +33,15 @@ Install a Configuration with a Crossplane
|
|||
the {{<hover line="6" label="install">}}spec.package{{</hover>}} value to the
|
||||
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
|
||||
[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
|
||||
* allowing the `crossplane` ServiceAccount to create managed resources
|
||||
* 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
|
||||
cluster.
|
||||
Use the [Roles]({{<ref "#crossplane-roles" >}}) to only grant access to Crossplane Claims.
|
||||
|
||||
#### Crossplane ClusterRoles
|
||||
|
||||
|
|
@ -271,7 +269,7 @@ The `crossplane-admin` ClusterRole has the following permissions:
|
|||
View the full RBAC policy with
|
||||
|
||||
```shell
|
||||
kubectl describe clusterrole crossplane:admin
|
||||
kubectl describe clusterrole crossplane-admin
|
||||
```
|
||||
|
||||
##### crossplane-edit
|
||||
|
|
@ -285,7 +283,7 @@ The `crossplane-edit` ClusterRole has the following permissions:
|
|||
View the full RBAC policy with
|
||||
|
||||
```shell
|
||||
kubectl describe clusterrole crossplane:edit
|
||||
kubectl describe clusterrole crossplane-edit
|
||||
```
|
||||
|
||||
##### crossplane-view
|
||||
|
|
@ -298,43 +296,22 @@ The `crossplane-view` ClusterRole has the following permissions:
|
|||
View the full RBAC policy with
|
||||
|
||||
```shell
|
||||
kubectl describe clusterrole crossplane:view
|
||||
kubectl describe clusterrole crossplane-view
|
||||
```
|
||||
|
||||
##### crossplane-browse
|
||||
|
||||
The `crossplane-browse` ClusterRole has the following permissions:
|
||||
|
||||
* read-only access to all Crossplane types
|
||||
* read-only access to all namespaces and events (even those unrelated to Crossplane).
|
||||
* read-only access to Crossplane compositions and XRDs. This allows resource claim
|
||||
creators to discover and select an appropriate composition.
|
||||
|
||||
View the full RBAC policy with
|
||||
|
||||
```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
|
||||
|
||||
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
|
||||
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
|
||||
[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
|
||||
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
|
||||
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
|
||||
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
|
||||
kind: Composition
|
||||
spec:
|
||||
resources:
|
||||
- name: cluster
|
||||
base:
|
||||
apiVersion: container.gcp.upbound.io/v1beta1
|
||||
kind: Cluster
|
||||
# Removed for brevity
|
||||
- name: release
|
||||
base:
|
||||
apiVersion: helm.crossplane.io/v1beta1
|
||||
kind: Release
|
||||
# Removed for brevity
|
||||
- name: release-uses-cluster
|
||||
base:
|
||||
apiVersion: apiextensions.crossplane.io/v1alpha1
|
||||
kind: Usage
|
||||
spec:
|
||||
replayDeletion: true
|
||||
of:
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: cluster
|
||||
base:
|
||||
apiVersion: container.gcp.upbound.io/v1beta1
|
||||
kind: Cluster
|
||||
resourceSelector:
|
||||
matchControllerRef: true
|
||||
by:
|
||||
# Removed for brevity
|
||||
- name: release
|
||||
base:
|
||||
apiVersion: helm.crossplane.io/v1beta1
|
||||
kind: Release
|
||||
resourceSelector:
|
||||
matchControllerRef: true
|
||||
# Removed for brevity
|
||||
- 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" >}}
|
||||
|
|
@ -5,7 +5,7 @@ searchExclude: true
|
|||
|
||||
## Install Crossplane
|
||||
|
||||
Crossplane installs into an existing Kubernetes cluster.
|
||||
Crossplane installs into an existing Kubernetes cluster.
|
||||
|
||||
{{< hint type="tip" >}}
|
||||
If you don't have a Kubernetes cluster create one locally with [Kind](https://kind.sigs.k8s.io/).
|
||||
|
|
@ -40,12 +40,13 @@ crossplane-stable/crossplane \
|
|||
--dry-run --debug \
|
||||
--namespace crossplane-system \
|
||||
--create-namespace
|
||||
install.go:200: [debug] Original chart version: ""
|
||||
install.go:217: [debug] CHART PATH: /home/vagrant/.cache/helm/repository/crossplane-1.13.0.tgz
|
||||
install.go:214: [debug] Original chart version: ""
|
||||
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
|
||||
LAST DEPLOYED: Fri Jul 28 13:57:41 2023
|
||||
NAMESPACE: crossplane-system
|
||||
LAST DEPLOYED: Mon Feb 12 14:46:15 2024
|
||||
NAMESPACE: default
|
||||
STATUS: pending-install
|
||||
REVISION: 1
|
||||
TEST SUITE: None
|
||||
|
|
@ -62,12 +63,15 @@ customLabels: {}
|
|||
deploymentStrategy: RollingUpdate
|
||||
extraEnvVarsCrossplane: {}
|
||||
extraEnvVarsRBACManager: {}
|
||||
extraObjects: []
|
||||
extraVolumeMountsCrossplane: {}
|
||||
extraVolumesCrossplane: {}
|
||||
function:
|
||||
packages: []
|
||||
hostNetwork: false
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: crossplane/crossplane
|
||||
repository: xpkg.upbound.io/crossplane/crossplane
|
||||
tag: ""
|
||||
imagePullSecrets: {}
|
||||
leaderElection: true
|
||||
|
|
@ -89,7 +93,6 @@ rbacManager:
|
|||
args: []
|
||||
deploy: true
|
||||
leaderElection: true
|
||||
managementPolicy: Basic
|
||||
nodeSelector: {}
|
||||
replicas: 1
|
||||
skipAggregatedClusterRoles: false
|
||||
|
|
@ -127,37 +130,6 @@ serviceAccount:
|
|||
tolerations: []
|
||||
webhooks:
|
||||
enabled: true
|
||||
xfn:
|
||||
args: []
|
||||
cache:
|
||||
configMap: ""
|
||||
medium: ""
|
||||
pvc: ""
|
||||
sizeLimit: 1Gi
|
||||
enabled: false
|
||||
extraEnvVars: {}
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: crossplane/xfn
|
||||
tag: ""
|
||||
resources:
|
||||
limits:
|
||||
cpu: 2000m
|
||||
memory: 2Gi
|
||||
requests:
|
||||
cpu: 1000m
|
||||
memory: 1Gi
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
add:
|
||||
- SETUID
|
||||
- SETGID
|
||||
readOnlyRootFilesystem: true
|
||||
runAsGroup: 65532
|
||||
runAsUser: 65532
|
||||
seccompProfile:
|
||||
type: Unconfined
|
||||
|
||||
HOOKS:
|
||||
MANIFEST:
|
||||
|
|
@ -167,44 +139,64 @@ apiVersion: v1
|
|||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: rbac-manager
|
||||
namespace: crossplane-system
|
||||
namespace: default
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
---
|
||||
# Source: crossplane/templates/serviceaccount.yaml
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: crossplane
|
||||
namespace: crossplane-system
|
||||
namespace: default
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
---
|
||||
# Source: crossplane/templates/secret.yaml
|
||||
# The reason this is created empty and filled by the init container is that it's
|
||||
# mounted by the actual container, so if it wasn't created by Helm, then the
|
||||
# deployment wouldn't be deployed at all with secret to mount not found error.
|
||||
# In addition, Helm would delete this secret after uninstallation so the new
|
||||
# installation of Crossplane would use its own certificate.
|
||||
# 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: webhook-tls-secret
|
||||
namespace: crossplane-system
|
||||
name: crossplane-root-ca
|
||||
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
|
||||
---
|
||||
# Source: crossplane/templates/clusterrole.yaml
|
||||
|
|
@ -214,13 +206,13 @@ metadata:
|
|||
name: crossplane
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
aggregationRule:
|
||||
clusterRoleSelectors:
|
||||
- matchLabels:
|
||||
|
|
@ -233,13 +225,13 @@ metadata:
|
|||
name: crossplane:system:aggregate-to-crossplane
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
crossplane.io/scope: "system"
|
||||
rbac.crossplane.io/aggregate-to-crossplane: "true"
|
||||
rules:
|
||||
|
|
@ -256,6 +248,7 @@ rules:
|
|||
- apiextensions.k8s.io
|
||||
resources:
|
||||
- customresourcedefinitions
|
||||
- customresourcedefinitions/status
|
||||
verbs:
|
||||
- "*"
|
||||
- apiGroups:
|
||||
|
|
@ -333,13 +326,13 @@ metadata:
|
|||
name: crossplane:allowed-provider-permissions
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
aggregationRule:
|
||||
clusterRoleSelectors:
|
||||
- matchLabels:
|
||||
|
|
@ -352,13 +345,13 @@ metadata:
|
|||
name: crossplane-rbac-manager
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
|
|
@ -373,11 +366,18 @@ rules:
|
|||
- ""
|
||||
resources:
|
||||
- namespaces
|
||||
- serviceaccounts
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- apps
|
||||
resources:
|
||||
- deployments
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
# 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.
|
||||
# The RBAC manager needs permission to set finalizers on Namespaces in order to
|
||||
|
|
@ -486,13 +486,13 @@ metadata:
|
|||
name: crossplane-admin
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
aggregationRule:
|
||||
clusterRoleSelectors:
|
||||
- matchLabels:
|
||||
|
|
@ -505,13 +505,13 @@ metadata:
|
|||
name: crossplane-edit
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
aggregationRule:
|
||||
clusterRoleSelectors:
|
||||
- matchLabels:
|
||||
|
|
@ -524,13 +524,13 @@ metadata:
|
|||
name: crossplane-view
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
aggregationRule:
|
||||
clusterRoleSelectors:
|
||||
- matchLabels:
|
||||
|
|
@ -543,13 +543,13 @@ metadata:
|
|||
name: crossplane-browse
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
aggregationRule:
|
||||
clusterRoleSelectors:
|
||||
- matchLabels:
|
||||
|
|
@ -563,13 +563,13 @@ metadata:
|
|||
labels:
|
||||
rbac.crossplane.io/aggregate-to-admin: "true"
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
rules:
|
||||
# Crossplane administrators have access to view events.
|
||||
- apiGroups: [""]
|
||||
|
|
@ -598,7 +598,7 @@ rules:
|
|||
verbs: ["*"]
|
||||
- apiGroups:
|
||||
- pkg.crossplane.io
|
||||
resources: [locks, providers, configurations, providerrevisions, configurationrevisions]
|
||||
resources: ["*"]
|
||||
verbs: ["*"]
|
||||
# Crossplane administrators have access to view CRDs in order to debug XRDs.
|
||||
- apiGroups: [apiextensions.k8s.io]
|
||||
|
|
@ -613,13 +613,13 @@ metadata:
|
|||
labels:
|
||||
rbac.crossplane.io/aggregate-to-edit: "true"
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
rules:
|
||||
# Crossplane editors have access to view events.
|
||||
- apiGroups: [""]
|
||||
|
|
@ -641,7 +641,7 @@ rules:
|
|||
verbs: ["*"]
|
||||
- apiGroups:
|
||||
- pkg.crossplane.io
|
||||
resources: [locks, providers, configurations, providerrevisions, configurationrevisions]
|
||||
resources: ["*"]
|
||||
verbs: ["*"]
|
||||
---
|
||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
||||
|
|
@ -652,13 +652,13 @@ metadata:
|
|||
labels:
|
||||
rbac.crossplane.io/aggregate-to-view: "true"
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
rules:
|
||||
# Crossplane viewers have access to view events.
|
||||
- apiGroups: [""]
|
||||
|
|
@ -675,7 +675,7 @@ rules:
|
|||
verbs: [get, list, watch]
|
||||
- apiGroups:
|
||||
- pkg.crossplane.io
|
||||
resources: [locks, providers, configurations, providerrevisions, configurationrevisions]
|
||||
resources: ["*"]
|
||||
verbs: [get, list, watch]
|
||||
---
|
||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
||||
|
|
@ -686,13 +686,13 @@ metadata:
|
|||
labels:
|
||||
rbac.crossplane.io/aggregate-to-browse: "true"
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
rules:
|
||||
# Crossplane browsers have access to view events.
|
||||
- apiGroups: [""]
|
||||
|
|
@ -706,94 +706,6 @@ rules:
|
|||
resources: ["*"]
|
||||
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
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
|
|
@ -801,13 +713,13 @@ metadata:
|
|||
name: crossplane
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
|
|
@ -815,7 +727,7 @@ roleRef:
|
|||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: crossplane
|
||||
namespace: crossplane-system
|
||||
namespace: default
|
||||
---
|
||||
# Source: crossplane/templates/rbac-manager-clusterrolebinding.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
|
@ -824,13 +736,13 @@ metadata:
|
|||
name: crossplane-rbac-manager
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
|
|
@ -838,7 +750,7 @@ roleRef:
|
|||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: rbac-manager
|
||||
namespace: crossplane-system
|
||||
namespace: default
|
||||
---
|
||||
# Source: crossplane/templates/rbac-manager-managed-clusterroles.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
|
@ -847,13 +759,13 @@ metadata:
|
|||
name: crossplane-admin
|
||||
labels:
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
|
|
@ -868,17 +780,17 @@ apiVersion: v1
|
|||
kind: Service
|
||||
metadata:
|
||||
name: crossplane-webhooks
|
||||
namespace: crossplane-system
|
||||
namespace: default
|
||||
labels:
|
||||
app: 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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
spec:
|
||||
selector:
|
||||
app: crossplane
|
||||
|
|
@ -893,17 +805,17 @@ apiVersion: apps/v1
|
|||
kind: Deployment
|
||||
metadata:
|
||||
name: crossplane
|
||||
namespace: crossplane-system
|
||||
namespace: default
|
||||
labels:
|
||||
app: 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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
|
|
@ -917,20 +829,18 @@ spec:
|
|||
labels:
|
||||
app: 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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
spec:
|
||||
securityContext:
|
||||
{}
|
||||
serviceAccountName: crossplane
|
||||
hostNetwork: false
|
||||
initContainers:
|
||||
- image: "crossplane/crossplane:v1.14.0"
|
||||
- image: "xpkg.upbound.io/crossplane/crossplane:v1.15.0"
|
||||
args:
|
||||
- core
|
||||
- init
|
||||
|
|
@ -954,11 +864,13 @@ spec:
|
|||
resourceFieldRef:
|
||||
containerName: crossplane-init
|
||||
resource: limits.cpu
|
||||
divisor: "1"
|
||||
- name: GOMEMLIMIT
|
||||
valueFrom:
|
||||
resourceFieldRef:
|
||||
containerName: crossplane-init
|
||||
resource: limits.memory
|
||||
divisor: "1"
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
|
|
@ -967,8 +879,6 @@ spec:
|
|||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.serviceAccountName
|
||||
- name: "WEBHOOK_TLS_SECRET_NAME"
|
||||
value: webhook-tls-secret
|
||||
- name: "WEBHOOK_SERVICE_NAME"
|
||||
value: crossplane-webhooks
|
||||
- name: "WEBHOOK_SERVICE_NAMESPACE"
|
||||
|
|
@ -977,8 +887,14 @@ spec:
|
|||
fieldPath: metadata.namespace
|
||||
- name: "WEBHOOK_SERVICE_PORT"
|
||||
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:
|
||||
- image: "crossplane/crossplane:v1.14.0"
|
||||
- image: "xpkg.upbound.io/crossplane/crossplane:v1.15.0"
|
||||
args:
|
||||
- core
|
||||
- start
|
||||
|
|
@ -991,7 +907,14 @@ spec:
|
|||
requests:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
startupProbe:
|
||||
failureThreshold: 30
|
||||
periodSeconds: 2
|
||||
tcpSocket:
|
||||
port: readyz
|
||||
ports:
|
||||
- name: readyz
|
||||
containerPort: 8081
|
||||
- name: webhooks
|
||||
containerPort: 9443
|
||||
securityContext:
|
||||
|
|
@ -1005,11 +928,13 @@ spec:
|
|||
resourceFieldRef:
|
||||
containerName: crossplane
|
||||
resource: limits.cpu
|
||||
divisor: "1"
|
||||
- name: GOMEMLIMIT
|
||||
valueFrom:
|
||||
resourceFieldRef:
|
||||
containerName: crossplane
|
||||
resource: limits.memory
|
||||
divisor: "1"
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
|
|
@ -1020,47 +945,49 @@ spec:
|
|||
fieldPath: spec.serviceAccountName
|
||||
- name: LEADER_ELECTION
|
||||
value: "true"
|
||||
- name: "WEBHOOK_TLS_SECRET_NAME"
|
||||
value: webhook-tls-secret
|
||||
- name: "WEBHOOK_TLS_CERT_DIR"
|
||||
value: /webhook/tls
|
||||
- name: "TLS_SERVER_SECRET_NAME"
|
||||
value: crossplane-tls-server
|
||||
- name: "TLS_SERVER_CERTS_DIR"
|
||||
value: /tls/server
|
||||
- name: "TLS_CLIENT_SECRET_NAME"
|
||||
value: crossplane-tls-client
|
||||
- name: "TLS_CLIENT_CERTS_DIR"
|
||||
value: /tls/client
|
||||
volumeMounts:
|
||||
- mountPath: /cache
|
||||
name: package-cache
|
||||
- mountPath: /webhook/tls
|
||||
name: webhook-tls-secret
|
||||
- mountPath: /tls/server
|
||||
name: tls-server-certs
|
||||
- mountPath: /tls/client
|
||||
name: tls-client-certs
|
||||
volumes:
|
||||
- name: package-cache
|
||||
emptyDir:
|
||||
medium:
|
||||
sizeLimit: 20Mi
|
||||
- name: webhook-tls-secret
|
||||
- name: tls-server-certs
|
||||
secret:
|
||||
# NOTE(muvaf): The tls.crt is used both by the server (requires it to
|
||||
# be a single cert) and the caBundle fields of webhook configs and CRDs
|
||||
# which can accept a whole bundle of certificates. In order to meet
|
||||
# the requirements of both, we require a single certificate instead of
|
||||
# a bundle.
|
||||
# It's assumed that initializer generates this anyway, so it should be
|
||||
# fine.
|
||||
secretName: webhook-tls-secret
|
||||
secretName: crossplane-tls-server
|
||||
- name: tls-client-certs
|
||||
secret:
|
||||
secretName: crossplane-tls-client
|
||||
---
|
||||
# Source: crossplane/templates/rbac-manager-deployment.yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: crossplane-rbac-manager
|
||||
namespace: crossplane-system
|
||||
namespace: default
|
||||
labels:
|
||||
app: crossplane-rbac-manager
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
|
|
@ -1074,19 +1001,17 @@ spec:
|
|||
labels:
|
||||
app: crossplane-rbac-manager
|
||||
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/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"
|
||||
app.kubernetes.io/version: "1.15.0"
|
||||
spec:
|
||||
securityContext:
|
||||
{}
|
||||
serviceAccountName: rbac-manager
|
||||
initContainers:
|
||||
- image: "crossplane/crossplane:v1.14.0"
|
||||
- image: "xpkg.upbound.io/crossplane/crossplane:v1.15.0"
|
||||
args:
|
||||
- rbac
|
||||
- init
|
||||
|
|
@ -1116,11 +1041,10 @@ spec:
|
|||
containerName: crossplane-init
|
||||
resource: limits.memory
|
||||
containers:
|
||||
- image: "crossplane/crossplane:v1.14.0"
|
||||
- image: "xpkg.upbound.io/crossplane/crossplane:v1.15.0"
|
||||
args:
|
||||
- rbac
|
||||
- start
|
||||
- --manage=Basic
|
||||
- --provider-clusterrole=crossplane:allowed-provider-permissions
|
||||
imagePullPolicy: IfNotPresent
|
||||
name: crossplane
|
||||
|
|
@ -1155,10 +1079,10 @@ Release: 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 Version: 1.13.0
|
||||
Chart Application Version: 1.13.0
|
||||
Chart Version: 1.15.0
|
||||
Chart Application Version: 1.15.0
|
||||
|
||||
Kube Version: v1.27.4
|
||||
Kube Version: v1.27.3
|
||||
```
|
||||
{{< /expand >}}
|
||||
|
||||
|
|
@ -1180,7 +1104,7 @@ crossplane-d4cd8d784-ldcgb 1/1 Running 0 54s
|
|||
crossplane-rbac-manager-84769b574-6mw6f 1/1 Running 0 54s
|
||||
```
|
||||
|
||||
Installing Crossplane creates new Kubernetes API end-points.
|
||||
Installing Crossplane creates new Kubernetes API end-points.
|
||||
Look at the new API end-points with `kubectl api-resources | grep crossplane`.
|
||||
|
||||
```shell {label="grep",copy-lines="1"}
|
||||
|
|
@ -1189,9 +1113,13 @@ compositeresourcedefinitions xrd,xrds apiextensions.crossplane.io/v1
|
|||
compositionrevisions comprev apiextensions.crossplane.io/v1 false CompositionRevision
|
||||
compositions comp apiextensions.crossplane.io/v1 false Composition
|
||||
environmentconfigs envcfg apiextensions.crossplane.io/v1alpha1 false EnvironmentConfig
|
||||
usages apiextensions.crossplane.io/v1alpha1 false Usage
|
||||
configurationrevisions pkg.crossplane.io/v1 false ConfigurationRevision
|
||||
configurations pkg.crossplane.io/v1 false Configuration
|
||||
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
|
||||
providerrevisions pkg.crossplane.io/v1 false ProviderRevision
|
||||
providers pkg.crossplane.io/v1 false Provider
|
||||
|
|
@ -57,18 +57,23 @@ After installing Crossplane use `kubectl get crds` to view the Crossplane
|
|||
installed CRDs.
|
||||
|
||||
```shell
|
||||
kubectl get crds
|
||||
NAME
|
||||
compositeresourcedefinitions.apiextensions.crossplane.io
|
||||
compositionrevisions.apiextensions.crossplane.io
|
||||
compositions.apiextensions.crossplane.io
|
||||
configurationrevisions.pkg.crossplane.io
|
||||
configurations.pkg.crossplane.io
|
||||
controllerconfigs.pkg.crossplane.io
|
||||
locks.pkg.crossplane.io
|
||||
providerrevisions.pkg.crossplane.io
|
||||
providers.pkg.crossplane.io
|
||||
storeconfigs.secrets.crossplane.io
|
||||
❯ kubectl get crd
|
||||
NAME
|
||||
compositeresourcedefinitions.apiextensions.crossplane.io
|
||||
compositionrevisions.apiextensions.crossplane.io
|
||||
compositions.apiextensions.crossplane.io
|
||||
configurationrevisions.pkg.crossplane.io
|
||||
configurations.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
|
||||
providerrevisions.pkg.crossplane.io
|
||||
providers.pkg.crossplane.io
|
||||
storeconfigs.secrets.crossplane.io
|
||||
usages.apiextensions.crossplane.io
|
||||
```
|
||||
{{< /expand >}}
|
||||
|
||||
|
|
@ -220,7 +225,7 @@ metadata:
|
|||
spec:
|
||||
compositeTypeRef:
|
||||
apiVersion: test.example.org/v1alpha1
|
||||
kind: myComputeResource
|
||||
kind: MyComputeResource
|
||||
# Removed for brevity
|
||||
```
|
||||
|
||||
|
|
@ -230,9 +235,9 @@ label="comp" line="8">}}kind{{< /hover >}}.
|
|||
|
||||
```yaml {label="xr"}
|
||||
apiVersion: test.example.org/v1alpha1
|
||||
kind: myComputeResource
|
||||
kind: MyComputeResource
|
||||
metadata:
|
||||
name: myResource
|
||||
name: my-resource
|
||||
spec:
|
||||
storage: "large"
|
||||
```
|
||||
|
|
@ -305,7 +310,7 @@ to define the _Composite Resource_ {{<hover label="xr2" line="6" >}}spec{{</hove
|
|||
spec:
|
||||
group: test.example.org
|
||||
names:
|
||||
kind: myComputeResource
|
||||
kind: MyComputeResource
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
schema:
|
||||
|
|
@ -317,9 +322,9 @@ A _Composite Resource_ based on this _Composite Resource Definition_ looks like
|
|||
```yaml {label="xr2"}
|
||||
# Composite Resource (XR)
|
||||
apiVersion: test.example.org/v1alpha1
|
||||
kind: myComputeResource
|
||||
kind: MyComputeResource
|
||||
metadata:
|
||||
name: myResource
|
||||
name: my-resource
|
||||
spec:
|
||||
storage: "large"
|
||||
```
|
||||
|
|
@ -350,7 +355,7 @@ or {{<hover label="specVersions" line="21" >}}large{{< /hover >}}.
|
|||
spec:
|
||||
group: test.example.org
|
||||
names:
|
||||
kind: myComputeResource
|
||||
kind: MyComputeResource
|
||||
versions:
|
||||
- name: v1alpha1
|
||||
served: true
|
||||
|
|
@ -387,7 +392,7 @@ allows the creation of _Claims_ of `kind: computeClaim`.
|
|||
spec:
|
||||
group: test.example.org
|
||||
names:
|
||||
kind: myComputeResource
|
||||
kind: MyComputeResource
|
||||
claimNames:
|
||||
kind: computeClaim
|
||||
# Removed for brevity
|
||||
|
|
@ -426,7 +431,7 @@ _Composite Resources_.
|
|||
spec:
|
||||
group: test.example.org
|
||||
names:
|
||||
kind: myComputeResource
|
||||
kind: MyComputeResource
|
||||
claimNames:
|
||||
kind: computeClaim
|
||||
# Removed for brevity
|
||||
|
|
@ -472,9 +477,9 @@ The _Composite Resource Definition_ defines the
|
|||
```yaml {label="xr-claim"}
|
||||
# Composite Resource (XR)
|
||||
apiVersion: test.example.org/v1alpha1
|
||||
kind: myComputeResource
|
||||
kind: MyComputeResource
|
||||
metadata:
|
||||
name: myResource
|
||||
name: my-resource
|
||||
spec:
|
||||
storage: "large"
|
||||
```
|
||||
|
|
@ -2,6 +2,8 @@
|
|||
title: AWS Quickstart Part 2
|
||||
weight: 120
|
||||
tocHidden: true
|
||||
aliases:
|
||||
- /master/getting-started/provider-aws-part-3
|
||||
---
|
||||
|
||||
{{< hint "important" >}}
|
||||
|
|
@ -42,7 +44,7 @@ kind: Provider
|
|||
metadata:
|
||||
name: provider-aws-s3
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-aws-s3:v0.47.0
|
||||
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.1.0
|
||||
EOF
|
||||
```
|
||||
|
||||
|
|
@ -94,7 +96,7 @@ kind: Provider
|
|||
metadata:
|
||||
name: provider-aws-dynamodb
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-aws-dynamodb:v0.47.0
|
||||
package: xpkg.upbound.io/upbound/provider-aws-dynamodb:v1.1.0
|
||||
EOF
|
||||
```
|
||||
|
||||
|
|
@ -104,9 +106,9 @@ View the new DynamoDB provider with `kubectl get providers`.
|
|||
```shell {copy-lines="1"}
|
||||
kubectl get providers
|
||||
NAME INSTALLED HEALTHY PACKAGE AGE
|
||||
provider-aws-dynamodb True True xpkg.upbound.io/upbound/provider-aws-dynamodb:v0.47.0 3m55s
|
||||
provider-aws-s3 True True xpkg.upbound.io/upbound/provider-aws-s3:v0.47.0 13m
|
||||
upbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:v0.47.0 13m
|
||||
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:v1.1.0 13m
|
||||
upbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:v1.1.0 13m
|
||||
```
|
||||
|
||||
## Create a custom API
|
||||
|
|
@ -306,10 +308,9 @@ with a template describing what infrastructure to deploy. Crossplane calls this
|
|||
template a _Composition_.
|
||||
|
||||
The {{<hover label="comp" line="3">}}Composition{{</hover>}} defines all the
|
||||
cloud resources to deploy.
|
||||
Each entry in the template
|
||||
is a full resource definitions, defining all the resource settings and metadata
|
||||
like labels and annotations.
|
||||
cloud resources to deploy. Each entry in the template is a full resource
|
||||
definition, defining all the resource settings and metadata like labels and
|
||||
annotations.
|
||||
|
||||
This template creates an AWS
|
||||
{{<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="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
|
||||
{{<hover label="comp" line="21">}}location{{</hover>}} input and uses it as the
|
||||
{{<hover label="comp" line="16">}}region{{</hover>}} used in the individual
|
||||
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.
|
||||
|
||||
```yaml {label="comp",copy-lines="all"}
|
||||
|
|
@ -333,51 +345,59 @@ kind: Composition
|
|||
metadata:
|
||||
name: dynamo-with-bucket
|
||||
spec:
|
||||
resources:
|
||||
- name: s3Bucket
|
||||
base:
|
||||
apiVersion: s3.aws.upbound.io/v1beta1
|
||||
kind: Bucket
|
||||
metadata:
|
||||
name: crossplane-quickstart-bucket
|
||||
spec:
|
||||
forProvider:
|
||||
region: us-east-2
|
||||
providerConfigRef:
|
||||
name: default
|
||||
patches:
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: "spec.location"
|
||||
toFieldPath: "spec.forProvider.region"
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
EU: "eu-north-1"
|
||||
US: "us-east-2"
|
||||
- name: dynamoDB
|
||||
base:
|
||||
apiVersion: dynamodb.aws.upbound.io/v1beta1
|
||||
kind: Table
|
||||
metadata:
|
||||
name: crossplane-quickstart-database
|
||||
spec:
|
||||
forProvider:
|
||||
region: "us-east-2"
|
||||
writeCapacity: 1
|
||||
readCapacity: 1
|
||||
attribute:
|
||||
- name: S3ID
|
||||
type: S
|
||||
hashKey: S3ID
|
||||
patches:
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: "spec.location"
|
||||
toFieldPath: "spec.forProvider.region"
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
EU: "eu-north-1"
|
||||
US: "us-east-2"
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: s3Bucket
|
||||
base:
|
||||
apiVersion: s3.aws.upbound.io/v1beta1
|
||||
kind: Bucket
|
||||
metadata:
|
||||
name: crossplane-quickstart-bucket
|
||||
spec:
|
||||
forProvider:
|
||||
region: us-east-2
|
||||
providerConfigRef:
|
||||
name: default
|
||||
patches:
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: "spec.location"
|
||||
toFieldPath: "spec.forProvider.region"
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
EU: "eu-north-1"
|
||||
US: "us-east-2"
|
||||
- name: dynamoDB
|
||||
base:
|
||||
apiVersion: dynamodb.aws.upbound.io/v1beta1
|
||||
kind: Table
|
||||
metadata:
|
||||
name: crossplane-quickstart-database
|
||||
spec:
|
||||
forProvider:
|
||||
region: "us-east-2"
|
||||
writeCapacity: 1
|
||||
readCapacity: 1
|
||||
attribute:
|
||||
- name: S3ID
|
||||
type: S
|
||||
hashKey: S3ID
|
||||
patches:
|
||||
- type: FromCompositeFieldPath
|
||||
fromFieldPath: "spec.location"
|
||||
toFieldPath: "spec.forProvider.region"
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
EU: "eu-north-1"
|
||||
US: "us-east-2"
|
||||
compositeTypeRef:
|
||||
apiVersion: database.example.com/v1alpha1
|
||||
kind: NoSQL
|
||||
|
|
@ -387,14 +407,32 @@ EOF
|
|||
The {{<hover label="comp" line="52">}}compositeTypeRef{{</hover >}} defines
|
||||
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" >}}
|
||||
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||
more information on configuring Compositions and all the available options.
|
||||
|
||||
Read the
|
||||
[Patch and Transform documentation]({{<ref "../concepts/patch-and-transform">}})
|
||||
for more information on how Crossplane uses patches to map user inputs to
|
||||
Composition resource templates.
|
||||
[Patch and Transform function documentation]({{<ref "../guides/function-patch-and-transform">}})
|
||||
for more information on how it uses patches to map user inputs to Composition
|
||||
resource templates.
|
||||
{{< /hint >}}
|
||||
|
||||
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
|
||||
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:
|
||||
* Part 1 walks through installing Crossplane, configuring the provider to
|
||||
|
|
@ -37,7 +37,7 @@ kind: Provider
|
|||
metadata:
|
||||
name: provider-aws-s3
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-aws-s3:v0.47.0
|
||||
package: xpkg.upbound.io/upbound/provider-aws-s3:v1.1.0
|
||||
EOF
|
||||
```
|
||||
|
||||
|
|
@ -52,8 +52,8 @@ Verify the provider installed with `kubectl get providers`.
|
|||
```shell {copy-lines="1",label="getProvider"}
|
||||
kubectl get providers
|
||||
NAME INSTALLED HEALTHY PACKAGE AGE
|
||||
provider-aws-s3 True True xpkg.upbound.io/upbound/provider-aws-s3:v0.47.0 97s
|
||||
upbound-provider-family-aws True True xpkg.upbound.io/upbound/provider-family-aws:v0.47.0 88s
|
||||
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:1.1.0 88s
|
||||
```
|
||||
|
||||
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" >}}
|
||||
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 >}}
|
||||
|
||||
## Create a Kubernetes secret for AWS
|
||||
|
|
@ -45,7 +45,7 @@ kind: Provider
|
|||
metadata:
|
||||
name: provider-azure-network
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-azure-network:v0.34.0
|
||||
package: xpkg.upbound.io/upbound/provider-azure-network:v0.42.1
|
||||
EOF
|
||||
```
|
||||
|
||||
|
|
@ -295,13 +295,24 @@ This template creates an Azure
|
|||
{{<hover label="comp" line="90">}}VirtualNetwork{{</hover>}} and
|
||||
{{<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
|
||||
{{<hover label="comp" line="36">}}location{{</hover>}} input and uses it as the
|
||||
{{<hover label="comp" line="37">}}location{{</hover>}} used in the individual
|
||||
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.
|
||||
|
||||
```yaml {label="comp",copy-lines="all"}
|
||||
|
|
@ -311,122 +322,130 @@ kind: Composition
|
|||
metadata:
|
||||
name: crossplane-quickstart-vm-with-network
|
||||
spec:
|
||||
resources:
|
||||
- name: quickstart-vm
|
||||
base:
|
||||
apiVersion: compute.azure.upbound.io/v1beta1
|
||||
kind: LinuxVirtualMachine
|
||||
spec:
|
||||
forProvider:
|
||||
adminUsername: adminuser
|
||||
adminSshKey:
|
||||
- publicKey: ssh-rsa
|
||||
AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN
|
||||
example@docs.crossplane.io
|
||||
username: adminuser
|
||||
location: "Central US"
|
||||
osDisk:
|
||||
- caching: ReadWrite
|
||||
storageAccountType: Standard_LRS
|
||||
resourceGroupNameSelector:
|
||||
matchControllerRef: true
|
||||
size: Standard_B1ms
|
||||
sourceImageReference:
|
||||
- offer: debian-11
|
||||
publisher: Debian
|
||||
sku: 11-backports-gen2
|
||||
version: latest
|
||||
networkInterfaceIdsSelector:
|
||||
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:
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: quickstart-vm
|
||||
base:
|
||||
apiVersion: compute.azure.upbound.io/v1beta1
|
||||
kind: LinuxVirtualMachine
|
||||
spec:
|
||||
forProvider:
|
||||
adminUsername: adminuser
|
||||
adminSshKey:
|
||||
- publicKey: ssh-rsa
|
||||
AAAAB3NzaC1yc2EAAAADAQABAAABAQC+wWK73dCr+jgQOAxNsHAnNNNMEMWOHYEccp6wJm2gotpr9katuF/ZAdou5AaW1C61slRkHRkpRRX9FA9CYBiitZgvCCz+3nWNN7l/Up54Zps/pHWGZLHNJZRYyAB6j5yVLMVHIHriY49d/GZTZVNB8GoJv9Gakwc/fuEZYYl4YDFiGMBP///TzlI4jhiJzjKnEvqPFki5p2ZRJqcbCiF4pJrxUQR/RXqVFQdbRLZgYfJ8xGB878RENq3yQ39d8dVOkq4edbkzwcUmwwwkYVPIoDGsYLaRHnG+To7FvMeyO7xDVQkMKzopTQV8AuKpyvpqu0a9pWOMaiCyDytO7GGN
|
||||
example@docs.crossplane.io
|
||||
username: adminuser
|
||||
location: "Central US"
|
||||
osDisk:
|
||||
- caching: ReadWrite
|
||||
storageAccountType: Standard_LRS
|
||||
resourceGroupNameSelector:
|
||||
matchControllerRef: true
|
||||
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: quickstart-subnet
|
||||
base:
|
||||
apiVersion: network.azure.upbound.io/v1beta1
|
||||
kind: Subnet
|
||||
spec:
|
||||
forProvider:
|
||||
addressPrefixes:
|
||||
- 10.0.1.0/24
|
||||
virtualNetworkNameSelector:
|
||||
matchControllerRef: true
|
||||
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-network
|
||||
base:
|
||||
apiVersion: network.azure.upbound.io/v1beta1
|
||||
kind: VirtualNetwork
|
||||
spec:
|
||||
forProvider:
|
||||
addressSpace:
|
||||
- 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"
|
||||
size: Standard_B1ms
|
||||
sourceImageReference:
|
||||
- offer: debian-11
|
||||
publisher: Debian
|
||||
sku: 11-backports-gen2
|
||||
version: latest
|
||||
networkInterfaceIdsSelector:
|
||||
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
|
||||
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: quickstart-subnet
|
||||
base:
|
||||
apiVersion: network.azure.upbound.io/v1beta1
|
||||
kind: Subnet
|
||||
spec:
|
||||
forProvider:
|
||||
addressPrefixes:
|
||||
- 10.0.1.0/24
|
||||
virtualNetworkNameSelector:
|
||||
matchControllerRef: true
|
||||
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-network
|
||||
base:
|
||||
apiVersion: network.azure.upbound.io/v1beta1
|
||||
kind: VirtualNetwork
|
||||
spec:
|
||||
forProvider:
|
||||
addressSpace:
|
||||
- 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:
|
||||
apiVersion: compute.example.com/v1alpha1
|
||||
kind: VirtualMachine
|
||||
|
|
@ -436,14 +455,32 @@ EOF
|
|||
The {{<hover label="comp" line="52">}}compositeTypeRef{{</hover >}} defines
|
||||
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" >}}
|
||||
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||
more information on configuring Compositions and all the available options.
|
||||
|
||||
Read the
|
||||
[Patch and Transform documentation]({{<ref "../concepts/patch-and-transform">}})
|
||||
for more information on how Crossplane uses patches to map user inputs to
|
||||
Composition resource templates.
|
||||
[Patch and Transform function documentation]({{<ref "../guides/function-patch-and-transform">}})
|
||||
for more information on how it uses patches to map user inputs to Composition
|
||||
resource templates.
|
||||
{{< /hint >}}
|
||||
|
||||
View the Composition with `kubectl get composition`
|
||||
|
|
@ -468,7 +505,7 @@ kind: Provider
|
|||
metadata:
|
||||
name: provider-azure-compute
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-azure-compute:v0.34.0
|
||||
package: xpkg.upbound.io/upbound/provider-azure-compute:v0.42.1
|
||||
EOF
|
||||
```
|
||||
|
||||
|
|
@ -478,9 +515,9 @@ View the new Compute provider with `kubectl get providers`.
|
|||
```shell {copy-lines="1"}
|
||||
kubectl get providers
|
||||
NAME INSTALLED HEALTHY PACKAGE AGE
|
||||
provider-azure-compute True True xpkg.upbound.io/upbound/provider-azure-compute:v0.34.0 25s
|
||||
provider-azure-network True True xpkg.upbound.io/upbound/provider-azure-network:v0.34.0 3h
|
||||
upbound-provider-family-azure True True xpkg.upbound.io/upbound/provider-family-azure:v0.34.0 3h
|
||||
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.42.1 3h
|
||||
upbound-provider-family-azure True True xpkg.upbound.io/upbound/provider-family-azure:v0.42.1 3h
|
||||
```
|
||||
|
||||
## Access the custom API
|
||||
|
|
@ -39,7 +39,7 @@ kind: Provider
|
|||
metadata:
|
||||
name: provider-azure-network
|
||||
spec:
|
||||
package: xpkg.upbound.io/upbound/provider-azure-network:v0.34.0
|
||||
package: xpkg.upbound.io/upbound/provider-azure-network:v0.42.1
|
||||
EOF
|
||||
```
|
||||
|
||||
|
|
@ -54,8 +54,8 @@ Verify the provider installed with `kubectl get providers`.
|
|||
```shell {copy-lines="1",label="getProvider"}
|
||||
kubectl get providers
|
||||
NAME INSTALLED HEALTHY PACKAGE AGE
|
||||
provider-azure-network True True xpkg.upbound.io/upbound/provider-azure-network:v0.34.0 38s
|
||||
upbound-provider-family-azure True True xpkg.upbound.io/upbound/provider-family-azure:v0.34.0 26s
|
||||
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.42.1 26s
|
||||
```
|
||||
|
||||
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" >}}
|
||||
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 >}}
|
||||
|
||||
|
||||
|
|
@ -236,4 +236,4 @@ virtualnetwork.network.azure.upbound.io "crossplane-quickstart-network" deleted
|
|||
* Explore Azure resources that Crossplane can configure in the
|
||||
[Provider CRD reference](https://marketplace.upbound.io/providers/upbound/provider-family-azure/).
|
||||
* Join the [Crossplane Slack](https://slack.crossplane.io/) and connect with
|
||||
Crossplane users and contributors.
|
||||
Crossplane users and contributors.
|
||||
|
|
@ -2,6 +2,8 @@
|
|||
title: GCP Quickstart Part 2
|
||||
weight: 120
|
||||
tocHidden: true
|
||||
aliases:
|
||||
- /master/getting-started/provider-azure-part-3
|
||||
---
|
||||
|
||||
{{< hint "important" >}}
|
||||
|
|
@ -335,13 +337,24 @@ This template creates a GCP
|
|||
{{<hover label="comp" line="25">}}PubSub{{</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
|
||||
{{<hover label="comp" line="16">}}location{{</hover>}} input and uses it as the
|
||||
{{<hover label="comp" line="14">}}location{{</hover>}} used in the individual
|
||||
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.
|
||||
|
||||
```yaml {label="comp",copy-lines="all"}
|
||||
|
|
@ -351,39 +364,47 @@ kind: Composition
|
|||
metadata:
|
||||
name: topic-with-bucket
|
||||
spec:
|
||||
resources:
|
||||
- name: crossplane-quickstart-bucket
|
||||
base:
|
||||
apiVersion: storage.gcp.upbound.io/v1beta1
|
||||
kind: Bucket
|
||||
spec:
|
||||
forProvider:
|
||||
location: "US"
|
||||
patches:
|
||||
- fromFieldPath: "spec.location"
|
||||
toFieldPath: "spec.forProvider.location"
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
EU: "EU"
|
||||
US: "US"
|
||||
- name: crossplane-quickstart-topic
|
||||
base:
|
||||
apiVersion: pubsub.gcp.upbound.io/v1beta1
|
||||
kind: Topic
|
||||
spec:
|
||||
forProvider:
|
||||
messageStoragePolicy:
|
||||
- allowedPersistenceRegions:
|
||||
- "us-central1"
|
||||
patches:
|
||||
- fromFieldPath: "spec.location"
|
||||
toFieldPath: "spec.forProvider.messageStoragePolicy[0].allowedPersistenceRegions[0]"
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
EU: "europe-central2"
|
||||
US: "us-central1"
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: crossplane-quickstart-bucket
|
||||
base:
|
||||
apiVersion: storage.gcp.upbound.io/v1beta1
|
||||
kind: Bucket
|
||||
spec:
|
||||
forProvider:
|
||||
location: "US"
|
||||
patches:
|
||||
- fromFieldPath: "spec.location"
|
||||
toFieldPath: "spec.forProvider.location"
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
EU: "EU"
|
||||
US: "US"
|
||||
- name: crossplane-quickstart-topic
|
||||
base:
|
||||
apiVersion: pubsub.gcp.upbound.io/v1beta1
|
||||
kind: Topic
|
||||
spec:
|
||||
forProvider:
|
||||
messageStoragePolicy:
|
||||
- allowedPersistenceRegions:
|
||||
- "us-central1"
|
||||
patches:
|
||||
- fromFieldPath: "spec.location"
|
||||
toFieldPath: "spec.forProvider.messageStoragePolicy[0].allowedPersistenceRegions[0]"
|
||||
transforms:
|
||||
- type: map
|
||||
map:
|
||||
EU: "europe-central2"
|
||||
US: "us-central1"
|
||||
compositeTypeRef:
|
||||
apiVersion: queue.example.com/v1alpha1
|
||||
kind: PubSub
|
||||
|
|
@ -393,14 +414,32 @@ EOF
|
|||
The {{<hover label="comp" line="40">}}compositeTypeRef{{</hover >}} defines
|
||||
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" >}}
|
||||
Read the [Composition documentation]({{<ref "../concepts/compositions">}}) for
|
||||
more information on configuring Compositions and all the available options.
|
||||
|
||||
Read the
|
||||
[Patch and Transform documentation]({{<ref "../concepts/patch-and-transform">}})
|
||||
for more information on how Crossplane uses patches to map user inputs to
|
||||
Composition resource templates.
|
||||
[Patch and Transform function documentation]({{<ref "../guides/function-patch-and-transform">}})
|
||||
for more information on how it uses patches to map user inputs to Composition
|
||||
resource templates.
|
||||
{{< /hint >}}
|
||||
|
||||
View the Composition with `kubectl get composition`
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Guides
|
||||
weight: 400
|
||||
weight: 100
|
||||
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,
|
||||
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.
|
||||
|
||||
Crossplane can import resources either [manually]({{<ref "#import-resources-manually">}})
|
||||
|
|
@ -84,7 +84,7 @@ managed resource `spec` changes the external resource.
|
|||
|
||||
## 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
|
||||
resources.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
title: Troubleshoot
|
||||
title: Troubleshoot Crossplane
|
||||
weight: 306
|
||||
---
|
||||
## Requested Resource Not Found
|
||||
|
|
@ -411,35 +411,47 @@ spec:
|
|||
compositeTypeRef:
|
||||
apiVersion: ess.example.org/v1alpha1
|
||||
kind: CompositeESSInstance
|
||||
resources:
|
||||
- name: serviceaccount
|
||||
base:
|
||||
apiVersion: iam.gcp.crossplane.io/v1alpha1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: ess-test-sa
|
||||
spec:
|
||||
forProvider:
|
||||
displayName: a service account to test ess
|
||||
- name: serviceaccountkey
|
||||
base:
|
||||
apiVersion: iam.gcp.crossplane.io/v1alpha1
|
||||
kind: ServiceAccountKey
|
||||
spec:
|
||||
forProvider:
|
||||
serviceAccountSelector:
|
||||
matchControllerRef: true
|
||||
publishConnectionDetailsTo:
|
||||
name: ess-mr-conn
|
||||
mode: Pipeline
|
||||
pipeline:
|
||||
- step: patch-and-transform
|
||||
functionRef:
|
||||
name: function-patch-and-transform
|
||||
input:
|
||||
apiVersion: pt.fn.crossplane.io/v1beta1
|
||||
kind: Resources
|
||||
resources:
|
||||
- name: serviceaccount
|
||||
base:
|
||||
apiVersion: iam.gcp.crossplane.io/v1alpha1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
labels:
|
||||
environment: development
|
||||
team: backend
|
||||
configRef:
|
||||
name: vault
|
||||
connectionDetails:
|
||||
- fromConnectionSecretKey: publicKey
|
||||
- fromConnectionSecretKey: publicKeyType" | kubectl apply -f -
|
||||
name: ess-test-sa
|
||||
spec:
|
||||
forProvider:
|
||||
displayName: a service account to test ess
|
||||
- name: serviceaccountkey
|
||||
base:
|
||||
apiVersion: iam.gcp.crossplane.io/v1alpha1
|
||||
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
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
---
|
||||
title: Write a Composition Function in Go
|
||||
state: beta
|
||||
alphaVersion: "1.11"
|
||||
betaVersion: "1.14"
|
||||
weight: 80
|
||||
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
|
||||
determine what resources it should create when you create a composite resource
|
||||
(XR). Read the
|
||||
[concepts]({{<ref "../concepts/composition-functions" >}})
|
||||
[concepts]({{<ref "../concepts/compositions" >}})
|
||||
page to learn more about composition functions.
|
||||
|
||||
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" >}}
|
||||
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.
|
||||
{{< /hint >}}
|
||||
|
||||
|
|
@ -79,17 +76,17 @@ build or test a composition function.
|
|||
|
||||
## 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
|
||||
[a GitHub repository](https://github.com/crossplane/function-template-go)
|
||||
as a template.
|
||||
|
||||
```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)
|
||||
```
|
||||
|
||||
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
|
||||
this:
|
||||
|
||||
|
|
@ -111,7 +108,7 @@ some other files in the template:
|
|||
<!--
|
||||
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
|
||||
replacing the template name with the new function's name. See Crossplane issue
|
||||
[#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,
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
```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())
|
||||
|
||||
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
|
||||
using [Protocol Buffers](http://protobuf.dev). You can find detailed schemas for
|
||||
`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>}}
|
||||
|
||||
Edit the `RunFunction` method to replace it with this code.
|
||||
|
||||
```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)
|
||||
|
||||
xr, err := request.GetObservedCompositeResource(req)
|
||||
|
|
@ -274,7 +271,7 @@ import (
|
|||
|
||||
"github.com/crossplane/function-sdk-go/errors"
|
||||
"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/resource"
|
||||
"github.com/crossplane/function-sdk-go/resource/composed"
|
||||
|
|
@ -283,14 +280,14 @@ import (
|
|||
|
||||
// Function returns whatever response you ask it to.
|
||||
type Function struct {
|
||||
fnv1beta1.UnimplementedFunctionRunnerServiceServer
|
||||
fnv1.UnimplementedFunctionRunnerServiceServer
|
||||
|
||||
log logging.Logger
|
||||
}
|
||||
|
||||
// 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.
|
||||
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())
|
||||
|
||||
// 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 your function by adding unit tests, and by using the `crossplane beta
|
||||
render` command.
|
||||
Test your function by adding unit tests, and by using the `crossplane render`
|
||||
command.
|
||||
|
||||
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
|
||||
|
|
@ -456,17 +453,17 @@ import (
|
|||
|
||||
"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"
|
||||
)
|
||||
|
||||
func TestRunFunction(t *testing.T) {
|
||||
type args struct {
|
||||
ctx context.Context
|
||||
req *fnv1beta1.RunFunctionRequest
|
||||
req *fnv1.RunFunctionRequest
|
||||
}
|
||||
type want struct {
|
||||
rsp *fnv1beta1.RunFunctionResponse
|
||||
rsp *fnv1.RunFunctionResponse
|
||||
err error
|
||||
}
|
||||
|
||||
|
|
@ -478,9 +475,9 @@ func TestRunFunction(t *testing.T) {
|
|||
"AddTwoBuckets": {
|
||||
reason: "The Function should add two buckets to the desired composed resources",
|
||||
args: args{
|
||||
req: &fnv1beta1.RunFunctionRequest{
|
||||
Observed: &fnv1beta1.State{
|
||||
Composite: &fnv1beta1.Resource{
|
||||
req: &fnv1.RunFunctionRequest{
|
||||
Observed: &fnv1.State{
|
||||
Composite: &fnv1.Resource{
|
||||
// MustStructJSON is a handy way to provide mock
|
||||
// resources.
|
||||
Resource: resource.MustStructJSON(`{
|
||||
|
|
@ -502,10 +499,10 @@ func TestRunFunction(t *testing.T) {
|
|||
},
|
||||
},
|
||||
want: want{
|
||||
rsp: &fnv1beta1.RunFunctionResponse{
|
||||
Meta: &fnv1beta1.ResponseMeta{Ttl: durationpb.New(60 * time.Second)},
|
||||
Desired: &fnv1beta1.State{
|
||||
Resources: map[string]*fnv1beta1.Resource{
|
||||
rsp: &fnv1.RunFunctionResponse{
|
||||
Meta: &fnv1.ResponseMeta{Ttl: durationpb.New(60 * time.Second)},
|
||||
Desired: &fnv1.State{
|
||||
Resources: map[string]*fnv1.Resource{
|
||||
"xbuckets-test-bucket-a": {Resource: resource.MustStructJSON(`{
|
||||
"apiVersion": "s3.aws.upbound.io/v1beta1",
|
||||
"kind": "Bucket",
|
||||
|
|
@ -582,7 +579,7 @@ Expand the following block to see example 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.
|
||||
|
||||
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:
|
||||
|
||||
```yaml
|
||||
apiVersion: pkg.crossplane.io/v1beta1
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Function
|
||||
metadata:
|
||||
name: function-xbuckets
|
||||
|
|
@ -642,12 +639,12 @@ spec:
|
|||
|
||||
The Function in `functions.yaml` uses the
|
||||
{{<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
|
||||
pull and run the function.
|
||||
|
||||
```yaml {label="development"}
|
||||
apiVersion: pkg.crossplane.io/v1beta1
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Function
|
||||
metadata:
|
||||
name: function-xbuckets
|
||||
|
|
@ -667,10 +664,10 @@ to run without encryption or authentication. Only use it during testing and
|
|||
development.
|
||||
{{</hint>}}
|
||||
|
||||
In a separate terminal, run `crossplane beta render`.
|
||||
In a separate terminal, run `crossplane render`.
|
||||
|
||||
```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
|
||||
|
|
@ -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}
|
||||
```
|
||||
|
||||
The `crossplane beta render` command prints the desired resources the function
|
||||
The `crossplane render` command prints the desired resources the function
|
||||
returns.
|
||||
|
||||
```yaml
|
||||
|
|
@ -740,7 +737,7 @@ spec:
|
|||
|
||||
{{<hint "tip">}}
|
||||
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>}}
|
||||
|
||||
## 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
|
||||
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.
|
||||
|
||||
Use Docker to build a runtime for each platform.
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
---
|
||||
title: Write a Composition Function in Python
|
||||
state: beta
|
||||
alphaVersion: "1.11"
|
||||
betaVersion: "1.14"
|
||||
weight: 81
|
||||
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
|
||||
determine what resources it should create when you create a composite resource
|
||||
(XR). Read the
|
||||
[concepts]({{<ref "../concepts/composition-functions" >}})
|
||||
[concepts]({{<ref "../concepts/compositions" >}})
|
||||
page to learn more about composition functions.
|
||||
|
||||
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" >}}
|
||||
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.
|
||||
{{< /hint >}}
|
||||
|
||||
|
|
@ -80,17 +77,17 @@ build or test a composition function.
|
|||
|
||||
## 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
|
||||
[a GitHub repository](https://github.com/crossplane/function-template-python)
|
||||
as a template.
|
||||
|
||||
```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)
|
||||
```
|
||||
|
||||
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
|
||||
this:
|
||||
|
||||
|
|
@ -118,7 +115,7 @@ know about some other files in the template:
|
|||
<!--
|
||||
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
|
||||
replacing the template name with the new function's name. See Crossplane issue
|
||||
[#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
|
||||
`package/input` directory.
|
||||
|
||||
The [composition functions]({{<ref "../concepts/composition-functions" >}})
|
||||
The [composition functions]({{<ref "../concepts/compositions" >}})
|
||||
documentation explains composition function inputs.
|
||||
|
||||
{{<hint "tip">}}
|
||||
|
|
@ -151,7 +148,7 @@ method in `function/fn.py`. When you first open the file it contains a "hello
|
|||
world" function.
|
||||
|
||||
```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.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.
|
||||
|
||||
```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.info("Running function")
|
||||
|
||||
|
|
@ -219,11 +216,11 @@ commentary explaining the function's logic.
|
|||
|
||||
import grpc
|
||||
from crossplane.function import logging, response
|
||||
from crossplane.function.proto.v1beta1 import run_function_pb2 as fnv1beta1
|
||||
from crossplane.function.proto.v1beta1 import run_function_pb2_grpc as grpcv1beta1
|
||||
from crossplane.function.proto.v1 import run_function_pb2 as fnv1
|
||||
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."""
|
||||
|
||||
def __init__(self):
|
||||
|
|
@ -231,8 +228,8 @@ class FunctionRunner(grpcv1beta1.FunctionRunnerService):
|
|||
self.log = logging.get_logger()
|
||||
|
||||
async def RunFunction(
|
||||
self, req: fnv1beta1.RunFunctionRequest, _: grpc.aio.ServicerContext
|
||||
) -> fnv1beta1.RunFunctionResponse:
|
||||
self, req: fnv1.RunFunctionRequest, _: grpc.aio.ServicerContext
|
||||
) -> fnv1.RunFunctionResponse:
|
||||
"""Run the function."""
|
||||
# Create a logger for this request.
|
||||
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 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
|
||||
# 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
|
||||
`RunFunctionResponse` Python objects from a
|
||||
[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
|
||||
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
|
||||
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:
|
||||
|
|
@ -338,8 +335,8 @@ for further details.
|
|||
|
||||
## Test the function end-to-end
|
||||
|
||||
Test your function by adding unit tests, and by using the `crossplane beta
|
||||
render` command.
|
||||
Test your function by adding unit tests, and by using the `crossplane render`
|
||||
command.
|
||||
|
||||
When you initialize a function from the
|
||||
template it adds some unit tests to `tests/test_fn.py`. These tests use the
|
||||
|
|
@ -355,7 +352,7 @@ import dataclasses
|
|||
import unittest
|
||||
|
||||
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 json_format
|
||||
from google.protobuf import struct_pb2 as structpb
|
||||
|
|
@ -372,15 +369,15 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
|
|||
@dataclasses.dataclass
|
||||
class TestCase:
|
||||
reason: str
|
||||
req: fnv1beta1.RunFunctionRequest
|
||||
want: fnv1beta1.RunFunctionResponse
|
||||
req: fnv1.RunFunctionRequest
|
||||
want: fnv1.RunFunctionResponse
|
||||
|
||||
cases = [
|
||||
TestCase(
|
||||
reason="The function should compose two S3 buckets.",
|
||||
req=fnv1beta1.RunFunctionRequest(
|
||||
observed=fnv1beta1.State(
|
||||
composite=fnv1beta1.Resource(
|
||||
req=fnv1.RunFunctionRequest(
|
||||
observed=fnv1.State(
|
||||
composite=fnv1.Resource(
|
||||
resource=resource.dict_to_struct(
|
||||
{
|
||||
"apiVersion": "example.crossplane.io/v1alpha1",
|
||||
|
|
@ -395,11 +392,11 @@ class TestFunctionRunner(unittest.IsolatedAsyncioTestCase):
|
|||
)
|
||||
)
|
||||
),
|
||||
want=fnv1beta1.RunFunctionResponse(
|
||||
meta=fnv1beta1.ResponseMeta(ttl=durationpb.Duration(seconds=60)),
|
||||
desired=fnv1beta1.State(
|
||||
want=fnv1.RunFunctionResponse(
|
||||
meta=fnv1.ResponseMeta(ttl=durationpb.Duration(seconds=60)),
|
||||
desired=fnv1.State(
|
||||
resources={
|
||||
"xbuckets-test-bucket-a": fnv1beta1.Resource(
|
||||
"xbuckets-test-bucket-a": fnv1.Resource(
|
||||
resource=resource.dict_to_struct(
|
||||
{
|
||||
"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(
|
||||
{
|
||||
"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">}}
|
||||
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
```yaml
|
||||
apiVersion: pkg.crossplane.io/v1beta1
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Function
|
||||
metadata:
|
||||
name: function-xbuckets
|
||||
|
|
@ -542,12 +539,12 @@ spec:
|
|||
|
||||
The Function in `functions.yaml` uses the
|
||||
{{<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
|
||||
pull and run the function.
|
||||
|
||||
```yaml {label="development"}
|
||||
apiVersion: pkg.crossplane.io/v1beta1
|
||||
apiVersion: pkg.crossplane.io/v1
|
||||
kind: Function
|
||||
metadata:
|
||||
name: function-xbuckets
|
||||
|
|
@ -566,10 +563,10 @@ hatch run development
|
|||
Only use it during testing and development.
|
||||
{{</hint>}}
|
||||
|
||||
In a separate terminal, run `crossplane beta render`.
|
||||
In a separate terminal, run `crossplane render`.
|
||||
|
||||
```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
|
||||
|
|
@ -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=
|
||||
```
|
||||
|
||||
The `crossplane beta render` command prints the desired resources the function
|
||||
The `crossplane render` command prints the desired resources the function
|
||||
returns.
|
||||
|
||||
```yaml
|
||||
|
|
@ -639,7 +636,7 @@ spec:
|
|||
|
||||
{{<hint "tip">}}
|
||||
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>}}
|
||||
|
||||
## 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
|
||||
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.
|
||||
|
||||
Use Docker to build a runtime for each platform.
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
title: Learn
|
||||
title: Learn More
|
||||
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]!
|
||||
|
|
@ -1,11 +1,14 @@
|
|||
---
|
||||
title: Install, Uninstall and Upgrade
|
||||
weight: 300
|
||||
title: Install, Upgrade and Uninstall
|
||||
weight: 10
|
||||
description: Manage Crossplane installations
|
||||
---
|
||||
|
||||
## [Install Crossplane](install/)
|
||||
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/)
|
||||
How to remove Crossplane from a Kubernetes cluster.
|
||||
|
|
@ -16,7 +16,8 @@ If you don't have a Kubernetes cluster create one locally with [Kind](https://ki
|
|||
|
||||
## Install Crossplane
|
||||
|
||||
Install Crossplane using the Crossplane published _Helm chart_.
|
||||
Install Crossplane using the Crossplane published _Helm chart_.
|
||||
|
||||
|
||||
### Add the Crossplane Helm repository
|
||||
|
||||
|
|
@ -71,6 +72,7 @@ helm install crossplane \
|
|||
{{< /hint >}}
|
||||
|
||||
|
||||
|
||||
## Installed deployments
|
||||
Crossplane creates two Kubernetes _deployments_ in the `crossplane-system`
|
||||
namespace to deploy the Crossplane pods.
|
||||
|
|
@ -90,7 +92,7 @@ Kubernetes cluster.
|
|||
After the `init` container finishes, the `crossplane` pod manages two Kubernetes
|
||||
controllers.
|
||||
* The _Package Manager controller_ installs the
|
||||
provider and configuration packages.
|
||||
provider, function and configuration packages.
|
||||
* The _Composition controller_ installs and manages the
|
||||
Crossplane _Composite Resource Definitions_, _Compositions_ and _Claims_.
|
||||
|
||||
|
|
@ -110,6 +112,7 @@ chart.
|
|||
|
||||
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 -->
|
||||
<!-- allow lowercase yaml -->
|
||||
{{<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 | `[]` |
|
||||
| `extraVolumeMountsCrossplane` | Add custom `volumeMounts` 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` |
|
||||
| `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"` |
|
||||
|
|
@ -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.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.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.replicas` | The number of RBAC Manager pod `replicas` to deploy. | `1` |
|
||||
| `rbacManager.skipAggregatedClusterRoles` | Don't install aggregated Crossplane ClusterRoles. | `false` |
|
||||
| `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.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` |
|
||||
|
|
@ -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` |
|
||||
| `serviceAccount.customAnnotations` | Add custom `annotations` to the Crossplane ServiceAccount. | `{}` |
|
||||
| `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` |
|
||||
{{< /table >}}
|
||||
{{< /expand >}}
|
||||
|
|
@ -246,11 +251,13 @@ at the table below.
|
|||
| Status | Flag | Description |
|
||||
| --- | --- | --- |
|
||||
| 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-deployment-runtime-configs` | Enable support for DeploymentRuntimeConfigs. |
|
||||
| Alpha | `--enable-environment-configs` | Enable support for EnvironmentConfigs. |
|
||||
| Alpha | `--enable-external-secret-stores` | Enable support for External Secret Stores. |
|
||||
| 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. |
|
||||
{{< /table >}}
|
||||
{{< /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
|
||||
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 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
|
||||
|
||||
# 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
|
||||
# Search indexing only points to /latest, this prevents broken or out of date
|
||||
|
|
@ -31,4 +31,4 @@ hugo --minify --baseURL $DEPLOY_PRIME_URL
|
|||
else
|
||||
echo "Building other deploy $CONTEXT with URL https://deploy-preview-$REVIEW_ID--crossplane.netlify.app/"
|
||||
hugo --minify --baseURL https://deploy-preview-$REVIEW_ID--crossplane.netlify.app/
|
||||
fi
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in New Issue