experiments/compositions/composition/release/manifest.yaml (1,764 lines of code) (raw):
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
apiVersion: v1
kind: Namespace
metadata:
labels:
app.kubernetes.io/component: composition-controller-manager
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: composition-controller-manager-system
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: composition-controller-manager-namespace
app.kubernetes.io/part-of: composition
control-plane: controller-manager
name: composition-system
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
name: compositions.composition.google.com
spec:
group: composition.google.com
names:
kind: Composition
listKind: CompositionList
plural: compositions
singular: composition
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Composition is the Schema for the compositions API
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: CompositionSpec defines the desired state of Composition
properties:
description:
type: string
expanders:
items:
properties:
configref:
description: ConfigReference - For BYO Expanders, we can extend
it
properties:
name:
type: string
namespace:
type: string
required:
- name
type: object
jinja2:
description: Built in expanders
properties:
template:
type: string
required:
- template
type: object
name:
type: string
template:
description: For BYO Expanders use generic template or ref for
external config
type: string
type:
default: jinja2
description: |-
Type indicates what expander to use
jinja - jinja2 expander
...
type: string
version:
default: latest
type: string
required:
- type
type: object
minItems: 1
type: array
inputAPIGroup:
description: Use existing KRM API
type: string
namespaceMode:
description: |-
Namespace mode indicates how compositions set the namespace of the objects from expanders.
""|inherit implies inherit the facade api's namespace. Only namespaced objects are allowed.
explicit implies the objects in the template must have the namespace set.
enum:
- inherit
- explicit
type: string
required:
- expanders
type: object
status:
description: CompositionStatus defines the observed state of Composition
properties:
conditions:
items:
description: "Condition contains details for one aspect of the current
state of this API Resource.\n---\nThis struct is intended for
direct use as an array at the field path .status.conditions. For
example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
observations of a foo's current state.\n\t // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
+patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
\ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
\ // other fields\n\t}"
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
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
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
type of condition in CamelCase or in foo.example.com/CamelCase.
---
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
useful (see .node.status.conditions), the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
generation:
format: int64
type: integer
stages:
additionalProperties:
description: StageStatus captures the status of a stage
properties:
message:
type: string
reason:
type: string
validationStatus:
type: string
type: object
type: object
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
name: contexts.composition.google.com
spec:
group: composition.google.com
names:
kind: Context
listKind: ContextList
plural: contexts
singular: context
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Context is the Schema for the contexts API
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: ContextSpec defines the desired state of Context
properties:
project:
description: Project is passed to the expander.
type: string
type: object
status:
description: ContextStatus defines the observed state of Context
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
name: expanderversions.composition.google.com
spec:
group: composition.google.com
names:
kind: ExpanderVersion
listKind: ExpanderVersionList
plural: expanderversions
singular: expanderversion
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: ExpanderVersion is the Schema for the expanderversions API
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: ExpanderVersionSpec defines the desired state of ExpanderVersion
properties:
config:
description: ExpanderConfig GVK
properties:
group:
type: string
kind:
type: string
version:
type: string
required:
- group
- kind
- version
type: object
image:
description: Image if different from removePrefix(expanderversion.name
, "composition-")
type: string
imageRegistry:
description: ImageRegistry is the designated registry for where to
pull the named expander image
type: string
type:
default: job
description: |-
Type indicates what sort of expander:
job - job based expander. ephemeral
grpc - grpc service expander. persistent
enum:
- job
- grpc
type: string
validVersions:
description: ValidVersions is a list of valid versions of the named
expander
items:
type: string
type: array
required:
- type
- validVersions
type: object
status:
description: ExpanderVersionStatus defines the observed state of ExpanderVersion
properties:
conditions:
items:
description: "Condition contains details for one aspect of the current
state of this API Resource.\n---\nThis struct is intended for
direct use as an array at the field path .status.conditions. For
example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
observations of a foo's current state.\n\t // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
+patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
\ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
\ // other fields\n\t}"
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
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
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
type of condition in CamelCase or in foo.example.com/CamelCase.
---
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
useful (see .node.status.conditions), the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
versionMap:
additionalProperties:
type: string
type: object
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
name: facades.composition.google.com
spec:
group: composition.google.com
names:
kind: Facade
listKind: FacadeList
plural: facades
singular: facade
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Facade is the Schema for the facades API
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: FacadeSpec defines the desired state of Facade
properties:
facadeKind:
type: string
openAPIV3Schema:
description: Bring your own open API spec
type: object
x-kubernetes-preserve-unknown-fields: true
required:
- facadeKind
- openAPIV3Schema
type: object
status:
description: FacadeStatus defines the observed state of Facade
properties:
conditions:
items:
description: "Condition contains details for one aspect of the current
state of this API Resource.\n---\nThis struct is intended for
direct use as an array at the field path .status.conditions. For
example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
observations of a foo's current state.\n\t // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
+patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
\ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
\ // other fields\n\t}"
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
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
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
type of condition in CamelCase or in foo.example.com/CamelCase.
---
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
useful (see .node.status.conditions), the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
name: getterconfigurations.composition.google.com
spec:
group: composition.google.com
names:
kind: GetterConfiguration
listKind: GetterConfigurationList
plural: getterconfigurations
singular: getterconfiguration
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: GetterConfiguration is the Schema for the getters API
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: GetterConfigurationSpec defines the desired state of GetterConfiguration
properties:
valuesFrom:
items:
properties:
fieldRef:
items:
properties:
as:
type: string
path:
type: string
required:
- as
- path
type: object
type: array
name:
type: string
resourceRef:
properties:
group:
description: OPTION 2
type: string
kind:
type: string
name:
description: OneOf validation needed for Name and NameSuffix
in CRD Definition
type: string
nameSuffix:
type: string
resource:
type: string
version:
type: string
required:
- kind
- resource
type: object
required:
- fieldRef
- name
- resourceRef
type: object
type: array
type: object
status:
description: GetterConfigurationStatus defines the observed state of GetterConfiguration
properties:
conditions:
items:
description: "Condition contains details for one aspect of the current
state of this API Resource.\n---\nThis struct is intended for
direct use as an array at the field path .status.conditions. For
example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
observations of a foo's current state.\n\t // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
+patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
\ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
\ // other fields\n\t}"
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
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
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
type of condition in CamelCase or in foo.example.com/CamelCase.
---
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
useful (see .node.status.conditions), the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
name: plans.composition.google.com
spec:
group: composition.google.com
names:
kind: Plan
listKind: PlanList
plural: plans
singular: plan
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Plan is the Schema for the plans API
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: PlanSpec defines the desired state of Plan
properties:
stages:
additionalProperties:
properties:
manifest:
type: string
values:
type: string
type: object
type: object
type: object
status:
description: PlanStatus defines the observed state of Plan
properties:
compositionGeneration:
description: Composition generation last succesfully reconciled
format: int64
type: integer
compositionUID:
description: Composition UID
type: string
conditions:
items:
description: "Condition contains details for one aspect of the current
state of this API Resource.\n---\nThis struct is intended for
direct use as an array at the field path .status.conditions. For
example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
observations of a foo's current state.\n\t // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
+patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
\ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
\ // other fields\n\t}"
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
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
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
type of condition in CamelCase or in foo.example.com/CamelCase.
---
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
useful (see .node.status.conditions), the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
generation:
description: Plan generation we last successfully reconciled
format: int64
type: integer
inputGeneration:
description: Facade's generation last succesfully reconciled
format: int64
type: integer
lastPruned:
items:
properties:
group:
type: string
health:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
status:
type: string
version:
type: string
required:
- health
- kind
type: object
type: array
stages:
additionalProperties:
description: StageStatus captures the status of a stage
properties:
appliedCount:
type: integer
lastApplied:
items:
properties:
group:
type: string
health:
type: string
kind:
type: string
name:
type: string
namespace:
type: string
status:
type: string
version:
type: string
required:
- health
- kind
type: object
type: array
resourceCount:
type: integer
required:
- resourceCount
type: object
type: object
required:
- compositionGeneration
- inputGeneration
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: controller-manager-sa
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: serviceaccount
app.kubernetes.io/part-of: composition
name: composition-controller-manager
namespace: composition-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: getter-expander-sa
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: serviceaccount
app.kubernetes.io/part-of: composition
name: composition-getter-expander
namespace: composition-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: leader-election-role
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: role
app.kubernetes.io/part-of: composition
name: composition-leader-election-role
namespace: composition-system
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: facade
app.kubernetes.io/instance: cloudsql-editor-role
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: clusterrole
app.kubernetes.io/part-of: facade
name: composition-cloudsql-editor-role
rules:
- apiGroups:
- facade.facade
resources:
- cloudsqls
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- facade.facade
resources:
- cloudsqls/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: composition
name: composition-expanderversion-editor-role
rules:
- apiGroups:
- composition.google.com
resources:
- expanderversions
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- composition.google.com
resources:
- expanderversions/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: composition
name: composition-expanderversion-viewer-role
rules:
- apiGroups:
- composition.google.com
resources:
- expanderversions
verbs:
- get
- list
- watch
- apiGroups:
- composition.google.com
resources:
- expanderversions/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: composition-getter-expander
rules:
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- '*'
resources:
- '*'
verbs:
- get
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: composition-manager-role
rules:
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- create
- delete
- get
- list
- patch
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- create
- get
- list
- watch
- apiGroups:
- batch
resources:
- jobs
verbs:
- create
- delete
- get
- list
- patch
- apiGroups:
- composition.google.com
resources:
- compositions
- contexts
- expanderversions
- facades
- getterconfigurations
- plans
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- composition.google.com
resources:
- compositions/finalizers
verbs:
- update
- apiGroups:
- composition.google.com
resources:
- compositions/status
verbs:
- get
- patch
- update
- apiGroups:
- composition.google.com
resources:
- contexts
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- composition.google.com
resources:
- contexts/finalizers
verbs:
- update
- apiGroups:
- composition.google.com
resources:
- contexts/status
verbs:
- get
- patch
- update
- apiGroups:
- composition.google.com
resources:
- expanderversions
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- composition.google.com
resources:
- expanderversions/finalizers
verbs:
- update
- apiGroups:
- composition.google.com
resources:
- expanderversions/status
verbs:
- get
- patch
- update
- apiGroups:
- composition.google.com
resources:
- facades
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- composition.google.com
resources:
- facades/finalizers
verbs:
- update
- apiGroups:
- composition.google.com
resources:
- facades/status
verbs:
- get
- patch
- update
- apiGroups:
- composition.google.com
resources:
- getterconfigurations
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- composition.google.com
resources:
- getterconfigurations/finalizers
verbs:
- update
- apiGroups:
- composition.google.com
resources:
- getterconfigurations/status
verbs:
- get
- patch
- update
- apiGroups:
- composition.google.com
resources:
- plans
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- composition.google.com
resources:
- plans/finalizers
verbs:
- update
- apiGroups:
- composition.google.com
resources:
- plans/status
verbs:
- get
- patch
- update
- apiGroups:
- facade.compositions.google.com
resources:
- '*'
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- facade.compositions.google.com
resources:
- '*/status'
verbs:
- get
- update
- apiGroups:
- facade.facade
resources:
- '*'
verbs:
- get
- list
- patch
- update
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- delete
- get
- list
- patch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- roles
verbs:
- create
- delete
- get
- list
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: kube-rbac-proxy
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: metrics-reader
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: clusterrole
app.kubernetes.io/part-of: composition
name: composition-metrics-reader
rules:
- nonResourceURLs:
- /metrics
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: kube-rbac-proxy
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: proxy-role
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: clusterrole
app.kubernetes.io/part-of: composition
name: composition-proxy-role
rules:
- apiGroups:
- authentication.k8s.io
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- authorization.k8s.io
resources:
- subjectaccessreviews
verbs:
- create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: leader-election-rolebinding
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: rolebinding
app.kubernetes.io/part-of: composition
name: composition-leader-election-rolebinding
namespace: composition-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: composition-leader-election-role
subjects:
- kind: ServiceAccount
name: composition-controller-manager
namespace: composition-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: getter-expander-rolebinding
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: clusterrolebinding
app.kubernetes.io/part-of: composition
name: composition-getter-expander-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: composition-getter-expander
subjects:
- kind: ServiceAccount
name: composition-getter-expander
namespace: composition-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: manager-rolebinding
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: clusterrolebinding
app.kubernetes.io/part-of: composition
name: composition-manager-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: composition-manager-role
subjects:
- kind: ServiceAccount
name: composition-controller-manager
namespace: composition-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: kube-rbac-proxy
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: proxy-rolebinding
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: clusterrolebinding
app.kubernetes.io/part-of: composition
name: composition-proxy-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: composition-proxy-role
subjects:
- kind: ServiceAccount
name: composition-controller-manager
namespace: composition-system
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: kube-rbac-proxy
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: controller-manager-metrics-service
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: service
app.kubernetes.io/part-of: composition
control-plane: controller-manager
name: composition-controller-manager-metrics-service
namespace: composition-system
spec:
ports:
- name: https
port: 8443
protocol: TCP
targetPort: https
selector:
control-plane: controller-manager
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: expanders
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: getter-v0.0.1
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: service
app.kubernetes.io/part-of: composition
control-plane: expander-getter
name: composition-getter-v0-0-1
namespace: composition-system
spec:
ports:
- name: grpc
port: 8443
protocol: TCP
targetPort: 8443
selector:
control-plane: expander-getter-v0.0.1
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: expanders
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: jinja2-v0.0.1
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: service
app.kubernetes.io/part-of: composition
control-plane: expander-jinja2
name: composition-jinja2-v0-0-1
namespace: composition-system
spec:
ports:
- name: grpc
port: 8443
protocol: TCP
targetPort: 8443
selector:
control-plane: expander-jinja2-v0.0.1
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/component: composition-controller-manager
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: composition-controller-manager
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: composition-controller-manager
app.kubernetes.io/part-of: composition
control-plane: controller-manager
name: composition-controller-manager
namespace: composition-system
spec:
replicas: 1
selector:
matchLabels:
control-plane: controller-manager
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
labels:
control-plane: controller-manager
spec:
containers:
- args:
- --secure-listen-address=0.0.0.0:8443
- --upstream=http://127.0.0.1:8080/
- --logtostderr=true
- --v=0
image: gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
name: kube-rbac-proxy
ports:
- containerPort: 8443
name: https
protocol: TCP
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 5m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
- args:
- --health-probe-bind-address=:8081
- --metrics-bind-address=127.0.0.1:8080
- --leader-elect
command:
- /manager
image: gcr.io/krmapihosting-release/composition:0.0.406
imagePullPolicy: Always
livenessProbe:
httpGet:
path: /healthz
port: 8081
initialDelaySeconds: 15
periodSeconds: 20
name: manager
readinessProbe:
httpGet:
path: /readyz
port: 8081
initialDelaySeconds: 5
periodSeconds: 10
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 10m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
securityContext:
runAsNonRoot: true
serviceAccountName: composition-controller-manager
terminationGracePeriodSeconds: 10
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/component: expanders
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: getter-v0.0.1
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: deployment
app.kubernetes.io/part-of: composition
control-plane: expander-getter-v0.0.1
name: composition-getter-v0.0.1
namespace: composition-system
spec:
replicas: 1
selector:
matchLabels:
control-plane: expander-getter-v0.0.1
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: expander
labels:
control-plane: expander-getter-v0.0.1
spec:
containers:
- args:
- --port=8443
command:
- /expander
image: gcr.io/krmapihosting-release/expander-getter:v0.0.1
name: getter
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 10m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
serviceAccountName: composition-getter-expander
terminationGracePeriodSeconds: 10
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/component: expanders
app.kubernetes.io/created-by: composition
app.kubernetes.io/instance: jinja2-v0.0.1
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: deployment
app.kubernetes.io/part-of: composition
control-plane: expander-jinja2-v0.0.1
name: composition-jinja2-v0.0.1
namespace: composition-system
spec:
replicas: 1
selector:
matchLabels:
control-plane: expander-jinja2-v0.0.1
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: expander
labels:
control-plane: expander-jinja2-v0.0.1
spec:
containers:
- args:
- --port=8443
command:
- /expander
image: gcr.io/krmapihosting-release/expander-jinja2:v0.0.1
name: jinja2
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 10m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
terminationGracePeriodSeconds: 10
---
apiVersion: composition.google.com/v1alpha1
kind: ExpanderVersion
metadata:
name: composition-getter
namespace: composition-system
spec:
config:
group: composition.google.com
kind: GetterConfiguration
version: v1alpha1
type: grpc
validVersions:
- v0.0.1
---
apiVersion: composition.google.com/v1alpha1
kind: ExpanderVersion
metadata:
name: composition-jinja2
namespace: composition-system
spec:
type: grpc
validVersions:
- v0.0.1
- v0.0.0
---
apiVersion: composition.google.com/v1alpha1
kind: ExpanderVersion
metadata:
name: composition-jinja2-job
namespace: composition-system
spec:
image: expander-jinja2
imageRegistry: gcr.io/krmapihosting-release
type: job
validVersions:
- v0.0.115
- v0.0.114
- v0.0.113
- v0.0.112
- v0.0.111
- v0.0.110
- v0.0.1
- v0.0.0