diff --git a/.github/workflows/registry.yml b/.github/workflows/registry.yml
index 12f99d67d..39be91f6b 100644
--- a/.github/workflows/registry.yml
+++ b/.github/workflows/registry.yml
@@ -85,6 +85,7 @@ jobs:
env:
HELM_CHARTS_DIR: charts
HELM_CHART: charts/vela-core
+ MINIMAL_HELM_CHART: charts/vela-minimal
LEGACY_HELM_CHART: legacy/charts/vela-core-legacy
OAM_RUNTIME_HELM_CHART: charts/oam-runtime
VELA_ROLLOUT_HELM_CHART: runtime/rollout/charts
@@ -128,11 +129,13 @@ jobs:
chart_version=${current_repo_tag}-nightly-build
fi
sed -i "s/latest/${image_tag}/g" $HELM_CHART/values.yaml
+ sed -i "s/latest/${image_tag}/g" $MINIMAL_HELM_CHART/values.yaml
sed -i "s/latest/${image_tag}/g" $LEGACY_HELM_CHART/values.yaml
sed -i "s/latest/${image_tag}/g" $OAM_RUNTIME_HELM_CHART/values.yaml
sed -i "s/latest/${image_tag}/g" $VELA_ROLLOUT_HELM_CHART/values.yaml
chart_smever=${chart_version#"v"}
sed -i "s/0.1.0/$chart_smever/g" $HELM_CHART/Chart.yaml
+ sed -i "s/0.1.0/$chart_smever/g" $MINIMAL_HELM_CHART/Chart.yaml
sed -i "s/0.1.0/$chart_smever/g" $LEGACY_HELM_CHART/Chart.yaml
sed -i "s/0.1.0/$chart_smever/g" $OAM_RUNTIME_HELM_CHART/Chart.yaml
sed -i "s/0.1.0/$chart_smever/g" $VELA_ROLLOUT_HELM_CHART/Chart.yaml
@@ -153,6 +156,7 @@ jobs:
- name: Package helm charts
run: |
helm package $HELM_CHART --destination $LOCAL_OSS_DIRECTORY
+ helm package $MINIMAL_HELM_CHART --destination $LOCAL_OSS_DIRECTORY
helm package $LEGACY_HELM_CHART --destination $LOCAL_OSS_DIRECTORY
helm package $OAM_RUNTIME_HELM_CHART --destination $LOCAL_OSS_DIRECTORY
helm package $VELA_ROLLOUT_HELM_CHART --destination $LOCAL_OSS_DIRECTORY
diff --git a/charts/vela-minimal/.helmignore b/charts/vela-minimal/.helmignore
new file mode 100644
index 000000000..0e8a0eb36
--- /dev/null
+++ b/charts/vela-minimal/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/charts/vela-minimal/Chart.yaml b/charts/vela-minimal/Chart.yaml
new file mode 100644
index 000000000..3ae3d8736
--- /dev/null
+++ b/charts/vela-minimal/Chart.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+name: vela-minimal
+description: A Helm chart for KubeVela minimal
+
+# A chart can be either an 'application' or a 'library' chart.
+#
+# Application charts are a collection of templates that can be packaged into versioned archives
+# to be deployed.
+#
+# Library charts provide useful utilities or functions for the chart developer. They're included as
+# a dependency of application charts to inject those utilities and functions into the rendering
+# pipeline. Library charts do not define any templates and therefore cannot be deployed.
+type: application
+
+# This is the chart version. This version number should be incremented each time you make changes
+# to the chart and its templates, including the app version.
+version: 0.1.0
+
+# This is the version number of the application being deployed. This version number should be
+# incremented each time you make changes to the application.
+appVersion: 0.1.0
diff --git a/charts/vela-minimal/README.md b/charts/vela-minimal/README.md
new file mode 100644
index 000000000..257ee1082
--- /dev/null
+++ b/charts/vela-minimal/README.md
@@ -0,0 +1,79 @@
+
+[](https://goreportcard.com/report/github.com/oam-dev/kubevela)
+
+[](https://codecov.io/gh/oam-dev/kubevela)
+[](/LICENSE)
+[](https://github.com/oam-dev/kubevela/releases)
+[](https://www.tickgit.com/browse?repo=github.com/oam-dev/kubevela)
+[](https://twitter.com/oam_dev)
+[](https://artifacthub.io/packages/search?repo=kubevela)
+
+
+
+*Make shipping applications more enjoyable.*
+
+# KubeVela Minimal
+
+KubeVela is a modern application platform that makes deploying and managing applications across today's hybrid, multi-cloud environments easier and faster.
+
+KubeVela Minimal is the minimal version of KubeVela, it only contains the minimal components to run KubeVela and do not support features like multi clusters and env binding. For more complete experience, please install the [full version of KubeVela]((https://kubevela.io/docs/install)).
+
+KubeVela Minimal contains the following CRDs:
+
+CRD Name | Usage
+------------ | -------------
+applications.core.oam.dev | KubeVela Core Application Object
+applicationrevisions.core.oam.dev | The revision CRD of Application
+componentdefinitions.core.oam.dev | ComponentDefinition Object
+traitdefinitions.core.oam.dev | TraitDefinition Object
+workflowstepdefinitions.core.oam.dev | Workflowstep Object
+scopedefinitions.core.oam.dev | ScopeDefinition Object
+policydefinitions.core.oam.dev | PolicyDefinition Object
+ workloaddefinitions.core.oam.dev | WorkloadDefinition Object
+definitionrevisions.core.oam.dev | The revision CRD for all definition objects
+rollouts.standard.oam.dev | Rollout feature trait
+resourcetrackers.core.oam.dev | Garbage Collection feature
+healthscopes.core.oam.dev | Health Check feature
+
+## Features
+
+**Application Centric** - KubeVela introduces [Open Application Model (OAM)](https://oam.dev/) as the consistent yet higher level API to capture a full deployment of microservices on top of hybrid environments. Placement strategy, traffic shifting and rolling update are declared at application level. No infrastructure level concern, simply deploy.
+
+**Programmable Workflow** - KubeVela leverages [CUE](https://cuelang.org/) to implement its model layer. This allows you to declare application deployment workflow as a DAG, with all steps and application's needs glued together in programmable approach. No restrictions, natively extensible.
+
+**Runtime Agnostic** - KubeVela works as an application delivery control plane that is fully runtime agnostic. It can deploy and manage any application components including containers, cloud functions, databases, or even EC2 instances across hybrid environments, following the workflow you defined.
+
+## Getting Started
+
+- [Introduction](https://kubevela.io/docs)
+- [Installation](https://kubevela.io/docs/install)
+- [Design Your First Deployment Plan](https://kubevela.io/docs/quick-start)
+
+## Documentation
+
+Full documentation is available on the [KubeVela website](https://kubevela.io/).
+
+## Community
+
+- Slack: [CNCF Slack](https://slack.cncf.io/) #kubevela channel (*English*)
+- Gitter: [oam-dev](https://gitter.im/oam-dev/community) (*English*)
+- [DingTalk Group](https://page.dingtalk.com/wow/dingtalk/act/en-home): `23310022` (*Chinese*)
+- Bi-weekly Community Call: [Meeting Notes](https://docs.google.com/document/d/1nqdFEyULekyksFHtFvgvFAYE-0AMHKoS3RMnaKsarjs)
+
+## Talks and Conferences
+
+| Engagement | Link |
+|:-----------|:------------|
+| 🎤 Talks | - [KubeVela - The Modern App Delivery System in Alibaba](https://docs.google.com/presentation/d/1CWCLcsKpDQB3bBDTfdv2BZ8ilGGJv2E8L-iOA5HMrV0/edit?usp=sharing) |
+| 🌎 KubeCon | - [ [NA 2020] Standardizing Cloud Native Application Delivery Across Different Clouds](https://www.youtube.com/watch?v=0yhVuBIbHcI)
- [ [EU 2021] Zero Pain Microservice Development and Deployment with Dapr and KubeVela](https://sched.co/iE4S) |
+| 📺 Conferences | - [Dapr, Rudr, OAM: Mark Russinovich presents next gen app development & deployment](https://www.youtube.com/watch?v=eJCu6a-x9uo)
- [Mark Russinovich presents "The Future of Cloud Native Applications with OAM and Dapr"](https://myignite.techcommunity.microsoft.com/sessions/82059)|
+
+## Contributing
+Check out [CONTRIBUTING](./CONTRIBUTING.md) to see how to develop with KubeVela.
+
+## Report Vulnerability
+
+Security is a first priority thing for us at KubeVela. If you come across a related issue, please send email to security@mail.kubevela.io .
+
+## Code of Conduct
+KubeVela adopts [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).
diff --git a/charts/vela-minimal/crds/core.oam.dev_applicationrevisions.yaml b/charts/vela-minimal/crds/core.oam.dev_applicationrevisions.yaml
new file mode 100644
index 000000000..f1cda81fb
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_applicationrevisions.yaml
@@ -0,0 +1,4558 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: applicationrevisions.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: ApplicationRevision
+ listKind: ApplicationRevisionList
+ plural: applicationrevisions
+ shortNames:
+ - apprev
+ singular: applicationrevision
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.creationTimestamp
+ name: AGE
+ type: date
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: ApplicationRevision is the Schema for the ApplicationRevision
+ 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: ApplicationRevisionSpec is the spec of ApplicationRevision
+ properties:
+ application:
+ description: Application records the snapshot of the created/modified
+ Application
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: ApplicationSpec is the spec of Application
+ properties:
+ components:
+ items:
+ description: ApplicationComponent describe the component
+ of application
+ properties:
+ name:
+ type: string
+ scopes:
+ additionalProperties:
+ type: string
+ description: scopes in ApplicationComponent defines
+ the component-level scopes the format is
+ pairs, the key represents type of `ScopeDefinition`
+ while the value represent the name of scope instance.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ settings:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ traits:
+ description: Traits define the trait of one component,
+ the type must be array to keep the order.
+ items:
+ description: ApplicationTrait defines the trait of
+ application
+ properties:
+ name:
+ type: string
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - name
+ type: object
+ type: array
+ type:
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ rolloutPlan:
+ description: RolloutPlan is the details on how to rollout
+ the resources The controller simply replace the old resources
+ with the new one if there is no rollout plan involved
+ properties:
+ batchPartition:
+ description: All pods in the batches up to the batchPartition
+ (included) will have the target resource specification
+ while the rest still have the source resource This is
+ designed for the operators to manually rollout Default
+ is the the number of batches which will rollout all
+ the batches
+ format: int32
+ type: integer
+ canaryMetric:
+ description: CanaryMetric provides a way for the rollout
+ process to automatically check certain metrics before
+ complete the process
+ items:
+ description: CanaryMetric holds the reference to metrics
+ used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows size
+ type: string
+ metricsRange:
+ description: Range value accepted for this metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric template
+ object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an
+ object instead of an entire object, this string
+ should contain a valid JSON/Go field access
+ statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to
+ a container within a pod, this would take
+ on a value like: "spec.containers{name}" (where
+ "name" refers to the name of the container
+ that triggered the event) or if no container
+ name is specified "spec.containers[2]" (container
+ with index 2 in this pod). This syntax is
+ chosen only to have some well-defined way
+ of referencing a part of an object. TODO:
+ this design is not final and this field is
+ subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info:
+ https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which
+ this reference is made, if any. More info:
+ https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ numBatches:
+ description: The number of batches, default = 1
+ format: int32
+ type: integer
+ paused:
+ description: Paused the rollout, default is false
+ type: boolean
+ rolloutBatches:
+ description: The exact distribution among batches. its
+ size has to be exactly the same as the NumBatches (if
+ set) The total number cannot exceed the targetSize or
+ the size of the source resource We will IGNORE the last
+ batch's replica field if it's a percentage since round
+ errors can lead to inaccurate sum We highly recommend
+ to leave the last batch's replica field empty
+ items:
+ description: RolloutBatch is used to describe how the
+ each batch rollout should be
+ properties:
+ batchRolloutWebhooks:
+ description: RolloutWebhooks provides a way for
+ the batch rollout to interact with an external
+ process
+ items:
+ description: RolloutWebhook holds the reference
+ to external checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the
+ expected http status code that we will accept
+ as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for
+ this webhook
+ type: object
+ method:
+ description: Method the HTTP call method,
+ default is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ canaryMetric:
+ description: CanaryMetric provides a way for the
+ batch rollout process to automatically check certain
+ metrics before moving to the next batch
+ items:
+ description: CanaryMetric holds the reference
+ to metrics used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows
+ size
+ type: string
+ metricsRange:
+ description: Range value accepted for this
+ metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric
+ template object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece
+ of an object instead of an entire object,
+ this string should contain a valid JSON/Go
+ field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference
+ is to a container within a pod, this
+ would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of
+ the container that triggered the event)
+ or if no container name is specified
+ "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is
+ chosen only to have some well-defined
+ way of referencing a part of an object.
+ TODO: this design is not final and this
+ field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More
+ info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion
+ to which this reference is made, if
+ any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ instanceInterval:
+ description: The wait time, in seconds, between
+ instances upgrades, default = 0
+ format: int32
+ type: integer
+ maxUnavailable:
+ anyOf:
+ - type: integer
+ - type: string
+ description: MaxUnavailable is the max allowed number
+ of pods that is unavailable during the upgrade.
+ We will mark the batch as ready as long as there
+ are less or equal number of pods unavailable than
+ this number. default = 0
+ x-kubernetes-int-or-string: true
+ podList:
+ description: The list of Pods to get upgraded it
+ is mutually exclusive with the Replicas field
+ items:
+ type: string
+ type: array
+ replicas:
+ anyOf:
+ - type: integer
+ - type: string
+ description: 'Replicas is the number of pods to
+ upgrade in this batch it can be an absolute number
+ (ex: 5) or a percentage of total pods we will
+ ignore the percentage of the last batch to just
+ fill the gap it is mutually exclusive with the
+ PodList field'
+ x-kubernetes-int-or-string: true
+ type: object
+ type: array
+ rolloutStrategy:
+ description: RolloutStrategy defines strategies for the
+ rollout plan The default is IncreaseFirstRolloutStrategyType
+ type: string
+ rolloutWebhooks:
+ description: RolloutWebhooks provide a way for the rollout
+ to interact with an external process
+ items:
+ description: RolloutWebhook holds the reference to external
+ checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the expected
+ http status code that we will accept as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for this
+ webhook
+ type: object
+ method:
+ description: Method the HTTP call method, default
+ is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ targetSize:
+ description: The size of the target resource. The default
+ is the same as the size of the source resource.
+ format: int32
+ type: integer
+ type: object
+ required:
+ - components
+ type: object
+ status:
+ description: AppStatus defines the observed state of Application
+ properties:
+ appliedResources:
+ description: AppliedResources record the resources that the workflow
+ step apply.
+ items:
+ description: ClusterObjectReference defines the object reference
+ with cluster.
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ cluster:
+ type: string
+ creator:
+ description: ResourceCreatorRole defines the resource
+ creator.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a
+ valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only to
+ have some well-defined way of referencing a part of
+ an object. TODO: this design is not final and this
+ field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ components:
+ description: Components record the related Components created
+ by Application Controller
+ items:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object. ---
+ New uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored
+ fields. It includes many fields which are not generally
+ honored. For instance, ResourceVersion and FieldPath
+ are both very rarely valid in actual usage. 2. Invalid
+ usage help. It is impossible to add specific help for
+ individual usage. In most embedded usages, there are
+ particular restrictions like, "must refer only to
+ types A and B" or "UID not honored" or "name must be restricted". Those
+ cannot be well described when embedded. 3. Inconsistent
+ validation. Because the usages are different, the validation
+ rules are different by usage, which makes it hard for
+ users to predict what will happen. 4. The fields are
+ both imprecise and overly precise. Kind is not a precise
+ mapping to a URL. This can produce ambiguity during
+ interpretation and require a REST mapping. In most cases,
+ the dependency is on the group,resource tuple and
+ the version of the actual struct is irrelevant. 5. We
+ cannot easily change it. Because this type is embedded
+ in many locations, updates to this type will affect
+ numerous schemas. Don''t make new APIs embed an underspecified
+ API type they do not control. Instead of using this type,
+ create a locally provided and used type that is well-focused
+ on your reference. For example, ServiceReferences for
+ admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a
+ valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only to
+ have some well-defined way of referencing a part of
+ an object. TODO: this design is not final and this
+ field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ 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
+ latestRevision:
+ description: LatestRevision of the application configuration
+ it generates
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ observedGeneration:
+ description: The generation observed by the application controller.
+ format: int64
+ type: integer
+ resourceTracker:
+ description: ResourceTracker record the status of the ResourceTracker
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a valid
+ JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that
+ triggered the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2 in this
+ pod). This syntax is chosen only to have some well-defined
+ way of referencing a part of an object. TODO: this design
+ is not final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ rollout:
+ description: AppRolloutStatus defines the observed state of
+ AppRollout
+ properties:
+ LastSourceAppRevision:
+ description: LastSourceAppRevision contains the name of
+ the app that we need to upgrade from. We will restart
+ the rollout if this is not the same as the spec
+ type: string
+ batchRollingState:
+ description: BatchRollingState only meaningful when the
+ Status is rolling
+ type: string
+ 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
+ currentBatch:
+ description: The current batch the rollout is working
+ on/blocked it starts from 0
+ format: int32
+ type: integer
+ lastAppliedPodTemplateIdentifier:
+ description: lastAppliedPodTemplateIdentifier is a string
+ that uniquely represent the last pod template each workload
+ type could use different ways to identify that so we
+ cannot compare between resources We update this field
+ only after a successful rollout
+ type: string
+ lastTargetAppRevision:
+ description: LastUpgradedTargetAppRevision contains the
+ name of the app that we upgraded to We will restart
+ the rollout if this is not the same as the spec
+ type: string
+ rollingState:
+ description: RollingState is the Rollout State
+ type: string
+ rolloutOriginalSize:
+ description: RolloutTargetSize is the size of the target
+ resources. This is determined once the initial spec
+ verification and does not change until the rollout is
+ restarted
+ format: int32
+ type: integer
+ rolloutTargetSize:
+ description: RolloutTargetSize is the size of the target
+ resources. This is determined once the initial spec
+ verification and does not change until the rollout is
+ restarted
+ format: int32
+ type: integer
+ targetGeneration:
+ description: NewPodTemplateIdentifier is a string that
+ uniquely represent the new pod template each workload
+ type could use different ways to identify that so we
+ cannot compare between resources
+ type: string
+ upgradedReadyReplicas:
+ description: UpgradedReadyReplicas is the number of Pods
+ upgraded by the rollout controller that have a Ready
+ Condition.
+ format: int32
+ type: integer
+ upgradedReplicas:
+ description: UpgradedReplicas is the number of Pods upgraded
+ by the rollout controller
+ format: int32
+ type: integer
+ required:
+ - currentBatch
+ - lastTargetAppRevision
+ - rollingState
+ - upgradedReadyReplicas
+ - upgradedReplicas
+ type: object
+ services:
+ description: Services record the status of the application
+ services
+ items:
+ description: ApplicationComponentStatus record the health
+ status of App component
+ properties:
+ env:
+ type: string
+ healthy:
+ type: boolean
+ message:
+ type: string
+ name:
+ type: string
+ scopes:
+ items:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object.
+ --- New uses of this type are discouraged because
+ of difficulty describing its usage when embedded
+ in APIs. 1. Ignored fields. It includes many fields
+ which are not generally honored. For instance,
+ ResourceVersion and FieldPath are both very rarely
+ valid in actual usage. 2. Invalid usage help. It
+ is impossible to add specific help for individual
+ usage. In most embedded usages, there are particular restrictions
+ like, "must refer only to types A and B" or "UID
+ not honored" or "name must be restricted". Those
+ cannot be well described when embedded. 3. Inconsistent
+ validation. Because the usages are different, the
+ validation rules are different by usage, which makes
+ it hard for users to predict what will happen. 4.
+ The fields are both imprecise and overly precise. Kind
+ is not a precise mapping to a URL. This can produce
+ ambiguity during interpretation and require
+ a REST mapping. In most cases, the dependency is
+ on the group,resource tuple and the version
+ of the actual struct is irrelevant. 5. We cannot
+ easily change it. Because this type is embedded
+ in many locations, updates to this type will
+ affect numerous schemas. Don''t make new APIs embed
+ an underspecified API type they do not control.
+ Instead of using this type, create a locally provided
+ and used type that is well-focused on your reference.
+ For example, ServiceReferences for admission registration:
+ https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object
+ instead of an entire object, this string should
+ contain a valid JSON/Go field access statement,
+ such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a
+ container within a pod, this would take on a
+ value like: "spec.containers{name}" (where "name"
+ refers to the name of the container that triggered
+ the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2
+ in this pod). This syntax is chosen only to
+ have some well-defined way of referencing a
+ part of an object. TODO: this design is not
+ final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info:
+ https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which
+ this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ traits:
+ items:
+ description: ApplicationTraitStatus records the trait
+ health status
+ properties:
+ healthy:
+ type: boolean
+ message:
+ type: string
+ type:
+ type: string
+ required:
+ - healthy
+ - type
+ type: object
+ type: array
+ workloadDefinition:
+ description: WorkloadDefinition is the definition of
+ a WorkloadDefinition, such as deployments/apps.v1
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ required:
+ - healthy
+ - name
+ type: object
+ type: array
+ status:
+ description: ApplicationPhase is a label for the condition
+ of a application at the current time
+ type: string
+ workflow:
+ description: Workflow record the status of workflow
+ properties:
+ appRevision:
+ type: string
+ contextBackend:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object. ---
+ New uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored
+ fields. It includes many fields which are not generally
+ honored. For instance, ResourceVersion and FieldPath
+ are both very rarely valid in actual usage. 2. Invalid
+ usage help. It is impossible to add specific help for
+ individual usage. In most embedded usages, there are
+ particular restrictions like, "must refer only to
+ types A and B" or "UID not honored" or "name must be
+ restricted". Those cannot be well described when
+ embedded. 3. Inconsistent validation. Because the
+ usages are different, the validation rules are different
+ by usage, which makes it hard for users to predict what
+ will happen. 4. The fields are both imprecise and overly
+ precise. Kind is not a precise mapping to a URL. This
+ can produce ambiguity during interpretation and
+ require a REST mapping. In most cases, the dependency
+ is on the group,resource tuple and the version of
+ the actual struct is irrelevant. 5. We cannot easily
+ change it. Because this type is embedded in many locations,
+ updates to this type will affect numerous schemas. Don''t
+ make new APIs embed an underspecified API type they
+ do not control. Instead of using this type, create a
+ locally provided and used type that is well-focused
+ on your reference. For example, ServiceReferences for
+ admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object
+ instead of an entire object, this string should
+ contain a valid JSON/Go field access statement,
+ such as desiredState.manifest.containers[2]. For
+ example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only
+ to have some well-defined way of referencing a part
+ of an object. TODO: this design is not final and
+ this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ mode:
+ description: WorkflowMode describes the mode of workflow
+ type: string
+ steps:
+ items:
+ description: WorkflowStepStatus record the status of
+ a workflow step
+ properties:
+ id:
+ type: string
+ message:
+ description: A human readable message indicating
+ details about why the workflowStep is in this
+ state.
+ type: string
+ name:
+ type: string
+ phase:
+ description: WorkflowStepPhase describes the phase
+ of a workflow step.
+ type: string
+ reason:
+ description: A brief CamelCase message indicating
+ details about why the workflowStep is in this
+ state.
+ type: string
+ subSteps:
+ description: SubStepsStatus record the status of
+ workflow steps.
+ properties:
+ mode:
+ description: WorkflowMode describes the mode
+ of workflow
+ type: string
+ stepIndex:
+ type: integer
+ steps:
+ items:
+ description: WorkflowSubStepStatus record
+ the status of a workflow step
+ properties:
+ id:
+ type: string
+ message:
+ description: A human readable message
+ indicating details about why the workflowStep
+ is in this state.
+ type: string
+ name:
+ type: string
+ phase:
+ description: WorkflowStepPhase describes
+ the phase of a workflow step.
+ type: string
+ reason:
+ description: A brief CamelCase message
+ indicating details about why the workflowStep
+ is in this state.
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ type: object
+ type:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ suspend:
+ type: boolean
+ terminated:
+ type: boolean
+ required:
+ - mode
+ - suspend
+ - terminated
+ type: object
+ type: object
+ type: object
+ applicationConfiguration:
+ description: ApplicationConfiguration records the rendered applicationConfiguration
+ from Application, it will contains the whole K8s CR of trait and
+ the reference component in it.
+ type: object
+ x-kubernetes-embedded-resource: true
+ x-kubernetes-preserve-unknown-fields: true
+ componentDefinitions:
+ additionalProperties:
+ description: ComponentDefinition is the Schema for the componentdefinitions
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: ComponentDefinitionSpec defines the desired state
+ of ComponentDefinition
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the
+ child resources this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes
+ resource kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources
+ that the workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload
+ has K8s podSpec field if one workload has podSpec, trait
+ can do lot's of assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying
+ resources(e.g. pods) of this workload can be used by trait
+ to create resource selectors(e.g. label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a
+ required field if CUE is defined in Capability
+ Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used
+ by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will
+ be overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or
+ not a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type
+ of the parameter value, and only supports
+ basic data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes
+ resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and
+ status message for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status
+ message that could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy
+ for the abstraction
+ type: string
+ type: object
+ workload:
+ description: Workload is a workload type descriptor
+ properties:
+ definition:
+ description: Definition mutually exclusive to workload.type,
+ a embedded WorkloadDefinition
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type:
+ description: Type ref to a WorkloadDefinition via name
+ type: string
+ type: object
+ required:
+ - workload
+ type: object
+ status:
+ description: ComponentDefinitionStatus is the status of ComponentDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains
+ OpenAPI V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ description: ComponentDefinitions records the snapshot of the componentDefinitions
+ related with the created/modified Application
+ type: object
+ components:
+ items:
+ description: RawComponent record raw component
+ properties:
+ raw:
+ type: object
+ x-kubernetes-embedded-resource: true
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - raw
+ type: object
+ type: array
+ scopeDefinitions:
+ additionalProperties:
+ description: A ScopeDefinition registers a kind of Kubernetes custom
+ resource as a valid OAM scope kind by referencing its CustomResourceDefinition.
+ The CRD is used to validate the schema of the scope when it is
+ embedded in an OAM ApplicationConfiguration.
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: A ScopeDefinitionSpec defines the desired state
+ of a ScopeDefinition.
+ properties:
+ allowComponentOverlap:
+ description: AllowComponentOverlap specifies whether an
+ OAM component may exist in multiple instances of this
+ kind of scope.
+ type: boolean
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this scope kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ workloadRefsPath:
+ description: WorkloadRefsPath indicates if/where a scope
+ accepts workloadRef objects
+ type: string
+ required:
+ - allowComponentOverlap
+ - definitionRef
+ type: object
+ type: object
+ description: ScopeDefinitions records the snapshot of the scopeDefinitions
+ related with the created/modified Application
+ type: object
+ traitDefinitions:
+ additionalProperties:
+ description: A TraitDefinition registers a kind of Kubernetes custom
+ resource as a valid OAM trait kind by referencing its CustomResourceDefinition.
+ The CRD is used to validate the schema of the trait when it is
+ embedded in an OAM ApplicationConfiguration.
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: A TraitDefinitionSpec defines the desired state
+ of a TraitDefinition.
+ properties:
+ appliesToWorkloads:
+ description: AppliesToWorkloads specifies the list of workload
+ kinds this trait applies to. Workload kinds are specified
+ in kind.group/version format, e.g. server.core.oam.dev/v1alpha2.
+ Traits that omit this field apply to all workload kinds.
+ items:
+ type: string
+ type: array
+ conflictsWith:
+ description: 'ConflictsWith specifies the list of traits(CRD
+ name, Definition name, CRD group) which could not apply
+ to the same workloads with this trait. Traits that omit
+ this field can work with any other traits. Example rules:
+ "service" # Trait definition name "services.k8s.io" #
+ API resource/crd name "*.networking.k8s.io" # API group
+ "labelSelector:foo=bar" # label selector labelSelector
+ format: https://pkg.go.dev/k8s.io/apimachinery/pkg/labels#Parse'
+ items:
+ type: string
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podDisruptive:
+ description: PodDisruptive specifies whether using the trait
+ will cause the pod to restart or not.
+ type: boolean
+ revisionEnabled:
+ description: Revision indicates whether a trait is aware
+ of component revision
+ type: boolean
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the trait
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a
+ required field if CUE is defined in Capability
+ Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used
+ by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will
+ be overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or
+ not a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type
+ of the parameter value, and only supports
+ basic data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes
+ resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and
+ status message for trait
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status
+ message that could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy
+ for the abstraction
+ type: string
+ type: object
+ workloadRefPath:
+ description: WorkloadRefPath indicates where/if a trait
+ accepts a workloadRef object
+ type: string
+ type: object
+ status:
+ description: TraitDefinitionStatus is the status of TraitDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains
+ OpenAPI V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the trait definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ description: TraitDefinitions records the snapshot of the traitDefinitions
+ related with the created/modified Application
+ type: object
+ workloadDefinitions:
+ additionalProperties:
+ description: A WorkloadDefinition registers a kind of Kubernetes
+ custom resource as a valid OAM workload kind by referencing its
+ CustomResourceDefinition. The CRD is used to validate the schema
+ of the workload when it is embedded in an OAM Component.
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: A WorkloadDefinitionSpec defines the desired state
+ of a WorkloadDefinition.
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the
+ child resources this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes
+ resource kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources
+ that the workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this workload kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload
+ has K8s podSpec field if one workload has podSpec, trait
+ can do lot's of assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying
+ resources(e.g. pods) of this workload can be used by trait
+ to create resource selectors(e.g. label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a
+ required field if CUE is defined in Capability
+ Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used
+ by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will
+ be overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or
+ not a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type
+ of the parameter value, and only supports
+ basic data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes
+ resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and
+ status message for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status
+ message that could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy
+ for the abstraction
+ type: string
+ type: object
+ required:
+ - definitionRef
+ type: object
+ status:
+ description: WorkloadDefinitionStatus is the status of WorkloadDefinition
+ 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
+ type: object
+ type: object
+ description: WorkloadDefinitions records the snapshot of the workloadDefinitions
+ related with the created/modified Application
+ type: object
+ required:
+ - application
+ - applicationConfiguration
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources: {}
+ - additionalPrinterColumns:
+ - jsonPath: .metadata.creationTimestamp
+ name: AGE
+ type: date
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: ApplicationRevision is the Schema for the ApplicationRevision
+ 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: ApplicationRevisionSpec is the spec of ApplicationRevision
+ properties:
+ application:
+ description: Application records the snapshot of the created/modified
+ Application
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: ApplicationSpec is the spec of Application
+ properties:
+ components:
+ items:
+ description: ApplicationComponent describe the component
+ of application
+ properties:
+ externalRevision:
+ description: ExternalRevision specified the component
+ revisionName
+ type: string
+ inputs:
+ description: StepInputs defines variable input of WorkflowStep
+ items:
+ properties:
+ from:
+ type: string
+ parameterKey:
+ type: string
+ required:
+ - from
+ - parameterKey
+ type: object
+ type: array
+ name:
+ type: string
+ outputs:
+ description: StepOutputs defines output variable of
+ WorkflowStep
+ items:
+ properties:
+ name:
+ type: string
+ valueFrom:
+ type: string
+ required:
+ - name
+ - valueFrom
+ type: object
+ type: array
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ scopes:
+ additionalProperties:
+ type: string
+ description: scopes in ApplicationComponent defines
+ the component-level scopes the format is
+ pairs, the key represents type of `ScopeDefinition`
+ while the value represent the name of scope instance.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ traits:
+ description: Traits define the trait of one component,
+ the type must be array to keep the order.
+ items:
+ description: ApplicationTrait defines the trait of
+ application
+ properties:
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ type:
+ type: string
+ required:
+ - type
+ type: object
+ type: array
+ type:
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ policies:
+ description: Policies defines the global policies for all
+ components in the app, e.g. security, metrics, gitops, multi-cluster
+ placement rules, etc. Policies are applied after components
+ are rendered and before workflow steps are executed.
+ items:
+ description: AppPolicy defines a global policy for all components
+ in the app.
+ properties:
+ name:
+ description: Name is the unique name of the policy.
+ type: string
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ type:
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ rolloutPlan:
+ description: RolloutPlan is the details on how to rollout
+ the resources The controller simply replace the old resources
+ with the new one if there is no rollout plan involved
+ properties:
+ batchPartition:
+ description: All pods in the batches up to the batchPartition
+ (included) will have the target resource specification
+ while the rest still have the source resource This is
+ designed for the operators to manually rollout Default
+ is the the number of batches which will rollout all
+ the batches
+ format: int32
+ type: integer
+ canaryMetric:
+ description: CanaryMetric provides a way for the rollout
+ process to automatically check certain metrics before
+ complete the process
+ items:
+ description: CanaryMetric holds the reference to metrics
+ used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows size
+ type: string
+ metricsRange:
+ description: Range value accepted for this metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric template
+ object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an
+ object instead of an entire object, this string
+ should contain a valid JSON/Go field access
+ statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to
+ a container within a pod, this would take
+ on a value like: "spec.containers{name}" (where
+ "name" refers to the name of the container
+ that triggered the event) or if no container
+ name is specified "spec.containers[2]" (container
+ with index 2 in this pod). This syntax is
+ chosen only to have some well-defined way
+ of referencing a part of an object. TODO:
+ this design is not final and this field is
+ subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info:
+ https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which
+ this reference is made, if any. More info:
+ https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ numBatches:
+ description: The number of batches, default = 1
+ format: int32
+ type: integer
+ paused:
+ description: Paused the rollout, default is false
+ type: boolean
+ rolloutBatches:
+ description: The exact distribution among batches. its
+ size has to be exactly the same as the NumBatches (if
+ set) The total number cannot exceed the targetSize or
+ the size of the source resource We will IGNORE the last
+ batch's replica field if it's a percentage since round
+ errors can lead to inaccurate sum We highly recommend
+ to leave the last batch's replica field empty
+ items:
+ description: RolloutBatch is used to describe how the
+ each batch rollout should be
+ properties:
+ batchRolloutWebhooks:
+ description: RolloutWebhooks provides a way for
+ the batch rollout to interact with an external
+ process
+ items:
+ description: RolloutWebhook holds the reference
+ to external checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the
+ expected http status code that we will accept
+ as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for
+ this webhook
+ type: object
+ method:
+ description: Method the HTTP call method,
+ default is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ canaryMetric:
+ description: CanaryMetric provides a way for the
+ batch rollout process to automatically check certain
+ metrics before moving to the next batch
+ items:
+ description: CanaryMetric holds the reference
+ to metrics used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows
+ size
+ type: string
+ metricsRange:
+ description: Range value accepted for this
+ metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric
+ template object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece
+ of an object instead of an entire object,
+ this string should contain a valid JSON/Go
+ field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference
+ is to a container within a pod, this
+ would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of
+ the container that triggered the event)
+ or if no container name is specified
+ "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is
+ chosen only to have some well-defined
+ way of referencing a part of an object.
+ TODO: this design is not final and this
+ field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More
+ info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion
+ to which this reference is made, if
+ any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ instanceInterval:
+ description: The wait time, in seconds, between
+ instances upgrades, default = 0
+ format: int32
+ type: integer
+ maxUnavailable:
+ anyOf:
+ - type: integer
+ - type: string
+ description: MaxUnavailable is the max allowed number
+ of pods that is unavailable during the upgrade.
+ We will mark the batch as ready as long as there
+ are less or equal number of pods unavailable than
+ this number. default = 0
+ x-kubernetes-int-or-string: true
+ podList:
+ description: The list of Pods to get upgraded it
+ is mutually exclusive with the Replicas field
+ items:
+ type: string
+ type: array
+ replicas:
+ anyOf:
+ - type: integer
+ - type: string
+ description: 'Replicas is the number of pods to
+ upgrade in this batch it can be an absolute number
+ (ex: 5) or a percentage of total pods we will
+ ignore the percentage of the last batch to just
+ fill the gap it is mutually exclusive with the
+ PodList field'
+ x-kubernetes-int-or-string: true
+ type: object
+ type: array
+ rolloutStrategy:
+ description: RolloutStrategy defines strategies for the
+ rollout plan The default is IncreaseFirstRolloutStrategyType
+ type: string
+ rolloutWebhooks:
+ description: RolloutWebhooks provide a way for the rollout
+ to interact with an external process
+ items:
+ description: RolloutWebhook holds the reference to external
+ checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the expected
+ http status code that we will accept as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for this
+ webhook
+ type: object
+ method:
+ description: Method the HTTP call method, default
+ is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ targetSize:
+ description: The size of the target resource. The default
+ is the same as the size of the source resource.
+ format: int32
+ type: integer
+ type: object
+ workflow:
+ description: 'Workflow defines how to customize the control
+ logic. If workflow is specified, Vela won''t apply any resource,
+ but provide rendered output in AppRevision. Workflow steps
+ are executed in array order, and each step: - will have
+ a context in annotation. - should mark "finish" phase in
+ status.conditions.'
+ properties:
+ steps:
+ items:
+ description: WorkflowStep defines how to execute a workflow
+ step.
+ properties:
+ inputs:
+ description: StepInputs defines variable input of
+ WorkflowStep
+ items:
+ properties:
+ from:
+ type: string
+ parameterKey:
+ type: string
+ required:
+ - from
+ - parameterKey
+ type: object
+ type: array
+ name:
+ description: Name is the unique name of the workflow
+ step.
+ type: string
+ outputs:
+ description: StepOutputs defines output variable
+ of WorkflowStep
+ items:
+ properties:
+ name:
+ type: string
+ valueFrom:
+ type: string
+ required:
+ - name
+ - valueFrom
+ type: object
+ type: array
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ type:
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ type: object
+ required:
+ - components
+ type: object
+ status:
+ description: AppStatus defines the observed state of Application
+ properties:
+ appliedResources:
+ description: AppliedResources record the resources that the workflow
+ step apply.
+ items:
+ description: ClusterObjectReference defines the object reference
+ with cluster.
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ cluster:
+ type: string
+ creator:
+ description: ResourceCreatorRole defines the resource
+ creator.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a
+ valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only to
+ have some well-defined way of referencing a part of
+ an object. TODO: this design is not final and this
+ field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ components:
+ description: Components record the related Components created
+ by Application Controller
+ items:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object. ---
+ New uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored
+ fields. It includes many fields which are not generally
+ honored. For instance, ResourceVersion and FieldPath
+ are both very rarely valid in actual usage. 2. Invalid
+ usage help. It is impossible to add specific help for
+ individual usage. In most embedded usages, there are
+ particular restrictions like, "must refer only to
+ types A and B" or "UID not honored" or "name must be restricted". Those
+ cannot be well described when embedded. 3. Inconsistent
+ validation. Because the usages are different, the validation
+ rules are different by usage, which makes it hard for
+ users to predict what will happen. 4. The fields are
+ both imprecise and overly precise. Kind is not a precise
+ mapping to a URL. This can produce ambiguity during
+ interpretation and require a REST mapping. In most cases,
+ the dependency is on the group,resource tuple and
+ the version of the actual struct is irrelevant. 5. We
+ cannot easily change it. Because this type is embedded
+ in many locations, updates to this type will affect
+ numerous schemas. Don''t make new APIs embed an underspecified
+ API type they do not control. Instead of using this type,
+ create a locally provided and used type that is well-focused
+ on your reference. For example, ServiceReferences for
+ admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a
+ valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only to
+ have some well-defined way of referencing a part of
+ an object. TODO: this design is not final and this
+ field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ 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
+ latestRevision:
+ description: LatestRevision of the application configuration
+ it generates
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ observedGeneration:
+ description: The generation observed by the application controller.
+ format: int64
+ type: integer
+ resourceTracker:
+ description: ResourceTracker record the status of the ResourceTracker
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a valid
+ JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that
+ triggered the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2 in this
+ pod). This syntax is chosen only to have some well-defined
+ way of referencing a part of an object. TODO: this design
+ is not final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ rollout:
+ description: AppRolloutStatus defines the observed state of
+ AppRollout
+ properties:
+ LastSourceAppRevision:
+ description: LastSourceAppRevision contains the name of
+ the app that we need to upgrade from. We will restart
+ the rollout if this is not the same as the spec
+ type: string
+ batchRollingState:
+ description: BatchRollingState only meaningful when the
+ Status is rolling
+ type: string
+ 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
+ currentBatch:
+ description: The current batch the rollout is working
+ on/blocked it starts from 0
+ format: int32
+ type: integer
+ lastAppliedPodTemplateIdentifier:
+ description: lastAppliedPodTemplateIdentifier is a string
+ that uniquely represent the last pod template each workload
+ type could use different ways to identify that so we
+ cannot compare between resources We update this field
+ only after a successful rollout
+ type: string
+ lastTargetAppRevision:
+ description: LastUpgradedTargetAppRevision contains the
+ name of the app that we upgraded to We will restart
+ the rollout if this is not the same as the spec
+ type: string
+ rollingState:
+ description: RollingState is the Rollout State
+ type: string
+ rolloutOriginalSize:
+ description: RolloutTargetSize is the size of the target
+ resources. This is determined once the initial spec
+ verification and does not change until the rollout is
+ restarted
+ format: int32
+ type: integer
+ rolloutTargetSize:
+ description: RolloutTargetSize is the size of the target
+ resources. This is determined once the initial spec
+ verification and does not change until the rollout is
+ restarted
+ format: int32
+ type: integer
+ targetGeneration:
+ description: NewPodTemplateIdentifier is a string that
+ uniquely represent the new pod template each workload
+ type could use different ways to identify that so we
+ cannot compare between resources
+ type: string
+ upgradedReadyReplicas:
+ description: UpgradedReadyReplicas is the number of Pods
+ upgraded by the rollout controller that have a Ready
+ Condition.
+ format: int32
+ type: integer
+ upgradedReplicas:
+ description: UpgradedReplicas is the number of Pods upgraded
+ by the rollout controller
+ format: int32
+ type: integer
+ required:
+ - currentBatch
+ - lastTargetAppRevision
+ - rollingState
+ - upgradedReadyReplicas
+ - upgradedReplicas
+ type: object
+ services:
+ description: Services record the status of the application
+ services
+ items:
+ description: ApplicationComponentStatus record the health
+ status of App component
+ properties:
+ env:
+ type: string
+ healthy:
+ type: boolean
+ message:
+ type: string
+ name:
+ type: string
+ scopes:
+ items:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object.
+ --- New uses of this type are discouraged because
+ of difficulty describing its usage when embedded
+ in APIs. 1. Ignored fields. It includes many fields
+ which are not generally honored. For instance,
+ ResourceVersion and FieldPath are both very rarely
+ valid in actual usage. 2. Invalid usage help. It
+ is impossible to add specific help for individual
+ usage. In most embedded usages, there are particular restrictions
+ like, "must refer only to types A and B" or "UID
+ not honored" or "name must be restricted". Those
+ cannot be well described when embedded. 3. Inconsistent
+ validation. Because the usages are different, the
+ validation rules are different by usage, which makes
+ it hard for users to predict what will happen. 4.
+ The fields are both imprecise and overly precise. Kind
+ is not a precise mapping to a URL. This can produce
+ ambiguity during interpretation and require
+ a REST mapping. In most cases, the dependency is
+ on the group,resource tuple and the version
+ of the actual struct is irrelevant. 5. We cannot
+ easily change it. Because this type is embedded
+ in many locations, updates to this type will
+ affect numerous schemas. Don''t make new APIs embed
+ an underspecified API type they do not control.
+ Instead of using this type, create a locally provided
+ and used type that is well-focused on your reference.
+ For example, ServiceReferences for admission registration:
+ https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object
+ instead of an entire object, this string should
+ contain a valid JSON/Go field access statement,
+ such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a
+ container within a pod, this would take on a
+ value like: "spec.containers{name}" (where "name"
+ refers to the name of the container that triggered
+ the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2
+ in this pod). This syntax is chosen only to
+ have some well-defined way of referencing a
+ part of an object. TODO: this design is not
+ final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info:
+ https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which
+ this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ traits:
+ items:
+ description: ApplicationTraitStatus records the trait
+ health status
+ properties:
+ healthy:
+ type: boolean
+ message:
+ type: string
+ type:
+ type: string
+ required:
+ - healthy
+ - type
+ type: object
+ type: array
+ workloadDefinition:
+ description: WorkloadDefinition is the definition of
+ a WorkloadDefinition, such as deployments/apps.v1
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ required:
+ - healthy
+ - name
+ type: object
+ type: array
+ status:
+ description: ApplicationPhase is a label for the condition
+ of a application at the current time
+ type: string
+ workflow:
+ description: Workflow record the status of workflow
+ properties:
+ appRevision:
+ type: string
+ contextBackend:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object. ---
+ New uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored
+ fields. It includes many fields which are not generally
+ honored. For instance, ResourceVersion and FieldPath
+ are both very rarely valid in actual usage. 2. Invalid
+ usage help. It is impossible to add specific help for
+ individual usage. In most embedded usages, there are
+ particular restrictions like, "must refer only to
+ types A and B" or "UID not honored" or "name must be
+ restricted". Those cannot be well described when
+ embedded. 3. Inconsistent validation. Because the
+ usages are different, the validation rules are different
+ by usage, which makes it hard for users to predict what
+ will happen. 4. The fields are both imprecise and overly
+ precise. Kind is not a precise mapping to a URL. This
+ can produce ambiguity during interpretation and
+ require a REST mapping. In most cases, the dependency
+ is on the group,resource tuple and the version of
+ the actual struct is irrelevant. 5. We cannot easily
+ change it. Because this type is embedded in many locations,
+ updates to this type will affect numerous schemas. Don''t
+ make new APIs embed an underspecified API type they
+ do not control. Instead of using this type, create a
+ locally provided and used type that is well-focused
+ on your reference. For example, ServiceReferences for
+ admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object
+ instead of an entire object, this string should
+ contain a valid JSON/Go field access statement,
+ such as desiredState.manifest.containers[2]. For
+ example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only
+ to have some well-defined way of referencing a part
+ of an object. TODO: this design is not final and
+ this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ mode:
+ description: WorkflowMode describes the mode of workflow
+ type: string
+ steps:
+ items:
+ description: WorkflowStepStatus record the status of
+ a workflow step
+ properties:
+ id:
+ type: string
+ message:
+ description: A human readable message indicating
+ details about why the workflowStep is in this
+ state.
+ type: string
+ name:
+ type: string
+ phase:
+ description: WorkflowStepPhase describes the phase
+ of a workflow step.
+ type: string
+ reason:
+ description: A brief CamelCase message indicating
+ details about why the workflowStep is in this
+ state.
+ type: string
+ subSteps:
+ description: SubStepsStatus record the status of
+ workflow steps.
+ properties:
+ mode:
+ description: WorkflowMode describes the mode
+ of workflow
+ type: string
+ stepIndex:
+ type: integer
+ steps:
+ items:
+ description: WorkflowSubStepStatus record
+ the status of a workflow step
+ properties:
+ id:
+ type: string
+ message:
+ description: A human readable message
+ indicating details about why the workflowStep
+ is in this state.
+ type: string
+ name:
+ type: string
+ phase:
+ description: WorkflowStepPhase describes
+ the phase of a workflow step.
+ type: string
+ reason:
+ description: A brief CamelCase message
+ indicating details about why the workflowStep
+ is in this state.
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ type: object
+ type:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ suspend:
+ type: boolean
+ terminated:
+ type: boolean
+ required:
+ - mode
+ - suspend
+ - terminated
+ type: object
+ type: object
+ type: object
+ applicationConfiguration:
+ description: ApplicationConfiguration records the rendered applicationConfiguration
+ from Application, it will contains the whole K8s CR of trait and
+ the reference component in it.
+ type: object
+ x-kubernetes-embedded-resource: true
+ x-kubernetes-preserve-unknown-fields: true
+ componentDefinitions:
+ additionalProperties:
+ description: ComponentDefinition is the Schema for the componentdefinitions
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: ComponentDefinitionSpec defines the desired state
+ of ComponentDefinition
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the
+ child resources this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes
+ resource kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources
+ that the workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload
+ has K8s podSpec field if one workload has podSpec, trait
+ can do lot's of assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying
+ resources(e.g. pods) of this workload can be used by trait
+ to create resource selectors(e.g. label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a
+ required field if CUE is defined in Capability
+ Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used
+ by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will
+ be overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or
+ not a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type
+ of the parameter value, and only supports
+ basic data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes
+ resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and
+ status message for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status
+ message that could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy
+ for the abstraction
+ type: string
+ type: object
+ workload:
+ description: Workload is a workload type descriptor
+ properties:
+ definition:
+ description: Definition mutually exclusive to workload.type,
+ a embedded WorkloadDefinition
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type:
+ description: Type ref to a WorkloadDefinition via name
+ type: string
+ type: object
+ required:
+ - workload
+ type: object
+ status:
+ description: ComponentDefinitionStatus is the status of ComponentDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains
+ OpenAPI V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ description: ComponentDefinitions records the snapshot of the componentDefinitions
+ related with the created/modified Application
+ type: object
+ components:
+ description: Components records the rendered components from Application,
+ it will contains the whole K8s CR of workload in it.
+ items:
+ description: RawComponent record raw component
+ properties:
+ raw:
+ type: object
+ x-kubernetes-embedded-resource: true
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - raw
+ type: object
+ type: array
+ policyDefinitions:
+ additionalProperties:
+ description: PolicyDefinition is the Schema for the policydefinitions
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: PolicyDefinitionSpec defines the desired state
+ of PolicyDefinition
+ properties:
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ manageHealthCheck:
+ description: ManageHealthCheck means the policy will handle
+ health checking and skip application controller built-in
+ health checking.
+ type: boolean
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the policy definition
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a
+ required field if CUE is defined in Capability
+ Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used
+ by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will
+ be overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or
+ not a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type
+ of the parameter value, and only supports
+ basic data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes
+ resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ type: object
+ status:
+ description: PolicyDefinitionStatus is the status of PolicyDefinition
+ 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
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ description: PolicyDefinitions records the snapshot of the PolicyDefinitions
+ related with the created/modified Application
+ type: object
+ resourcesConfigMap:
+ description: ResourcesConfigMap references the ConfigMap that's generated
+ to contain all final rendered resources.
+ 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
+ scopeDefinitions:
+ additionalProperties:
+ description: A ScopeDefinition registers a kind of Kubernetes custom
+ resource as a valid OAM scope kind by referencing its CustomResourceDefinition.
+ The CRD is used to validate the schema of the scope when it is
+ embedded in an OAM ApplicationConfiguration.
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: A ScopeDefinitionSpec defines the desired state
+ of a ScopeDefinition.
+ properties:
+ allowComponentOverlap:
+ description: AllowComponentOverlap specifies whether an
+ OAM component may exist in multiple instances of this
+ kind of scope.
+ type: boolean
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this scope kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ workloadRefsPath:
+ description: WorkloadRefsPath indicates if/where a scope
+ accepts workloadRef objects
+ type: string
+ required:
+ - allowComponentOverlap
+ - definitionRef
+ type: object
+ type: object
+ description: ScopeDefinitions records the snapshot of the scopeDefinitions
+ related with the created/modified Application
+ type: object
+ scopeGVK:
+ additionalProperties:
+ description: GroupVersionKind unambiguously identifies a kind. It
+ doesn't anonymously include GroupVersion to avoid automatic coersion. It
+ doesn't use a GroupVersion to avoid custom marshalling
+ properties:
+ group:
+ type: string
+ kind:
+ type: string
+ version:
+ type: string
+ required:
+ - group
+ - kind
+ - version
+ type: object
+ description: ScopeGVK records the apiVersion to GVK mapping
+ type: object
+ traitDefinitions:
+ additionalProperties:
+ description: A TraitDefinition registers a kind of Kubernetes custom
+ resource as a valid OAM trait kind by referencing its CustomResourceDefinition.
+ The CRD is used to validate the schema of the trait when it is
+ embedded in an OAM ApplicationConfiguration.
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: A TraitDefinitionSpec defines the desired state
+ of a TraitDefinition.
+ properties:
+ appliesToWorkloads:
+ description: AppliesToWorkloads specifies the list of workload
+ kinds this trait applies to. Workload kinds are specified
+ in kind.group/version format, e.g. server.core.oam.dev/v1alpha2.
+ Traits that omit this field apply to all workload kinds.
+ items:
+ type: string
+ type: array
+ conflictsWith:
+ description: 'ConflictsWith specifies the list of traits(CRD
+ name, Definition name, CRD group) which could not apply
+ to the same workloads with this trait. Traits that omit
+ this field can work with any other traits. Example rules:
+ "service" # Trait definition name "services.k8s.io" #
+ API resource/crd name "*.networking.k8s.io" # API group
+ "labelSelector:foo=bar" # label selector labelSelector
+ format: https://pkg.go.dev/k8s.io/apimachinery/pkg/labels#Parse'
+ items:
+ type: string
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ manageWorkload:
+ description: ManageWorkload defines the trait would be responsible
+ for creating the workload
+ type: boolean
+ podDisruptive:
+ description: PodDisruptive specifies whether using the trait
+ will cause the pod to restart or not.
+ type: boolean
+ revisionEnabled:
+ description: Revision indicates whether a trait is aware
+ of component revision
+ type: boolean
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the trait
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a
+ required field if CUE is defined in Capability
+ Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used
+ by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will
+ be overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or
+ not a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type
+ of the parameter value, and only supports
+ basic data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes
+ resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ skipRevisionAffect:
+ description: SkipRevisionAffect defines the update this
+ trait will not generate a new application Revision
+ type: boolean
+ status:
+ description: Status defines the custom health policy and
+ status message for trait
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status
+ message that could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy
+ for the abstraction
+ type: string
+ type: object
+ workloadRefPath:
+ description: WorkloadRefPath indicates where/if a trait
+ accepts a workloadRef object
+ type: string
+ type: object
+ status:
+ description: TraitDefinitionStatus is the status of TraitDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains
+ OpenAPI V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ description: TraitDefinitions records the snapshot of the traitDefinitions
+ related with the created/modified Application
+ type: object
+ workflowStepDefinitions:
+ additionalProperties:
+ description: WorkflowStepDefinition is the Schema for the workflowstepdefinitions
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: WorkflowStepDefinitionSpec defines the desired
+ state of WorkflowStepDefinition
+ properties:
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the workflow step definition
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a
+ required field if CUE is defined in Capability
+ Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used
+ by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will
+ be overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or
+ not a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type
+ of the parameter value, and only supports
+ basic data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes
+ resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ type: object
+ status:
+ description: WorkflowStepDefinitionStatus is the status of WorkflowStepDefinition
+ 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
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ description: WorkflowStepDefinitions records the snapshot of the WorkflowStepDefinitions
+ related with the created/modified Application
+ type: object
+ workloadDefinitions:
+ additionalProperties:
+ description: A WorkloadDefinition registers a kind of Kubernetes
+ custom resource as a valid OAM workload kind by referencing its
+ CustomResourceDefinition. The CRD is used to validate the schema
+ of the workload when it is embedded in an OAM Component.
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: A WorkloadDefinitionSpec defines the desired state
+ of a WorkloadDefinition.
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the
+ child resources this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes
+ resource kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources
+ that the workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this workload kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload
+ has K8s podSpec field if one workload has podSpec, trait
+ can do lot's of assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying
+ resources(e.g. pods) of this workload can be used by trait
+ to create resource selectors(e.g. label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a
+ required field if CUE is defined in Capability
+ Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used
+ by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will
+ be overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or
+ not a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type
+ of the parameter value, and only supports
+ basic data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes
+ resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and
+ status message for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status
+ message that could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy
+ for the abstraction
+ type: string
+ type: object
+ required:
+ - definitionRef
+ type: object
+ status:
+ description: WorkloadDefinitionStatus is the status of WorkloadDefinition
+ 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
+ type: object
+ type: object
+ description: WorkloadDefinitions records the snapshot of the workloadDefinitions
+ related with the created/modified Application
+ type: object
+ required:
+ - application
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_applications.yaml b/charts/vela-minimal/crds/core.oam.dev_applications.yaml
new file mode 100644
index 000000000..13acb0079
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_applications.yaml
@@ -0,0 +1,1514 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ cert-manager.io/inject-ca-from: vela-system/kubevela-vela-core-root-cert
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: applications.core.oam.dev
+spec:
+ conversion:
+ strategy: Webhook
+ webhook:
+ clientConfig:
+ service:
+ name: vela-core-webhook
+ namespace: vela-system
+ path: /convert
+ port: 443
+ conversionReviewVersions:
+ - v1beta1
+ - v1alpha2
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: Application
+ listKind: ApplicationList
+ plural: applications
+ shortNames:
+ - app
+ singular: application
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.components[*].name
+ name: COMPONENT
+ type: string
+ - jsonPath: .spec.components[*].type
+ name: TYPE
+ type: string
+ - jsonPath: .status.status
+ name: PHASE
+ type: string
+ - jsonPath: .status.services[*].healthy
+ name: HEALTHY
+ type: boolean
+ - jsonPath: .status.services[*].message
+ name: STATUS
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: AGE
+ type: date
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: Application is the Schema for the applications 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: ApplicationSpec is the spec of Application
+ properties:
+ components:
+ items:
+ description: ApplicationComponent describe the component of application
+ properties:
+ name:
+ type: string
+ scopes:
+ additionalProperties:
+ type: string
+ description: scopes in ApplicationComponent defines the component-level scopes the format is pairs, the key represents type of `ScopeDefinition` while the value represent the name of scope instance.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ settings:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ traits:
+ description: Traits define the trait of one component, the type must be array to keep the order.
+ items:
+ description: ApplicationTrait defines the trait of application
+ properties:
+ name:
+ type: string
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - name
+ type: object
+ type: array
+ type:
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ rolloutPlan:
+ description: RolloutPlan is the details on how to rollout the resources The controller simply replace the old resources with the new one if there is no rollout plan involved
+ properties:
+ batchPartition:
+ description: All pods in the batches up to the batchPartition (included) will have the target resource specification while the rest still have the source resource This is designed for the operators to manually rollout Default is the the number of batches which will rollout all the batches
+ format: int32
+ type: integer
+ canaryMetric:
+ description: CanaryMetric provides a way for the rollout process to automatically check certain metrics before complete the process
+ items:
+ description: CanaryMetric holds the reference to metrics used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows size
+ type: string
+ metricsRange:
+ description: Range value accepted for this metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric template object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ numBatches:
+ description: The number of batches, default = 1
+ format: int32
+ type: integer
+ paused:
+ description: Paused the rollout, default is false
+ type: boolean
+ rolloutBatches:
+ description: The exact distribution among batches. its size has to be exactly the same as the NumBatches (if set) The total number cannot exceed the targetSize or the size of the source resource We will IGNORE the last batch's replica field if it's a percentage since round errors can lead to inaccurate sum We highly recommend to leave the last batch's replica field empty
+ items:
+ description: RolloutBatch is used to describe how the each batch rollout should be
+ properties:
+ batchRolloutWebhooks:
+ description: RolloutWebhooks provides a way for the batch rollout to interact with an external process
+ items:
+ description: RolloutWebhook holds the reference to external checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the expected http status code that we will accept as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for this webhook
+ type: object
+ method:
+ description: Method the HTTP call method, default is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ canaryMetric:
+ description: CanaryMetric provides a way for the batch rollout process to automatically check certain metrics before moving to the next batch
+ items:
+ description: CanaryMetric holds the reference to metrics used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows size
+ type: string
+ metricsRange:
+ description: Range value accepted for this metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric template object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ instanceInterval:
+ description: The wait time, in seconds, between instances upgrades, default = 0
+ format: int32
+ type: integer
+ maxUnavailable:
+ anyOf:
+ - type: integer
+ - type: string
+ description: MaxUnavailable is the max allowed number of pods that is unavailable during the upgrade. We will mark the batch as ready as long as there are less or equal number of pods unavailable than this number. default = 0
+ x-kubernetes-int-or-string: true
+ podList:
+ description: The list of Pods to get upgraded it is mutually exclusive with the Replicas field
+ items:
+ type: string
+ type: array
+ replicas:
+ anyOf:
+ - type: integer
+ - type: string
+ description: 'Replicas is the number of pods to upgrade in this batch it can be an absolute number (ex: 5) or a percentage of total pods we will ignore the percentage of the last batch to just fill the gap it is mutually exclusive with the PodList field'
+ x-kubernetes-int-or-string: true
+ type: object
+ type: array
+ rolloutStrategy:
+ description: RolloutStrategy defines strategies for the rollout plan The default is IncreaseFirstRolloutStrategyType
+ type: string
+ rolloutWebhooks:
+ description: RolloutWebhooks provide a way for the rollout to interact with an external process
+ items:
+ description: RolloutWebhook holds the reference to external checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the expected http status code that we will accept as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for this webhook
+ type: object
+ method:
+ description: Method the HTTP call method, default is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ targetSize:
+ description: The size of the target resource. The default is the same as the size of the source resource.
+ format: int32
+ type: integer
+ type: object
+ required:
+ - components
+ type: object
+ status:
+ description: AppStatus defines the observed state of Application
+ properties:
+ appliedResources:
+ description: AppliedResources record the resources that the workflow step apply.
+ items:
+ description: ClusterObjectReference defines the object reference with cluster.
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ cluster:
+ type: string
+ creator:
+ description: ResourceCreatorRole defines the resource creator.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ components:
+ description: Components record the related Components created by Application Controller
+ items:
+ description: 'ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don''t make new APIs embed an underspecified API type they do not control. Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ 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
+ latestRevision:
+ description: LatestRevision of the application configuration it generates
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ observedGeneration:
+ description: The generation observed by the application controller.
+ format: int64
+ type: integer
+ resourceTracker:
+ description: ResourceTracker record the status of the ResourceTracker
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ rollout:
+ description: AppRolloutStatus defines the observed state of AppRollout
+ properties:
+ LastSourceAppRevision:
+ description: LastSourceAppRevision contains the name of the app that we need to upgrade from. We will restart the rollout if this is not the same as the spec
+ type: string
+ batchRollingState:
+ description: BatchRollingState only meaningful when the Status is rolling
+ type: string
+ 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
+ currentBatch:
+ description: The current batch the rollout is working on/blocked it starts from 0
+ format: int32
+ type: integer
+ lastAppliedPodTemplateIdentifier:
+ description: lastAppliedPodTemplateIdentifier is a string that uniquely represent the last pod template each workload type could use different ways to identify that so we cannot compare between resources We update this field only after a successful rollout
+ type: string
+ lastTargetAppRevision:
+ description: LastUpgradedTargetAppRevision contains the name of the app that we upgraded to We will restart the rollout if this is not the same as the spec
+ type: string
+ rollingState:
+ description: RollingState is the Rollout State
+ type: string
+ rolloutOriginalSize:
+ description: RolloutTargetSize is the size of the target resources. This is determined once the initial spec verification and does not change until the rollout is restarted
+ format: int32
+ type: integer
+ rolloutTargetSize:
+ description: RolloutTargetSize is the size of the target resources. This is determined once the initial spec verification and does not change until the rollout is restarted
+ format: int32
+ type: integer
+ targetGeneration:
+ description: NewPodTemplateIdentifier is a string that uniquely represent the new pod template each workload type could use different ways to identify that so we cannot compare between resources
+ type: string
+ upgradedReadyReplicas:
+ description: UpgradedReadyReplicas is the number of Pods upgraded by the rollout controller that have a Ready Condition.
+ format: int32
+ type: integer
+ upgradedReplicas:
+ description: UpgradedReplicas is the number of Pods upgraded by the rollout controller
+ format: int32
+ type: integer
+ required:
+ - currentBatch
+ - lastTargetAppRevision
+ - rollingState
+ - upgradedReadyReplicas
+ - upgradedReplicas
+ type: object
+ services:
+ description: Services record the status of the application services
+ items:
+ description: ApplicationComponentStatus record the health status of App component
+ properties:
+ env:
+ type: string
+ healthy:
+ type: boolean
+ message:
+ type: string
+ name:
+ type: string
+ scopes:
+ items:
+ description: 'ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don''t make new APIs embed an underspecified API type they do not control. Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ traits:
+ items:
+ description: ApplicationTraitStatus records the trait health status
+ properties:
+ healthy:
+ type: boolean
+ message:
+ type: string
+ type:
+ type: string
+ required:
+ - healthy
+ - type
+ type: object
+ type: array
+ workloadDefinition:
+ description: WorkloadDefinition is the definition of a WorkloadDefinition, such as deployments/apps.v1
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ required:
+ - healthy
+ - name
+ type: object
+ type: array
+ status:
+ description: ApplicationPhase is a label for the condition of a application at the current time
+ type: string
+ workflow:
+ description: Workflow record the status of workflow
+ properties:
+ appRevision:
+ type: string
+ contextBackend:
+ description: 'ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don''t make new APIs embed an underspecified API type they do not control. Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ mode:
+ description: WorkflowMode describes the mode of workflow
+ type: string
+ steps:
+ items:
+ description: WorkflowStepStatus record the status of a workflow step
+ properties:
+ id:
+ type: string
+ message:
+ description: A human readable message indicating details about why the workflowStep is in this state.
+ type: string
+ name:
+ type: string
+ phase:
+ description: WorkflowStepPhase describes the phase of a workflow step.
+ type: string
+ reason:
+ description: A brief CamelCase message indicating details about why the workflowStep is in this state.
+ type: string
+ subSteps:
+ description: SubStepsStatus record the status of workflow steps.
+ properties:
+ mode:
+ description: WorkflowMode describes the mode of workflow
+ type: string
+ stepIndex:
+ type: integer
+ steps:
+ items:
+ description: WorkflowSubStepStatus record the status of a workflow step
+ properties:
+ id:
+ type: string
+ message:
+ description: A human readable message indicating details about why the workflowStep is in this state.
+ type: string
+ name:
+ type: string
+ phase:
+ description: WorkflowStepPhase describes the phase of a workflow step.
+ type: string
+ reason:
+ description: A brief CamelCase message indicating details about why the workflowStep is in this state.
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ type: object
+ type:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ suspend:
+ type: boolean
+ terminated:
+ type: boolean
+ required:
+ - mode
+ - suspend
+ - terminated
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources:
+ status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.components[*].name
+ name: COMPONENT
+ type: string
+ - jsonPath: .spec.components[*].type
+ name: TYPE
+ type: string
+ - jsonPath: .status.status
+ name: PHASE
+ type: string
+ - jsonPath: .status.services[*].healthy
+ name: HEALTHY
+ type: boolean
+ - jsonPath: .status.services[*].message
+ name: STATUS
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: AGE
+ type: date
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: Application is the Schema for the applications 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: ApplicationSpec is the spec of Application
+ properties:
+ components:
+ items:
+ description: ApplicationComponent describe the component of application
+ properties:
+ externalRevision:
+ description: ExternalRevision specified the component revisionName
+ type: string
+ inputs:
+ description: StepInputs defines variable input of WorkflowStep
+ items:
+ properties:
+ from:
+ type: string
+ parameterKey:
+ type: string
+ required:
+ - from
+ - parameterKey
+ type: object
+ type: array
+ name:
+ type: string
+ outputs:
+ description: StepOutputs defines output variable of WorkflowStep
+ items:
+ properties:
+ name:
+ type: string
+ valueFrom:
+ type: string
+ required:
+ - name
+ - valueFrom
+ type: object
+ type: array
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ scopes:
+ additionalProperties:
+ type: string
+ description: scopes in ApplicationComponent defines the component-level scopes the format is pairs, the key represents type of `ScopeDefinition` while the value represent the name of scope instance.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ traits:
+ description: Traits define the trait of one component, the type must be array to keep the order.
+ items:
+ description: ApplicationTrait defines the trait of application
+ properties:
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ type:
+ type: string
+ required:
+ - type
+ type: object
+ type: array
+ type:
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ policies:
+ description: Policies defines the global policies for all components in the app, e.g. security, metrics, gitops, multi-cluster placement rules, etc. Policies are applied after components are rendered and before workflow steps are executed.
+ items:
+ description: AppPolicy defines a global policy for all components in the app.
+ properties:
+ name:
+ description: Name is the unique name of the policy.
+ type: string
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ type:
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ rolloutPlan:
+ description: RolloutPlan is the details on how to rollout the resources The controller simply replace the old resources with the new one if there is no rollout plan involved
+ properties:
+ batchPartition:
+ description: All pods in the batches up to the batchPartition (included) will have the target resource specification while the rest still have the source resource This is designed for the operators to manually rollout Default is the the number of batches which will rollout all the batches
+ format: int32
+ type: integer
+ canaryMetric:
+ description: CanaryMetric provides a way for the rollout process to automatically check certain metrics before complete the process
+ items:
+ description: CanaryMetric holds the reference to metrics used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows size
+ type: string
+ metricsRange:
+ description: Range value accepted for this metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric template object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ numBatches:
+ description: The number of batches, default = 1
+ format: int32
+ type: integer
+ paused:
+ description: Paused the rollout, default is false
+ type: boolean
+ rolloutBatches:
+ description: The exact distribution among batches. its size has to be exactly the same as the NumBatches (if set) The total number cannot exceed the targetSize or the size of the source resource We will IGNORE the last batch's replica field if it's a percentage since round errors can lead to inaccurate sum We highly recommend to leave the last batch's replica field empty
+ items:
+ description: RolloutBatch is used to describe how the each batch rollout should be
+ properties:
+ batchRolloutWebhooks:
+ description: RolloutWebhooks provides a way for the batch rollout to interact with an external process
+ items:
+ description: RolloutWebhook holds the reference to external checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the expected http status code that we will accept as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for this webhook
+ type: object
+ method:
+ description: Method the HTTP call method, default is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ canaryMetric:
+ description: CanaryMetric provides a way for the batch rollout process to automatically check certain metrics before moving to the next batch
+ items:
+ description: CanaryMetric holds the reference to metrics used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows size
+ type: string
+ metricsRange:
+ description: Range value accepted for this metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric template object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ instanceInterval:
+ description: The wait time, in seconds, between instances upgrades, default = 0
+ format: int32
+ type: integer
+ maxUnavailable:
+ anyOf:
+ - type: integer
+ - type: string
+ description: MaxUnavailable is the max allowed number of pods that is unavailable during the upgrade. We will mark the batch as ready as long as there are less or equal number of pods unavailable than this number. default = 0
+ x-kubernetes-int-or-string: true
+ podList:
+ description: The list of Pods to get upgraded it is mutually exclusive with the Replicas field
+ items:
+ type: string
+ type: array
+ replicas:
+ anyOf:
+ - type: integer
+ - type: string
+ description: 'Replicas is the number of pods to upgrade in this batch it can be an absolute number (ex: 5) or a percentage of total pods we will ignore the percentage of the last batch to just fill the gap it is mutually exclusive with the PodList field'
+ x-kubernetes-int-or-string: true
+ type: object
+ type: array
+ rolloutStrategy:
+ description: RolloutStrategy defines strategies for the rollout plan The default is IncreaseFirstRolloutStrategyType
+ type: string
+ rolloutWebhooks:
+ description: RolloutWebhooks provide a way for the rollout to interact with an external process
+ items:
+ description: RolloutWebhook holds the reference to external checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the expected http status code that we will accept as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for this webhook
+ type: object
+ method:
+ description: Method the HTTP call method, default is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ targetSize:
+ description: The size of the target resource. The default is the same as the size of the source resource.
+ format: int32
+ type: integer
+ type: object
+ workflow:
+ description: 'Workflow defines how to customize the control logic. If workflow is specified, Vela won''t apply any resource, but provide rendered output in AppRevision. Workflow steps are executed in array order, and each step: - will have a context in annotation. - should mark "finish" phase in status.conditions.'
+ properties:
+ steps:
+ items:
+ description: WorkflowStep defines how to execute a workflow step.
+ properties:
+ inputs:
+ description: StepInputs defines variable input of WorkflowStep
+ items:
+ properties:
+ from:
+ type: string
+ parameterKey:
+ type: string
+ required:
+ - from
+ - parameterKey
+ type: object
+ type: array
+ name:
+ description: Name is the unique name of the workflow step.
+ type: string
+ outputs:
+ description: StepOutputs defines output variable of WorkflowStep
+ items:
+ properties:
+ name:
+ type: string
+ valueFrom:
+ type: string
+ required:
+ - name
+ - valueFrom
+ type: object
+ type: array
+ properties:
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ type:
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ type: object
+ required:
+ - components
+ type: object
+ status:
+ description: AppStatus defines the observed state of Application
+ properties:
+ appliedResources:
+ description: AppliedResources record the resources that the workflow step apply.
+ items:
+ description: ClusterObjectReference defines the object reference with cluster.
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ cluster:
+ type: string
+ creator:
+ description: ResourceCreatorRole defines the resource creator.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ components:
+ description: Components record the related Components created by Application Controller
+ items:
+ description: 'ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don''t make new APIs embed an underspecified API type they do not control. Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ 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
+ latestRevision:
+ description: LatestRevision of the application configuration it generates
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ observedGeneration:
+ description: The generation observed by the application controller.
+ format: int64
+ type: integer
+ resourceTracker:
+ description: ResourceTracker record the status of the ResourceTracker
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ rollout:
+ description: AppRolloutStatus defines the observed state of AppRollout
+ properties:
+ LastSourceAppRevision:
+ description: LastSourceAppRevision contains the name of the app that we need to upgrade from. We will restart the rollout if this is not the same as the spec
+ type: string
+ batchRollingState:
+ description: BatchRollingState only meaningful when the Status is rolling
+ type: string
+ 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
+ currentBatch:
+ description: The current batch the rollout is working on/blocked it starts from 0
+ format: int32
+ type: integer
+ lastAppliedPodTemplateIdentifier:
+ description: lastAppliedPodTemplateIdentifier is a string that uniquely represent the last pod template each workload type could use different ways to identify that so we cannot compare between resources We update this field only after a successful rollout
+ type: string
+ lastTargetAppRevision:
+ description: LastUpgradedTargetAppRevision contains the name of the app that we upgraded to We will restart the rollout if this is not the same as the spec
+ type: string
+ rollingState:
+ description: RollingState is the Rollout State
+ type: string
+ rolloutOriginalSize:
+ description: RolloutTargetSize is the size of the target resources. This is determined once the initial spec verification and does not change until the rollout is restarted
+ format: int32
+ type: integer
+ rolloutTargetSize:
+ description: RolloutTargetSize is the size of the target resources. This is determined once the initial spec verification and does not change until the rollout is restarted
+ format: int32
+ type: integer
+ targetGeneration:
+ description: NewPodTemplateIdentifier is a string that uniquely represent the new pod template each workload type could use different ways to identify that so we cannot compare between resources
+ type: string
+ upgradedReadyReplicas:
+ description: UpgradedReadyReplicas is the number of Pods upgraded by the rollout controller that have a Ready Condition.
+ format: int32
+ type: integer
+ upgradedReplicas:
+ description: UpgradedReplicas is the number of Pods upgraded by the rollout controller
+ format: int32
+ type: integer
+ required:
+ - currentBatch
+ - lastTargetAppRevision
+ - rollingState
+ - upgradedReadyReplicas
+ - upgradedReplicas
+ type: object
+ services:
+ description: Services record the status of the application services
+ items:
+ description: ApplicationComponentStatus record the health status of App component
+ properties:
+ env:
+ type: string
+ healthy:
+ type: boolean
+ message:
+ type: string
+ name:
+ type: string
+ scopes:
+ items:
+ description: 'ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don''t make new APIs embed an underspecified API type they do not control. Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ traits:
+ items:
+ description: ApplicationTraitStatus records the trait health status
+ properties:
+ healthy:
+ type: boolean
+ message:
+ type: string
+ type:
+ type: string
+ required:
+ - healthy
+ - type
+ type: object
+ type: array
+ workloadDefinition:
+ description: WorkloadDefinition is the definition of a WorkloadDefinition, such as deployments/apps.v1
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ required:
+ - healthy
+ - name
+ type: object
+ type: array
+ status:
+ description: ApplicationPhase is a label for the condition of a application at the current time
+ type: string
+ workflow:
+ description: Workflow record the status of workflow
+ properties:
+ appRevision:
+ type: string
+ contextBackend:
+ description: 'ObjectReference contains enough information to let you inspect or modify the referred object. --- New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs. 1. Ignored fields. It includes many fields which are not generally honored. For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage. 2. Invalid usage help. It is impossible to add specific help for individual usage. In most embedded usages, there are particular restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted". Those cannot be well described when embedded. 3. Inconsistent validation. Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen. 4. The fields are both imprecise and overly precise. Kind is not a precise mapping to a URL. This can produce ambiguity during interpretation and require a REST mapping. In most cases, the dependency is on the group,resource tuple and the version of the actual struct is irrelevant. 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type will affect numerous schemas. Don''t make new APIs embed an underspecified API type they do not control. Instead of using this type, create a locally provided and used type that is well-focused on your reference. For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ mode:
+ description: WorkflowMode describes the mode of workflow
+ type: string
+ steps:
+ items:
+ description: WorkflowStepStatus record the status of a workflow step
+ properties:
+ id:
+ type: string
+ message:
+ description: A human readable message indicating details about why the workflowStep is in this state.
+ type: string
+ name:
+ type: string
+ phase:
+ description: WorkflowStepPhase describes the phase of a workflow step.
+ type: string
+ reason:
+ description: A brief CamelCase message indicating details about why the workflowStep is in this state.
+ type: string
+ subSteps:
+ description: SubStepsStatus record the status of workflow steps.
+ properties:
+ mode:
+ description: WorkflowMode describes the mode of workflow
+ type: string
+ stepIndex:
+ type: integer
+ steps:
+ items:
+ description: WorkflowSubStepStatus record the status of a workflow step
+ properties:
+ id:
+ type: string
+ message:
+ description: A human readable message indicating details about why the workflowStep is in this state.
+ type: string
+ name:
+ type: string
+ phase:
+ description: WorkflowStepPhase describes the phase of a workflow step.
+ type: string
+ reason:
+ description: A brief CamelCase message indicating details about why the workflowStep is in this state.
+ type: string
+ type:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ type: object
+ type:
+ type: string
+ required:
+ - id
+ type: object
+ type: array
+ suspend:
+ type: boolean
+ terminated:
+ type: boolean
+ required:
+ - mode
+ - suspend
+ - terminated
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_componentdefinitions.yaml b/charts/vela-minimal/crds/core.oam.dev_componentdefinitions.yaml
new file mode 100644
index 000000000..b188fe8dd
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_componentdefinitions.yaml
@@ -0,0 +1,565 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: componentdefinitions.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: ComponentDefinition
+ listKind: ComponentDefinitionList
+ plural: componentdefinitions
+ shortNames:
+ - comp
+ singular: componentdefinition
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.workload.definition.kind
+ name: WORKLOAD-KIND
+ type: string
+ - jsonPath: .metadata.annotations.definition\.oam\.dev/description
+ name: DESCRIPTION
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: ComponentDefinition is the Schema for the componentdefinitions
+ 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: ComponentDefinitionSpec defines the desired state of ComponentDefinition
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the child resources
+ this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes resource
+ kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources that the
+ workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ extension:
+ description: Extension is used for extension needs by OAM platform
+ builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload has K8s
+ podSpec field if one workload has podSpec, trait can do lot's of
+ assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying resources(e.g.
+ pods) of this workload can be used by trait to create resource selectors(e.g.
+ label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template of the
+ encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template data
+ of the capability, it will replace the old CUE template
+ in extension field. Template is a required field if CUE
+ is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm module
+ properties:
+ release:
+ description: Release records a Helm release used by a Helm
+ module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable parameter
+ of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array of fields
+ within this workload that will be overwritten by the
+ value of this parameter. \tAll fields must be of the
+ same type. Fields are specified as JSON field paths
+ without a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not a value
+ for this parameter must be supplied when authoring
+ an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of the parameter
+ value, and only supports basic data types: string,
+ number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud resources
+ managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and status message
+ for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status message that
+ could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy for
+ the abstraction
+ type: string
+ type: object
+ workload:
+ description: Workload is a workload type descriptor
+ properties:
+ definition:
+ description: Definition mutually exclusive to workload.type, a
+ embedded WorkloadDefinition
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type:
+ description: Type ref to a WorkloadDefinition via name
+ type: string
+ type: object
+ required:
+ - workload
+ type: object
+ status:
+ description: ComponentDefinitionStatus is the status of ComponentDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains OpenAPI
+ V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of
+ ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources:
+ status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.workload.definition.kind
+ name: WORKLOAD-KIND
+ type: string
+ - jsonPath: .metadata.annotations.definition\.oam\.dev/description
+ name: DESCRIPTION
+ type: string
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: ComponentDefinition is the Schema for the componentdefinitions
+ 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: ComponentDefinitionSpec defines the desired state of ComponentDefinition
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the child resources
+ this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes resource
+ kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources that the
+ workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ extension:
+ description: Extension is used for extension needs by OAM platform
+ builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload has K8s
+ podSpec field if one workload has podSpec, trait can do lot's of
+ assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying resources(e.g.
+ pods) of this workload can be used by trait to create resource selectors(e.g.
+ label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template of the
+ encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template data
+ of the capability, it will replace the old CUE template
+ in extension field. Template is a required field if CUE
+ is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm module
+ properties:
+ release:
+ description: Release records a Helm release used by a Helm
+ module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable parameter
+ of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array of fields
+ within this workload that will be overwritten by the
+ value of this parameter. \tAll fields must be of the
+ same type. Fields are specified as JSON field paths
+ without a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not a value
+ for this parameter must be supplied when authoring
+ an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of the parameter
+ value, and only supports basic data types: string,
+ number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud resources
+ managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and status message
+ for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status message that
+ could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy for
+ the abstraction
+ type: string
+ type: object
+ workload:
+ description: Workload is a workload type descriptor
+ properties:
+ definition:
+ description: Definition mutually exclusive to workload.type, a
+ embedded WorkloadDefinition
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type:
+ description: Type ref to a WorkloadDefinition via name
+ type: string
+ type: object
+ required:
+ - workload
+ type: object
+ status:
+ description: ComponentDefinitionStatus is the status of ComponentDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains OpenAPI
+ V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of
+ ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_definitionrevisions.yaml b/charts/vela-minimal/crds/core.oam.dev_definitionrevisions.yaml
new file mode 100644
index 000000000..0ab6bd420
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_definitionrevisions.yaml
@@ -0,0 +1,1082 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: definitionrevisions.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: DefinitionRevision
+ listKind: DefinitionRevisionList
+ plural: definitionrevisions
+ shortNames:
+ - defrev
+ singular: definitionrevision
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.revision
+ name: REVISION
+ type: integer
+ - jsonPath: .spec.revisionHash
+ name: HASH
+ type: string
+ - jsonPath: .spec.definitionType
+ name: TYPE
+ type: string
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: DefinitionRevision is the Schema for the DefinitionRevision 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: DefinitionRevisionSpec is the spec of DefinitionRevision
+ properties:
+ componentDefinition:
+ description: ComponentDefinition records the snapshot of the created/modified
+ ComponentDefinition
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: ComponentDefinitionSpec defines the desired state
+ of ComponentDefinition
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the
+ child resources this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes
+ resource kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources
+ that the workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload
+ has K8s podSpec field if one workload has podSpec, trait
+ can do lot's of assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying
+ resources(e.g. pods) of this workload can be used by trait
+ to create resource selectors(e.g. label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a required
+ field if CUE is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will be
+ overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not
+ a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of
+ the parameter value, and only supports basic
+ data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and status
+ message for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status message
+ that could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy
+ for the abstraction
+ type: string
+ type: object
+ workload:
+ description: Workload is a workload type descriptor
+ properties:
+ definition:
+ description: Definition mutually exclusive to workload.type,
+ a embedded WorkloadDefinition
+ properties:
+ apiVersion:
+ type: string
+ kind:
+ type: string
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type:
+ description: Type ref to a WorkloadDefinition via name
+ type: string
+ type: object
+ required:
+ - workload
+ type: object
+ status:
+ description: ComponentDefinitionStatus is the status of ComponentDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains
+ OpenAPI V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ definitionType:
+ description: DefinitionType
+ enum:
+ - Component
+ - Trait
+ - Policy
+ - WorkflowStep
+ type: string
+ policyDefinition:
+ description: PolicyDefinition records the snapshot of the created/modified
+ PolicyDefinition
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: PolicyDefinitionSpec defines the desired state of
+ PolicyDefinition
+ properties:
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ manageHealthCheck:
+ description: ManageHealthCheck means the policy will handle
+ health checking and skip application controller built-in
+ health checking.
+ type: boolean
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the policy definition
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a required
+ field if CUE is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will be
+ overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not
+ a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of
+ the parameter value, and only supports basic
+ data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ type: object
+ status:
+ description: PolicyDefinitionStatus is the status of PolicyDefinition
+ 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
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ revision:
+ description: Revision record revision number of DefinitionRevision
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of DefinitionRevision
+ object.
+ type: string
+ traitDefinition:
+ description: TraitDefinition records the snapshot of the created/modified
+ TraitDefinition
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: A TraitDefinitionSpec defines the desired state of
+ a TraitDefinition.
+ properties:
+ appliesToWorkloads:
+ description: AppliesToWorkloads specifies the list of workload
+ kinds this trait applies to. Workload kinds are specified
+ in kind.group/version format, e.g. server.core.oam.dev/v1alpha2.
+ Traits that omit this field apply to all workload kinds.
+ items:
+ type: string
+ type: array
+ conflictsWith:
+ description: 'ConflictsWith specifies the list of traits(CRD
+ name, Definition name, CRD group) which could not apply
+ to the same workloads with this trait. Traits that omit
+ this field can work with any other traits. Example rules:
+ "service" # Trait definition name "services.k8s.io" # API
+ resource/crd name "*.networking.k8s.io" # API group "labelSelector:foo=bar"
+ # label selector labelSelector format: https://pkg.go.dev/k8s.io/apimachinery/pkg/labels#Parse'
+ items:
+ type: string
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM
+ platform builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ manageWorkload:
+ description: ManageWorkload defines the trait would be responsible
+ for creating the workload
+ type: boolean
+ podDisruptive:
+ description: PodDisruptive specifies whether using the trait
+ will cause the pod to restart or not.
+ type: boolean
+ revisionEnabled:
+ description: Revision indicates whether a trait is aware of
+ component revision
+ type: boolean
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the trait
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a required
+ field if CUE is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will be
+ overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not
+ a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of
+ the parameter value, and only supports basic
+ data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ skipRevisionAffect:
+ description: SkipRevisionAffect defines the update this trait
+ will not generate a new application Revision
+ type: boolean
+ status:
+ description: Status defines the custom health policy and status
+ message for trait
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status message
+ that could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy
+ for the abstraction
+ type: string
+ type: object
+ workloadRefPath:
+ description: WorkloadRefPath indicates where/if a trait accepts
+ a workloadRef object
+ type: string
+ type: object
+ status:
+ description: TraitDefinitionStatus is the status of TraitDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains
+ OpenAPI V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ workflowStepDefinition:
+ description: WorkflowStepDefinition records the snapshot of the created/modified
+ WorkflowStepDefinition
+ 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:
+ properties:
+ annotations:
+ additionalProperties:
+ type: string
+ type: object
+ finalizers:
+ items:
+ type: string
+ type: array
+ labels:
+ additionalProperties:
+ type: string
+ type: object
+ name:
+ type: string
+ namespace:
+ type: string
+ type: object
+ spec:
+ description: WorkflowStepDefinitionSpec defines the desired state
+ of WorkflowStepDefinition
+ properties:
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that
+ defines this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be
+ used if CRD has multiple versions by default it will
+ use the first one if not specified
+ type: string
+ required:
+ - name
+ type: object
+ schematic:
+ description: Schematic defines the data format and template
+ of the encapsulation of the workflow step definition
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template
+ data of the capability, it will replace the old
+ CUE template in extension field. Template is a required
+ field if CUE is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm
+ module
+ properties:
+ release:
+ description: Release records a Helm release used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository
+ used by a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable
+ parameter of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array
+ of fields within this workload that will be
+ overwritten by the value of this parameter.
+ \tAll fields must be of the same type. Fields
+ are specified as JSON field paths without
+ a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not
+ a value for this parameter must be supplied
+ when authoring an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of
+ the parameter value, and only supports basic
+ data types: string, number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud
+ resources managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ type: object
+ status:
+ description: WorkflowStepDefinitionStatus is the status of WorkflowStepDefinition
+ 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
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the
+ spec of ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ required:
+ - definitionType
+ - revision
+ - revisionHash
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_healthscopes.yaml b/charts/vela-minimal/crds/core.oam.dev_healthscopes.yaml
new file mode 100644
index 000000000..8ddc2c133
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_healthscopes.yaml
@@ -0,0 +1,590 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: healthscopes.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: HealthScope
+ listKind: HealthScopeList
+ plural: healthscopes
+ singular: healthscope
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .status.health
+ name: HEALTH
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: A HealthScope determines an aggregate health status based of
+ the health of components.
+ 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: A HealthScopeSpec defines the desired state of a HealthScope.
+ properties:
+ appReferences:
+ description: AppRefs records references of applications' components
+ items:
+ description: AppReference records references of an application's
+ components
+ properties:
+ appName:
+ type: string
+ compReferences:
+ items:
+ description: CompReference records references of a component's
+ resources
+ properties:
+ compName:
+ type: string
+ traits:
+ items:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object.
+ --- New uses of this type are discouraged because
+ of difficulty describing its usage when embedded in
+ APIs. 1. Ignored fields. It includes many fields
+ which are not generally honored. For instance, ResourceVersion
+ and FieldPath are both very rarely valid in actual
+ usage. 2. Invalid usage help. It is impossible to
+ add specific help for individual usage. In most embedded
+ usages, there are particular restrictions like,
+ "must refer only to types A and B" or "UID not honored"
+ or "name must be restricted". Those cannot be
+ well described when embedded. 3. Inconsistent validation. Because
+ the usages are different, the validation rules are
+ different by usage, which makes it hard for users
+ to predict what will happen. 4. The fields are both
+ imprecise and overly precise. Kind is not a precise
+ mapping to a URL. This can produce ambiguity during
+ interpretation and require a REST mapping. In most
+ cases, the dependency is on the group,resource tuple and
+ the version of the actual struct is irrelevant. 5.
+ We cannot easily change it. Because this type is
+ embedded in many locations, updates to this type will
+ affect numerous schemas. Don''t make new APIs embed
+ an underspecified API type they do not control. Instead
+ of using this type, create a locally provided and
+ used type that is well-focused on your reference.
+ For example, ServiceReferences for admission registration:
+ https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object
+ instead of an entire object, this string should
+ contain a valid JSON/Go field access statement,
+ such as desiredState.manifest.containers[2]. For
+ example, if the object reference is to a container
+ within a pod, this would take on a value like:
+ "spec.containers{name}" (where "name" refers to
+ the name of the container that triggered the event)
+ or if no container name is specified "spec.containers[2]"
+ (container with index 2 in this pod). This syntax
+ is chosen only to have some well-defined way of
+ referencing a part of an object. TODO: this design
+ is not final and this field is subject to change
+ in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which
+ this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ workload:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object. ---
+ New uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored
+ fields. It includes many fields which are not generally
+ honored. For instance, ResourceVersion and FieldPath
+ are both very rarely valid in actual usage. 2. Invalid
+ usage help. It is impossible to add specific help for
+ individual usage. In most embedded usages, there are
+ particular restrictions like, "must refer only to
+ types A and B" or "UID not honored" or "name must be
+ restricted". Those cannot be well described when
+ embedded. 3. Inconsistent validation. Because the
+ usages are different, the validation rules are different
+ by usage, which makes it hard for users to predict what
+ will happen. 4. The fields are both imprecise and overly
+ precise. Kind is not a precise mapping to a URL. This
+ can produce ambiguity during interpretation and
+ require a REST mapping. In most cases, the dependency
+ is on the group,resource tuple and the version of
+ the actual struct is irrelevant. 5. We cannot easily
+ change it. Because this type is embedded in many locations,
+ updates to this type will affect numerous schemas. Don''t
+ make new APIs embed an underspecified API type they
+ do not control. Instead of using this type, create a
+ locally provided and used type that is well-focused
+ on your reference. For example, ServiceReferences for
+ admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object
+ instead of an entire object, this string should
+ contain a valid JSON/Go field access statement,
+ such as desiredState.manifest.containers[2]. For
+ example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only
+ to have some well-defined way of referencing a part
+ of an object. TODO: this design is not final and
+ this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: object
+ type: array
+ type: object
+ type: array
+ probe-interval:
+ description: ProbeInterval is the amount of time in seconds between
+ probing tries.
+ format: int32
+ type: integer
+ probe-timeout:
+ description: ProbeTimeout is the amount of time in seconds to wait
+ when receiving a response before marked failure.
+ format: int32
+ type: integer
+ workloadRefs:
+ description: WorkloadReferences to the workloads that are in this
+ scope.
+ items:
+ description: 'ObjectReference contains enough information to let
+ you inspect or modify the referred object. --- New uses of this
+ type are discouraged because of difficulty describing its usage
+ when embedded in APIs. 1. Ignored fields. It includes many fields
+ which are not generally honored. For instance, ResourceVersion
+ and FieldPath are both very rarely valid in actual usage. 2.
+ Invalid usage help. It is impossible to add specific help for
+ individual usage. In most embedded usages, there are particular restrictions
+ like, "must refer only to types A and B" or "UID not honored"
+ or "name must be restricted". Those cannot be well described
+ when embedded. 3. Inconsistent validation. Because the usages
+ are different, the validation rules are different by usage, which
+ makes it hard for users to predict what will happen. 4. The fields
+ are both imprecise and overly precise. Kind is not a precise
+ mapping to a URL. This can produce ambiguity during interpretation
+ and require a REST mapping. In most cases, the dependency is
+ on the group,resource tuple and the version of the actual
+ struct is irrelevant. 5. We cannot easily change it. Because
+ this type is embedded in many locations, updates to this type will
+ affect numerous schemas. Don''t make new APIs embed an underspecified
+ API type they do not control. Instead of using this type, create
+ a locally provided and used type that is well-focused on your
+ reference. For example, ServiceReferences for admission registration:
+ https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of
+ an entire object, this string should contain a valid JSON/Go
+ field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container within
+ a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that triggered
+ the event) or if no container name is specified "spec.containers[2]"
+ (container with index 2 in this pod). This syntax is chosen
+ only to have some well-defined way of referencing a part of
+ an object. TODO: this design is not final and this field is
+ subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ required:
+ - workloadRefs
+ type: object
+ status:
+ description: A HealthScopeStatus represents the observed state of a HealthScope.
+ properties:
+ appHealthConditions:
+ description: AppHealthConditions represents health condition of applications
+ in the scope
+ items:
+ description: AppHealthCondition represents health condition of an
+ application
+ properties:
+ appName:
+ type: string
+ components:
+ items:
+ description: WorkloadHealthCondition represents informative
+ health condition of a workload.
+ properties:
+ componentName:
+ description: ComponentName represents the component name
+ if target is a workload
+ type: string
+ customStatusMsg:
+ type: string
+ diagnosis:
+ type: string
+ healthStatus:
+ description: HealthStatus represents health status strings.
+ type: string
+ targetWorkload:
+ description: 'ObjectReference contains enough information
+ to let you inspect or modify the referred object. ---
+ New uses of this type are discouraged because of difficulty
+ describing its usage when embedded in APIs. 1. Ignored
+ fields. It includes many fields which are not generally
+ honored. For instance, ResourceVersion and FieldPath
+ are both very rarely valid in actual usage. 2. Invalid
+ usage help. It is impossible to add specific help for
+ individual usage. In most embedded usages, there are
+ particular restrictions like, "must refer only to
+ types A and B" or "UID not honored" or "name must be
+ restricted". Those cannot be well described when
+ embedded. 3. Inconsistent validation. Because the
+ usages are different, the validation rules are different
+ by usage, which makes it hard for users to predict what
+ will happen. 4. The fields are both imprecise and overly
+ precise. Kind is not a precise mapping to a URL. This
+ can produce ambiguity during interpretation and
+ require a REST mapping. In most cases, the dependency
+ is on the group,resource tuple and the version of
+ the actual struct is irrelevant. 5. We cannot easily
+ change it. Because this type is embedded in many locations,
+ updates to this type will affect numerous schemas. Don''t
+ make new APIs embed an underspecified API type they
+ do not control. Instead of using this type, create a
+ locally provided and used type that is well-focused
+ on your reference. For example, ServiceReferences for
+ admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object
+ instead of an entire object, this string should
+ contain a valid JSON/Go field access statement,
+ such as desiredState.manifest.containers[2]. For
+ example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only
+ to have some well-defined way of referencing a part
+ of an object. TODO: this design is not final and
+ this field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ traits:
+ items:
+ description: TraitHealthCondition represents informative
+ health condition of a trait.
+ properties:
+ customStatusMsg:
+ type: string
+ diagnosis:
+ type: string
+ healthStatus:
+ description: HealthStatus represents health status
+ strings.
+ type: string
+ resource:
+ type: string
+ type:
+ type: string
+ required:
+ - healthStatus
+ - resource
+ - type
+ type: object
+ type: array
+ workloadStatus:
+ description: WorkloadStatus represents status of workloads
+ whose HealthStatus is UNKNOWN.
+ type: string
+ required:
+ - healthStatus
+ type: object
+ type: array
+ envName:
+ type: string
+ required:
+ - appName
+ type: object
+ type: array
+ 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
+ healthConditions:
+ description: WorkloadHealthConditions represents health condition
+ of workloads in the scope Use AppHealthConditions to provide app
+ level status
+ items:
+ description: WorkloadHealthCondition represents informative health
+ condition of a workload.
+ properties:
+ componentName:
+ description: ComponentName represents the component name if
+ target is a workload
+ type: string
+ customStatusMsg:
+ type: string
+ diagnosis:
+ type: string
+ healthStatus:
+ description: HealthStatus represents health status strings.
+ type: string
+ targetWorkload:
+ description: 'ObjectReference contains enough information to
+ let you inspect or modify the referred object. --- New uses
+ of this type are discouraged because of difficulty describing
+ its usage when embedded in APIs. 1. Ignored fields. It includes
+ many fields which are not generally honored. For instance,
+ ResourceVersion and FieldPath are both very rarely valid in
+ actual usage. 2. Invalid usage help. It is impossible to
+ add specific help for individual usage. In most embedded
+ usages, there are particular restrictions like, "must
+ refer only to types A and B" or "UID not honored" or "name
+ must be restricted". Those cannot be well described when
+ embedded. 3. Inconsistent validation. Because the usages
+ are different, the validation rules are different by usage,
+ which makes it hard for users to predict what will happen. 4.
+ The fields are both imprecise and overly precise. Kind is
+ not a precise mapping to a URL. This can produce ambiguity during
+ interpretation and require a REST mapping. In most cases,
+ the dependency is on the group,resource tuple and the
+ version of the actual struct is irrelevant. 5. We cannot
+ easily change it. Because this type is embedded in many locations,
+ updates to this type will affect numerous schemas. Don''t
+ make new APIs embed an underspecified API type they do not
+ control. Instead of using this type, create a locally provided
+ and used type that is well-focused on your reference. For
+ example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a valid
+ JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that
+ triggered the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2 in this pod).
+ This syntax is chosen only to have some well-defined way
+ of referencing a part of an object. TODO: this design
+ is not final and this field is subject to change in the
+ future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ traits:
+ items:
+ description: TraitHealthCondition represents informative health
+ condition of a trait.
+ properties:
+ customStatusMsg:
+ type: string
+ diagnosis:
+ type: string
+ healthStatus:
+ description: HealthStatus represents health status strings.
+ type: string
+ resource:
+ type: string
+ type:
+ type: string
+ required:
+ - healthStatus
+ - resource
+ - type
+ type: object
+ type: array
+ workloadStatus:
+ description: WorkloadStatus represents status of workloads whose
+ HealthStatus is UNKNOWN.
+ type: string
+ required:
+ - healthStatus
+ type: object
+ type: array
+ scopeHealthCondition:
+ description: ScopeHealthCondition represents health condition summary
+ of the scope
+ properties:
+ healthStatus:
+ description: HealthStatus represents health status strings.
+ type: string
+ healthyWorkloads:
+ format: int64
+ type: integer
+ total:
+ format: int64
+ type: integer
+ unhealthyWorkloads:
+ format: int64
+ type: integer
+ unknownWorkloads:
+ format: int64
+ type: integer
+ required:
+ - healthStatus
+ type: object
+ required:
+ - scopeHealthCondition
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_policydefinitions.yaml b/charts/vela-minimal/crds/core.oam.dev_policydefinitions.yaml
new file mode 100644
index 000000000..e79a9e080
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_policydefinitions.yaml
@@ -0,0 +1,230 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: policydefinitions.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: PolicyDefinition
+ listKind: PolicyDefinitionList
+ plural: policydefinitions
+ shortNames:
+ - policy
+ singular: policydefinition
+ scope: Namespaced
+ versions:
+ - name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: PolicyDefinition is the Schema for the policydefinitions 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: PolicyDefinitionSpec defines the desired state of PolicyDefinition
+ properties:
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that defines
+ this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be used if
+ CRD has multiple versions by default it will use the first one
+ if not specified
+ type: string
+ required:
+ - name
+ type: object
+ manageHealthCheck:
+ description: ManageHealthCheck means the policy will handle health
+ checking and skip application controller built-in health checking.
+ type: boolean
+ schematic:
+ description: Schematic defines the data format and template of the
+ encapsulation of the policy definition
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template data
+ of the capability, it will replace the old CUE template
+ in extension field. Template is a required field if CUE
+ is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm module
+ properties:
+ release:
+ description: Release records a Helm release used by a Helm
+ module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable parameter
+ of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array of fields
+ within this workload that will be overwritten by the
+ value of this parameter. \tAll fields must be of the
+ same type. Fields are specified as JSON field paths
+ without a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not a value
+ for this parameter must be supplied when authoring
+ an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of the parameter
+ value, and only supports basic data types: string,
+ number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud resources
+ managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ type: object
+ status:
+ description: PolicyDefinitionStatus is the status of PolicyDefinition
+ 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
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of
+ ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_resourcetrackers.yaml b/charts/vela-minimal/crds/core.oam.dev_resourcetrackers.yaml
new file mode 100644
index 000000000..bbf68949b
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_resourcetrackers.yaml
@@ -0,0 +1,116 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: resourcetrackers.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: ResourceTracker
+ listKind: ResourceTrackerList
+ plural: resourcetrackers
+ shortNames:
+ - tracker
+ singular: resourcetracker
+ scope: Cluster
+ versions:
+ - name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: An ResourceTracker represents a tracker for track cross namespace
+ 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
+ status:
+ description: ResourceTrackerStatus define the status of resourceTracker
+ properties:
+ trackedResources:
+ items:
+ description: 'ObjectReference contains enough information to let
+ you inspect or modify the referred object. --- New uses of this
+ type are discouraged because of difficulty describing its usage
+ when embedded in APIs. 1. Ignored fields. It includes many fields
+ which are not generally honored. For instance, ResourceVersion
+ and FieldPath are both very rarely valid in actual usage. 2.
+ Invalid usage help. It is impossible to add specific help for
+ individual usage. In most embedded usages, there are particular restrictions
+ like, "must refer only to types A and B" or "UID not honored"
+ or "name must be restricted". Those cannot be well described
+ when embedded. 3. Inconsistent validation. Because the usages
+ are different, the validation rules are different by usage, which
+ makes it hard for users to predict what will happen. 4. The fields
+ are both imprecise and overly precise. Kind is not a precise
+ mapping to a URL. This can produce ambiguity during interpretation
+ and require a REST mapping. In most cases, the dependency is
+ on the group,resource tuple and the version of the actual
+ struct is irrelevant. 5. We cannot easily change it. Because
+ this type is embedded in many locations, updates to this type will
+ affect numerous schemas. Don''t make new APIs embed an underspecified
+ API type they do not control. Instead of using this type, create
+ a locally provided and used type that is well-focused on your
+ reference. For example, ServiceReferences for admission registration:
+ https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
+ .'
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead of
+ an entire object, this string should contain a valid JSON/Go
+ field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container within
+ a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container that triggered
+ the event) or if no container name is specified "spec.containers[2]"
+ (container with index 2 in this pod). This syntax is chosen
+ only to have some well-defined way of referencing a part of
+ an object. TODO: this design is not final and this field is
+ subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this reference
+ is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ type: array
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_scopedefinitions.yaml b/charts/vela-minimal/crds/core.oam.dev_scopedefinitions.yaml
new file mode 100644
index 000000000..26245c6e9
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_scopedefinitions.yaml
@@ -0,0 +1,153 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: scopedefinitions.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: ScopeDefinition
+ listKind: ScopeDefinitionList
+ plural: scopedefinitions
+ shortNames:
+ - scope
+ singular: scopedefinition
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.definitionRef.name
+ name: DEFINITION-NAME
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: A ScopeDefinition registers a kind of Kubernetes custom resource
+ as a valid OAM scope kind by referencing its CustomResourceDefinition. The
+ CRD is used to validate the schema of the scope when it is embedded in an
+ OAM ApplicationConfiguration.
+ 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: A ScopeDefinitionSpec defines the desired state of a ScopeDefinition.
+ properties:
+ allowComponentOverlap:
+ description: AllowComponentOverlap specifies whether an OAM component
+ may exist in multiple instances of this kind of scope.
+ type: boolean
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that defines
+ this scope kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be used if
+ CRD has multiple versions by default it will use the first one
+ if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM platform
+ builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ workloadRefsPath:
+ description: WorkloadRefsPath indicates if/where a scope accepts workloadRef
+ objects
+ type: string
+ required:
+ - allowComponentOverlap
+ - definitionRef
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.definitionRef.name
+ name: DEFINITION-NAME
+ type: string
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: A ScopeDefinition registers a kind of Kubernetes custom resource
+ as a valid OAM scope kind by referencing its CustomResourceDefinition. The
+ CRD is used to validate the schema of the scope when it is embedded in an
+ OAM ApplicationConfiguration.
+ 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: A ScopeDefinitionSpec defines the desired state of a ScopeDefinition.
+ properties:
+ allowComponentOverlap:
+ description: AllowComponentOverlap specifies whether an OAM component
+ may exist in multiple instances of this kind of scope.
+ type: boolean
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that defines
+ this scope kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be used if
+ CRD has multiple versions by default it will use the first one
+ if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM platform
+ builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ workloadRefsPath:
+ description: WorkloadRefsPath indicates if/where a scope accepts workloadRef
+ objects
+ type: string
+ required:
+ - allowComponentOverlap
+ - definitionRef
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_traitdefinitions.yaml b/charts/vela-minimal/crds/core.oam.dev_traitdefinitions.yaml
new file mode 100644
index 000000000..558077b6b
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_traitdefinitions.yaml
@@ -0,0 +1,557 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: traitdefinitions.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: TraitDefinition
+ listKind: TraitDefinitionList
+ plural: traitdefinitions
+ shortNames:
+ - trait
+ singular: traitdefinition
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.appliesToWorkloads
+ name: APPLIES-TO
+ type: string
+ - jsonPath: .metadata.annotations.definition\.oam\.dev/description
+ name: DESCRIPTION
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: A TraitDefinition registers a kind of Kubernetes custom resource
+ as a valid OAM trait kind by referencing its CustomResourceDefinition. The
+ CRD is used to validate the schema of the trait when it is embedded in an
+ OAM ApplicationConfiguration.
+ 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: A TraitDefinitionSpec defines the desired state of a TraitDefinition.
+ properties:
+ appliesToWorkloads:
+ description: AppliesToWorkloads specifies the list of workload kinds
+ this trait applies to. Workload kinds are specified in kind.group/version
+ format, e.g. server.core.oam.dev/v1alpha2. Traits that omit this
+ field apply to all workload kinds.
+ items:
+ type: string
+ type: array
+ conflictsWith:
+ description: 'ConflictsWith specifies the list of traits(CRD name,
+ Definition name, CRD group) which could not apply to the same workloads
+ with this trait. Traits that omit this field can work with any other
+ traits. Example rules: "service" # Trait definition name "services.k8s.io"
+ # API resource/crd name "*.networking.k8s.io" # API group "labelSelector:foo=bar"
+ # label selector labelSelector format: https://pkg.go.dev/k8s.io/apimachinery/pkg/labels#Parse'
+ items:
+ type: string
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that defines
+ this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be used if
+ CRD has multiple versions by default it will use the first one
+ if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM platform
+ builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podDisruptive:
+ description: PodDisruptive specifies whether using the trait will
+ cause the pod to restart or not.
+ type: boolean
+ revisionEnabled:
+ description: Revision indicates whether a trait is aware of component
+ revision
+ type: boolean
+ schematic:
+ description: Schematic defines the data format and template of the
+ encapsulation of the trait
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template data
+ of the capability, it will replace the old CUE template
+ in extension field. Template is a required field if CUE
+ is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm module
+ properties:
+ release:
+ description: Release records a Helm release used by a Helm
+ module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable parameter
+ of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array of fields
+ within this workload that will be overwritten by the
+ value of this parameter. \tAll fields must be of the
+ same type. Fields are specified as JSON field paths
+ without a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not a value
+ for this parameter must be supplied when authoring
+ an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of the parameter
+ value, and only supports basic data types: string,
+ number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud resources
+ managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and status message
+ for trait
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status message that
+ could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy for
+ the abstraction
+ type: string
+ type: object
+ workloadRefPath:
+ description: WorkloadRefPath indicates where/if a trait accepts a
+ workloadRef object
+ type: string
+ type: object
+ status:
+ description: TraitDefinitionStatus is the status of TraitDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains OpenAPI
+ V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the trait definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of
+ ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources:
+ status: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.appliesToWorkloads
+ name: APPLIES-TO
+ type: string
+ - jsonPath: .metadata.annotations.definition\.oam\.dev/description
+ name: DESCRIPTION
+ type: string
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: A TraitDefinition registers a kind of Kubernetes custom resource
+ as a valid OAM trait kind by referencing its CustomResourceDefinition. The
+ CRD is used to validate the schema of the trait when it is embedded in an
+ OAM ApplicationConfiguration.
+ 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: A TraitDefinitionSpec defines the desired state of a TraitDefinition.
+ properties:
+ appliesToWorkloads:
+ description: AppliesToWorkloads specifies the list of workload kinds
+ this trait applies to. Workload kinds are specified in kind.group/version
+ format, e.g. server.core.oam.dev/v1alpha2. Traits that omit this
+ field apply to all workload kinds.
+ items:
+ type: string
+ type: array
+ conflictsWith:
+ description: 'ConflictsWith specifies the list of traits(CRD name,
+ Definition name, CRD group) which could not apply to the same workloads
+ with this trait. Traits that omit this field can work with any other
+ traits. Example rules: "service" # Trait definition name "services.k8s.io"
+ # API resource/crd name "*.networking.k8s.io" # API group "labelSelector:foo=bar"
+ # label selector labelSelector format: https://pkg.go.dev/k8s.io/apimachinery/pkg/labels#Parse'
+ items:
+ type: string
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that defines
+ this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be used if
+ CRD has multiple versions by default it will use the first one
+ if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM platform
+ builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ manageWorkload:
+ description: ManageWorkload defines the trait would be responsible
+ for creating the workload
+ type: boolean
+ podDisruptive:
+ description: PodDisruptive specifies whether using the trait will
+ cause the pod to restart or not.
+ type: boolean
+ revisionEnabled:
+ description: Revision indicates whether a trait is aware of component
+ revision
+ type: boolean
+ schematic:
+ description: Schematic defines the data format and template of the
+ encapsulation of the trait
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template data
+ of the capability, it will replace the old CUE template
+ in extension field. Template is a required field if CUE
+ is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm module
+ properties:
+ release:
+ description: Release records a Helm release used by a Helm
+ module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable parameter
+ of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array of fields
+ within this workload that will be overwritten by the
+ value of this parameter. \tAll fields must be of the
+ same type. Fields are specified as JSON field paths
+ without a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not a value
+ for this parameter must be supplied when authoring
+ an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of the parameter
+ value, and only supports basic data types: string,
+ number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud resources
+ managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ skipRevisionAffect:
+ description: SkipRevisionAffect defines the update this trait will
+ not generate a new application Revision
+ type: boolean
+ status:
+ description: Status defines the custom health policy and status message
+ for trait
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status message that
+ could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy for
+ the abstraction
+ type: string
+ type: object
+ workloadRefPath:
+ description: WorkloadRefPath indicates where/if a trait accepts a
+ workloadRef object
+ type: string
+ type: object
+ status:
+ description: TraitDefinitionStatus is the status of TraitDefinition
+ 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
+ configMapRef:
+ description: ConfigMapRef refer to a ConfigMap which contains OpenAPI
+ V3 JSON schema of Component parameters.
+ type: string
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of
+ ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_workflowstepdefinitions.yaml b/charts/vela-minimal/crds/core.oam.dev_workflowstepdefinitions.yaml
new file mode 100644
index 000000000..a54f9ce98
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_workflowstepdefinitions.yaml
@@ -0,0 +1,227 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: workflowstepdefinitions.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: WorkflowStepDefinition
+ listKind: WorkflowStepDefinitionList
+ plural: workflowstepdefinitions
+ shortNames:
+ - workflowstep
+ singular: workflowstepdefinition
+ scope: Namespaced
+ versions:
+ - name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: WorkflowStepDefinition is the Schema for the workflowstepdefinitions
+ 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: WorkflowStepDefinitionSpec defines the desired state of WorkflowStepDefinition
+ properties:
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that defines
+ this trait kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be used if
+ CRD has multiple versions by default it will use the first one
+ if not specified
+ type: string
+ required:
+ - name
+ type: object
+ schematic:
+ description: Schematic defines the data format and template of the
+ encapsulation of the workflow step definition
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template data
+ of the capability, it will replace the old CUE template
+ in extension field. Template is a required field if CUE
+ is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm module
+ properties:
+ release:
+ description: Release records a Helm release used by a Helm
+ module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable parameter
+ of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array of fields
+ within this workload that will be overwritten by the
+ value of this parameter. \tAll fields must be of the
+ same type. Fields are specified as JSON field paths
+ without a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not a value
+ for this parameter must be supplied when authoring
+ an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of the parameter
+ value, and only supports basic data types: string,
+ number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud resources
+ managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ type: object
+ status:
+ description: WorkflowStepDefinitionStatus is the status of WorkflowStepDefinition
+ 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
+ latestRevision:
+ description: LatestRevision of the component definition
+ properties:
+ name:
+ type: string
+ revision:
+ format: int64
+ type: integer
+ revisionHash:
+ description: RevisionHash record the hash value of the spec of
+ ApplicationRevision object.
+ type: string
+ required:
+ - name
+ - revision
+ type: object
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/core.oam.dev_workloaddefinitions.yaml b/charts/vela-minimal/crds/core.oam.dev_workloaddefinitions.yaml
new file mode 100644
index 000000000..fd6312b6a
--- /dev/null
+++ b/charts/vela-minimal/crds/core.oam.dev_workloaddefinitions.yaml
@@ -0,0 +1,516 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: workloaddefinitions.core.oam.dev
+spec:
+ group: core.oam.dev
+ names:
+ categories:
+ - oam
+ kind: WorkloadDefinition
+ listKind: WorkloadDefinitionList
+ plural: workloaddefinitions
+ shortNames:
+ - workload
+ singular: workloaddefinition
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .spec.definitionRef.name
+ name: DEFINITION-NAME
+ type: string
+ name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: A WorkloadDefinition registers a kind of Kubernetes custom resource
+ as a valid OAM workload kind by referencing its CustomResourceDefinition.
+ The CRD is used to validate the schema of the workload when it is embedded
+ in an OAM Component.
+ 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: A WorkloadDefinitionSpec defines the desired state of a WorkloadDefinition.
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the child resources
+ this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes resource
+ kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources that the
+ workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that defines
+ this workload kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be used if
+ CRD has multiple versions by default it will use the first one
+ if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM platform
+ builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload has K8s
+ podSpec field if one workload has podSpec, trait can do lot's of
+ assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying resources(e.g.
+ pods) of this workload can be used by trait to create resource selectors(e.g.
+ label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template of the
+ encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template data
+ of the capability, it will replace the old CUE template
+ in extension field. Template is a required field if CUE
+ is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm module
+ properties:
+ release:
+ description: Release records a Helm release used by a Helm
+ module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable parameter
+ of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array of fields
+ within this workload that will be overwritten by the
+ value of this parameter. \tAll fields must be of the
+ same type. Fields are specified as JSON field paths
+ without a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not a value
+ for this parameter must be supplied when authoring
+ an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of the parameter
+ value, and only supports basic data types: string,
+ number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud resources
+ managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and status message
+ for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status message that
+ could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy for
+ the abstraction
+ type: string
+ type: object
+ required:
+ - definitionRef
+ type: object
+ status:
+ description: WorkloadDefinitionStatus is the status of WorkloadDefinition
+ 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
+ type: object
+ type: object
+ served: true
+ storage: false
+ subresources: {}
+ - additionalPrinterColumns:
+ - jsonPath: .spec.definitionRef.name
+ name: DEFINITION-NAME
+ type: string
+ - jsonPath: .metadata.annotations.definition\.oam\.dev/description
+ name: DESCRIPTION
+ type: string
+ name: v1beta1
+ schema:
+ openAPIV3Schema:
+ description: A WorkloadDefinition registers a kind of Kubernetes custom resource
+ as a valid OAM workload kind by referencing its CustomResourceDefinition.
+ The CRD is used to validate the schema of the workload when it is embedded
+ in an OAM Component.
+ 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: A WorkloadDefinitionSpec defines the desired state of a WorkloadDefinition.
+ properties:
+ childResourceKinds:
+ description: ChildResourceKinds are the list of GVK of the child resources
+ this workload generates
+ items:
+ description: A ChildResourceKind defines a child Kubernetes resource
+ kind with a selector
+ properties:
+ apiVersion:
+ description: APIVersion of the child resource
+ type: string
+ kind:
+ description: Kind of the child resource
+ type: string
+ selector:
+ additionalProperties:
+ type: string
+ description: Selector to select the child resources that the
+ workload wants to expose to traits
+ type: object
+ required:
+ - apiVersion
+ - kind
+ type: object
+ type: array
+ definitionRef:
+ description: Reference to the CustomResourceDefinition that defines
+ this workload kind.
+ properties:
+ name:
+ description: Name of the referenced CustomResourceDefinition.
+ type: string
+ version:
+ description: Version indicate which version should be used if
+ CRD has multiple versions by default it will use the first one
+ if not specified
+ type: string
+ required:
+ - name
+ type: object
+ extension:
+ description: Extension is used for extension needs by OAM platform
+ builders
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ podSpecPath:
+ description: PodSpecPath indicates where/if this workload has K8s
+ podSpec field if one workload has podSpec, trait can do lot's of
+ assumption such as port, env, volume fields.
+ type: string
+ revisionLabel:
+ description: RevisionLabel indicates which label for underlying resources(e.g.
+ pods) of this workload can be used by trait to create resource selectors(e.g.
+ label selector for pods).
+ type: string
+ schematic:
+ description: Schematic defines the data format and template of the
+ encapsulation of the workload
+ properties:
+ cue:
+ description: CUE defines the encapsulation in CUE format
+ properties:
+ template:
+ description: Template defines the abstraction template data
+ of the capability, it will replace the old CUE template
+ in extension field. Template is a required field if CUE
+ is defined in Capability Definition.
+ type: string
+ required:
+ - template
+ type: object
+ helm:
+ description: A Helm represents resources used by a Helm module
+ properties:
+ release:
+ description: Release records a Helm release used by a Helm
+ module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ repository:
+ description: HelmRelease records a Helm repository used by
+ a Helm module workload.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - release
+ - repository
+ type: object
+ kube:
+ description: Kube defines the encapsulation in raw Kubernetes
+ resource format
+ properties:
+ parameters:
+ description: Parameters defines configurable parameters
+ items:
+ description: A KubeParameter defines a configurable parameter
+ of a component.
+ properties:
+ description:
+ description: Description of this parameter.
+ type: string
+ fieldPaths:
+ description: "FieldPaths specifies an array of fields
+ within this workload that will be overwritten by the
+ value of this parameter. \tAll fields must be of the
+ same type. Fields are specified as JSON field paths
+ without a leading dot, for example 'spec.replicas'."
+ items:
+ type: string
+ type: array
+ name:
+ description: Name of this parameter
+ type: string
+ required:
+ default: false
+ description: Required specifies whether or not a value
+ for this parameter must be supplied when authoring
+ an Application.
+ type: boolean
+ type:
+ description: 'ValueType indicates the type of the parameter
+ value, and only supports basic data types: string,
+ number, boolean.'
+ enum:
+ - string
+ - number
+ - boolean
+ type: string
+ required:
+ - fieldPaths
+ - name
+ - type
+ type: object
+ type: array
+ template:
+ description: Template defines the raw Kubernetes resource
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ required:
+ - template
+ type: object
+ terraform:
+ description: Terraform is the struct to describe cloud resources
+ managed by Hashicorp Terraform
+ properties:
+ configuration:
+ description: Configuration is Terraform Configuration
+ type: string
+ type:
+ default: hcl
+ description: Type specifies which Terraform configuration
+ it is, HCL or JSON syntax
+ enum:
+ - hcl
+ - json
+ type: string
+ required:
+ - configuration
+ type: object
+ type: object
+ status:
+ description: Status defines the custom health policy and status message
+ for workload
+ properties:
+ customStatus:
+ description: CustomStatus defines the custom status message that
+ could display to user
+ type: string
+ healthPolicy:
+ description: HealthPolicy defines the health check policy for
+ the abstraction
+ type: string
+ type: object
+ required:
+ - definitionRef
+ type: object
+ status:
+ description: WorkloadDefinitionStatus is the status of WorkloadDefinition
+ 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
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/crds/standard.oam.dev_rollouts.yaml b/charts/vela-minimal/crds/standard.oam.dev_rollouts.yaml
new file mode 100644
index 000000000..017ad228a
--- /dev/null
+++ b/charts/vela-minimal/crds/standard.oam.dev_rollouts.yaml
@@ -0,0 +1,482 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ name: rollouts.standard.oam.dev
+spec:
+ group: standard.oam.dev
+ names:
+ categories:
+ - oam
+ kind: Rollout
+ listKind: RolloutList
+ plural: rollouts
+ shortNames:
+ - rollout
+ singular: rollout
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - jsonPath: .status.rolloutTargetSize
+ name: TARGET
+ type: string
+ - jsonPath: .status.upgradedReplicas
+ name: UPGRADED
+ type: string
+ - jsonPath: .status.upgradedReadyReplicas
+ name: READY
+ type: string
+ - jsonPath: .status.batchRollingState
+ name: BATCH-STATE
+ type: string
+ - jsonPath: .status.rollingState
+ name: ROLLING-STATE
+ type: string
+ - jsonPath: .metadata.creationTimestamp
+ name: AGE
+ type: date
+ name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: Rollout is the Schema for the Rollout 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: RolloutSpec defines how to describe an update between different
+ compRevision
+ properties:
+ componentName:
+ description: ComponentName specify the component name
+ type: string
+ rolloutPlan:
+ description: RolloutPlan is the details on how to rollout the resources
+ properties:
+ batchPartition:
+ description: All pods in the batches up to the batchPartition
+ (included) will have the target resource specification while
+ the rest still have the source resource This is designed for
+ the operators to manually rollout Default is the the number
+ of batches which will rollout all the batches
+ format: int32
+ type: integer
+ canaryMetric:
+ description: CanaryMetric provides a way for the rollout process
+ to automatically check certain metrics before complete the process
+ items:
+ description: CanaryMetric holds the reference to metrics used
+ for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows size
+ type: string
+ metricsRange:
+ description: Range value accepted for this metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric template object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object instead
+ of an entire object, this string should contain a
+ valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container
+ within a pod, this would take on a value like: "spec.containers{name}"
+ (where "name" refers to the name of the container
+ that triggered the event) or if no container name
+ is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only to
+ have some well-defined way of referencing a part of
+ an object. TODO: this design is not final and this
+ field is subject to change in the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which this
+ reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ numBatches:
+ description: The number of batches, default = 1
+ format: int32
+ type: integer
+ paused:
+ description: Paused the rollout, default is false
+ type: boolean
+ rolloutBatches:
+ description: The exact distribution among batches. its size has
+ to be exactly the same as the NumBatches (if set) The total
+ number cannot exceed the targetSize or the size of the source
+ resource We will IGNORE the last batch's replica field if it's
+ a percentage since round errors can lead to inaccurate sum We
+ highly recommend to leave the last batch's replica field empty
+ items:
+ description: RolloutBatch is used to describe how the each batch
+ rollout should be
+ properties:
+ batchRolloutWebhooks:
+ description: RolloutWebhooks provides a way for the batch
+ rollout to interact with an external process
+ items:
+ description: RolloutWebhook holds the reference to external
+ checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the expected
+ http status code that we will accept as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for this webhook
+ type: object
+ method:
+ description: Method the HTTP call method, default
+ is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ canaryMetric:
+ description: CanaryMetric provides a way for the batch rollout
+ process to automatically check certain metrics before
+ moving to the next batch
+ items:
+ description: CanaryMetric holds the reference to metrics
+ used for canary analysis
+ properties:
+ interval:
+ description: Interval represents the windows size
+ type: string
+ metricsRange:
+ description: Range value accepted for this metric
+ properties:
+ max:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Maximum value
+ x-kubernetes-int-or-string: true
+ min:
+ anyOf:
+ - type: integer
+ - type: string
+ description: Minimum value
+ x-kubernetes-int-or-string: true
+ type: object
+ name:
+ description: Name of the metric
+ type: string
+ templateRef:
+ description: TemplateRef references a metric template
+ object
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: 'If referring to a piece of an object
+ instead of an entire object, this string should
+ contain a valid JSON/Go field access statement,
+ such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a
+ container within a pod, this would take on a
+ value like: "spec.containers{name}" (where "name"
+ refers to the name of the container that triggered
+ the event) or if no container name is specified
+ "spec.containers[2]" (container with index 2
+ in this pod). This syntax is chosen only to
+ have some well-defined way of referencing a
+ part of an object. TODO: this design is not
+ final and this field is subject to change in
+ the future.'
+ type: string
+ kind:
+ description: 'Kind of the referent. More info:
+ https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
+ type: string
+ name:
+ description: 'Name of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+ type: string
+ namespace:
+ description: 'Namespace of the referent. More
+ info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
+ type: string
+ resourceVersion:
+ description: 'Specific resourceVersion to which
+ this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
+ type: string
+ uid:
+ description: 'UID of the referent. More info:
+ https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
+ type: string
+ type: object
+ required:
+ - name
+ type: object
+ type: array
+ instanceInterval:
+ description: The wait time, in seconds, between instances
+ upgrades, default = 0
+ format: int32
+ type: integer
+ maxUnavailable:
+ anyOf:
+ - type: integer
+ - type: string
+ description: MaxUnavailable is the max allowed number of
+ pods that is unavailable during the upgrade. We will mark
+ the batch as ready as long as there are less or equal
+ number of pods unavailable than this number. default =
+ 0
+ x-kubernetes-int-or-string: true
+ podList:
+ description: The list of Pods to get upgraded it is mutually
+ exclusive with the Replicas field
+ items:
+ type: string
+ type: array
+ replicas:
+ anyOf:
+ - type: integer
+ - type: string
+ description: 'Replicas is the number of pods to upgrade
+ in this batch it can be an absolute number (ex: 5) or
+ a percentage of total pods we will ignore the percentage
+ of the last batch to just fill the gap it is mutually
+ exclusive with the PodList field'
+ x-kubernetes-int-or-string: true
+ type: object
+ type: array
+ rolloutStrategy:
+ description: RolloutStrategy defines strategies for the rollout
+ plan The default is IncreaseFirstRolloutStrategyType
+ type: string
+ rolloutWebhooks:
+ description: RolloutWebhooks provide a way for the rollout to
+ interact with an external process
+ items:
+ description: RolloutWebhook holds the reference to external
+ checks used for canary analysis
+ properties:
+ expectedStatus:
+ description: ExpectedStatus contains all the expected http
+ status code that we will accept as success
+ items:
+ type: integer
+ type: array
+ metadata:
+ additionalProperties:
+ type: string
+ description: Metadata (key-value pairs) for this webhook
+ type: object
+ method:
+ description: Method the HTTP call method, default is POST
+ type: string
+ name:
+ description: Name of this webhook
+ type: string
+ type:
+ description: Type of this webhook
+ type: string
+ url:
+ description: URL address of this webhook
+ type: string
+ required:
+ - name
+ - type
+ - url
+ type: object
+ type: array
+ targetSize:
+ description: The size of the target resource. The default is the
+ same as the size of the source resource.
+ format: int32
+ type: integer
+ type: object
+ sourceRevisionName:
+ description: SourceRevisionName contains the name of the componentRevisionName that
+ we need to upgrade from. it can be empty only when it's the first
+ time to deploy the application
+ type: string
+ targetRevisionName:
+ description: TargetRevisionName contains the name of the componentRevisionName
+ that we need to upgrade to.
+ type: string
+ required:
+ - componentName
+ - rolloutPlan
+ - targetRevisionName
+ type: object
+ status:
+ description: CompRolloutStatus defines the observed state of rollout
+ properties:
+ LastSourceRevision:
+ description: LastSourceRevision contains the name of the componentRevisionName
+ that we need to upgrade from. We will restart the rollout if this
+ is not the same as the spec
+ type: string
+ batchRollingState:
+ description: BatchRollingState only meaningful when the Status is
+ rolling
+ type: string
+ 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
+ currentBatch:
+ description: The current batch the rollout is working on/blocked it
+ starts from 0
+ format: int32
+ type: integer
+ lastAppliedPodTemplateIdentifier:
+ description: lastAppliedPodTemplateIdentifier is a string that uniquely
+ represent the last pod template each workload type could use different
+ ways to identify that so we cannot compare between resources We
+ update this field only after a successful rollout
+ type: string
+ lastTargetRevision:
+ description: LastUpgradedTargetRevision contains the name of the componentRevisionName
+ that we upgraded to We will restart the rollout if this is not the
+ same as the spec
+ type: string
+ rollingState:
+ description: RollingState is the Rollout State
+ type: string
+ rolloutOriginalSize:
+ description: RolloutTargetSize is the size of the target resources.
+ This is determined once the initial spec verification and does not
+ change until the rollout is restarted
+ format: int32
+ type: integer
+ rolloutTargetSize:
+ description: RolloutTargetSize is the size of the target resources.
+ This is determined once the initial spec verification and does not
+ change until the rollout is restarted
+ format: int32
+ type: integer
+ targetGeneration:
+ description: NewPodTemplateIdentifier is a string that uniquely represent
+ the new pod template each workload type could use different ways
+ to identify that so we cannot compare between resources
+ type: string
+ upgradedReadyReplicas:
+ description: UpgradedReadyReplicas is the number of Pods upgraded
+ by the rollout controller that have a Ready Condition.
+ format: int32
+ type: integer
+ upgradedReplicas:
+ description: UpgradedReplicas is the number of Pods upgraded by the
+ rollout controller
+ format: int32
+ type: integer
+ required:
+ - currentBatch
+ - lastTargetRevision
+ - rollingState
+ - upgradedReadyReplicas
+ - upgradedReplicas
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/charts/vela-minimal/templates/NOTES.txt b/charts/vela-minimal/templates/NOTES.txt
new file mode 100644
index 000000000..2abe8235b
--- /dev/null
+++ b/charts/vela-minimal/templates/NOTES.txt
@@ -0,0 +1 @@
+Welcome to use the KubeVela! Enjoy your shipping application journey!
\ No newline at end of file
diff --git a/charts/vela-minimal/templates/_helpers.tpl b/charts/vela-minimal/templates/_helpers.tpl
new file mode 100644
index 000000000..396aee7c9
--- /dev/null
+++ b/charts/vela-minimal/templates/_helpers.tpl
@@ -0,0 +1,73 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "kubevela.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "kubevela.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "kubevela.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Common labels
+*/}}
+{{- define "kubevela.labels" -}}
+helm.sh/chart: {{ include "kubevela.chart" . }}
+{{ include "kubevela.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "kubevela.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "kubevela.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+
+{{- define "kubevela-apiserver.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "kubevela.name" . }}-apiserver
+app.kubernetes.io/instance: {{ .Release.Name }}-apiserver
+{{- end -}}
+
+{{- define "kubevela-cluster-gateway.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "kubevela.name" . }}-cluster-gateway
+app.kubernetes.io/instance: {{ .Release.Name }}-cluster-gateway
+{{- end -}}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "kubevela.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create -}}
+ {{ default (include "kubevela.fullname" .) .Values.serviceAccount.name }}
+{{- else -}}
+ {{ default "default" .Values.serviceAccount.name }}
+{{- end -}}
+{{- end -}}
diff --git a/charts/vela-minimal/templates/admission-webhooks/job-patch/clusterrole.yaml b/charts/vela-minimal/templates/admission-webhooks/job-patch/clusterrole.yaml
new file mode 100644
index 000000000..96b0ba33f
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/job-patch/clusterrole.yaml
@@ -0,0 +1,28 @@
+{{- if and .Values.admissionWebhooks.enabled .Values.admissionWebhooks.patch.enabled .Values.rbac.create (not .Values.admissionWebhooks.certManager.enabled) }}
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission
+ annotations:
+ "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
+ "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
+ labels:
+ app: {{ template "kubevela.name" . }}-admission
+ {{- include "kubevela.labels" . | nindent 4 }}
+rules:
+ - apiGroups:
+ - admissionregistration.k8s.io
+ resources:
+ - validatingwebhookconfigurations
+ - mutatingwebhookconfigurations
+ verbs:
+ - get
+ - update
+ - apiGroups:
+ - apiextensions.k8s.io
+ resources:
+ - customresourcedefinitions
+ verbs:
+ - get
+ - update
+{{- end }}
diff --git a/charts/vela-minimal/templates/admission-webhooks/job-patch/clusterrolebinding.yaml b/charts/vela-minimal/templates/admission-webhooks/job-patch/clusterrolebinding.yaml
new file mode 100644
index 000000000..649bb7138
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/job-patch/clusterrolebinding.yaml
@@ -0,0 +1,20 @@
+{{- if and .Values.admissionWebhooks.enabled .Values.admissionWebhooks.patch.enabled .Values.rbac.create (not .Values.admissionWebhooks.certManager.enabled) }}
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission
+ annotations:
+ "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
+ "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
+ labels:
+ app: {{ template "kubevela.name" . }}-admission
+ {{- include "kubevela.labels" . | nindent 4 }}
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: {{ template "kubevela.fullname" . }}-admission
+subjects:
+ - kind: ServiceAccount
+ name: {{ template "kubevela.fullname" . }}-admission
+ namespace: {{ .Release.Namespace }}
+{{- end }}
diff --git a/charts/vela-minimal/templates/admission-webhooks/job-patch/job-createSecret.yaml b/charts/vela-minimal/templates/admission-webhooks/job-patch/job-createSecret.yaml
new file mode 100644
index 000000000..b62f91dc1
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/job-patch/job-createSecret.yaml
@@ -0,0 +1,50 @@
+{{- if and .Values.admissionWebhooks.enabled .Values.admissionWebhooks.patch.enabled (not .Values.admissionWebhooks.certManager.enabled) }}
+apiVersion: batch/v1
+kind: Job
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission-create
+ namespace: {{ .Release.Namespace }}
+ annotations:
+ "helm.sh/hook": pre-install,pre-upgrade
+ "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
+ labels:
+ app: {{ template "kubevela.name" . }}-admission-create
+ {{- include "kubevela.labels" . | nindent 4 }}
+spec:
+ {{- if .Capabilities.APIVersions.Has "batch/v1alpha1" }}
+ # Alpha feature since k8s 1.12
+ ttlSecondsAfterFinished: 0
+ {{- end }}
+ template:
+ metadata:
+ name: {{ template "kubevela.fullname" . }}-admission-create
+ labels:
+ app: {{ template "kubevela.name" . }}-admission-create
+ {{- include "kubevela.labels" . | nindent 8 }}
+ spec:
+ containers:
+ - name: create
+ image: {{ .Values.admissionWebhooks.patch.image.repository }}:{{ .Values.admissionWebhooks.patch.image.tag }}
+ imagePullPolicy: {{ .Values.admissionWebhooks.patch.image.pullPolicy }}
+ args:
+ - create
+ - --host={{ template "kubevela.name" . }}-webhook,{{ template "kubevela.name" . }}-webhook.{{ .Release.Namespace }}.svc
+ - --namespace={{ .Release.Namespace }}
+ - --secret-name={{ template "kubevela.fullname" . }}-admission
+ - --key-name=tls.key
+ - --cert-name=tls.crt
+ restartPolicy: OnFailure
+ serviceAccountName: {{ template "kubevela.fullname" . }}-admission
+ {{- with .Values.admissionWebhooks.patch.affinity }}
+ affinity:
+{{ toYaml . | indent 8 }}
+ {{- end }}
+ {{- with .Values.admissionWebhooks.patch.tolerations }}
+ tolerations:
+{{ toYaml . | indent 8 }}
+ {{- end }}
+ securityContext:
+ runAsGroup: 2000
+ runAsNonRoot: true
+ runAsUser: 2000
+{{- end }}
diff --git a/charts/vela-minimal/templates/admission-webhooks/job-patch/job-patchWebhook.yaml b/charts/vela-minimal/templates/admission-webhooks/job-patch/job-patchWebhook.yaml
new file mode 100644
index 000000000..03744aeed
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/job-patch/job-patchWebhook.yaml
@@ -0,0 +1,50 @@
+{{- if and .Values.admissionWebhooks.enabled .Values.admissionWebhooks.patch.enabled (not .Values.admissionWebhooks.certManager.enabled) }}
+apiVersion: batch/v1
+kind: Job
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission-patch
+ namespace: {{ .Release.Namespace }}
+ annotations:
+ "helm.sh/hook": post-install,post-upgrade
+ "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
+ labels:
+ app: {{ template "kubevela.name" . }}-admission-patch
+ {{- include "kubevela.labels" . | nindent 4 }}
+spec:
+ {{- if .Capabilities.APIVersions.Has "batch/v1alpha1" }}
+ # Alpha feature since k8s 1.12
+ ttlSecondsAfterFinished: 0
+ {{- end }}
+ template:
+ metadata:
+ name: {{ template "kubevela.fullname" . }}-admission-patch
+ labels:
+ app: {{ template "kubevela.name" . }}-admission-patch
+ {{- include "kubevela.labels" . | nindent 8 }}
+ spec:
+ containers:
+ - name: patch
+ image: {{ .Values.admissionWebhooks.patch.image.repository }}:{{ .Values.admissionWebhooks.patch.image.tag }}
+ imagePullPolicy: {{ .Values.admissionWebhooks.patch.image.pullPolicy }}
+ args:
+ - patch
+ - --webhook-name={{ template "kubevela.fullname" . }}-admission
+ - --namespace={{ .Release.Namespace }}
+ - --secret-name={{ template "kubevela.fullname" . }}-admission
+ - --patch-failure-policy={{ .Values.admissionWebhooks.failurePolicy }}
+ - --crds=applications.core.oam.dev
+ restartPolicy: OnFailure
+ serviceAccountName: {{ template "kubevela.fullname" . }}-admission
+ {{- with .Values.admissionWebhooks.patch.affinity }}
+ affinity:
+{{ toYaml . | indent 8 }}
+ {{- end }}
+ {{- with .Values.admissionWebhooks.patch.tolerations }}
+ tolerations:
+{{ toYaml . | indent 8 }}
+ {{- end }}
+ securityContext:
+ runAsGroup: 2000
+ runAsNonRoot: true
+ runAsUser: 2000
+{{- end }}
diff --git a/charts/vela-minimal/templates/admission-webhooks/job-patch/role.yaml b/charts/vela-minimal/templates/admission-webhooks/job-patch/role.yaml
new file mode 100644
index 000000000..cf3d7dd33
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/job-patch/role.yaml
@@ -0,0 +1,21 @@
+{{- if and .Values.admissionWebhooks.enabled .Values.admissionWebhooks.patch.enabled .Values.rbac.create (not .Values.admissionWebhooks.certManager.enabled) }}
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission
+ namespace: {{ .Release.Namespace }}
+ annotations:
+ "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
+ "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
+ labels:
+ app: {{ template "kubevela.name" . }}-admission
+ {{- include "kubevela.labels" . | nindent 4 }}
+rules:
+ - apiGroups:
+ - ""
+ resources:
+ - secrets
+ verbs:
+ - get
+ - create
+{{- end }}
diff --git a/charts/vela-minimal/templates/admission-webhooks/job-patch/rolebinding.yaml b/charts/vela-minimal/templates/admission-webhooks/job-patch/rolebinding.yaml
new file mode 100644
index 000000000..cffdc0f54
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/job-patch/rolebinding.yaml
@@ -0,0 +1,21 @@
+{{- if and .Values.admissionWebhooks.enabled .Values.admissionWebhooks.patch.enabled .Values.rbac.create (not .Values.admissionWebhooks.certManager.enabled) }}
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission
+ namespace: {{ .Release.Namespace }}
+ annotations:
+ "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
+ "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
+ labels:
+ app: {{ template "kubevela.name" . }}-admission
+ {{- include "kubevela.labels" . | nindent 4 }}
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: Role
+ name: {{ template "kubevela.fullname" . }}-admission
+subjects:
+ - kind: ServiceAccount
+ name: {{ template "kubevela.fullname" . }}-admission
+ namespace: {{ .Release.Namespace }}
+{{- end }}
diff --git a/charts/vela-minimal/templates/admission-webhooks/job-patch/serviceaccount.yaml b/charts/vela-minimal/templates/admission-webhooks/job-patch/serviceaccount.yaml
new file mode 100644
index 000000000..4e56267de
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/job-patch/serviceaccount.yaml
@@ -0,0 +1,13 @@
+{{- if and .Values.admissionWebhooks.enabled .Values.admissionWebhooks.patch.enabled .Values.rbac.create (not .Values.admissionWebhooks.certManager.enabled) }}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission
+ namespace: {{ .Release.Namespace }}
+ annotations:
+ "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade
+ "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
+ labels:
+ app: {{ template "kubevela.name" . }}-admission
+ {{- include "kubevela.labels" . | nindent 4 }}
+{{- end }}
diff --git a/charts/vela-minimal/templates/admission-webhooks/mutatingWebhookConfiguration.yaml b/charts/vela-minimal/templates/admission-webhooks/mutatingWebhookConfiguration.yaml
new file mode 100644
index 000000000..4be28e852
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/mutatingWebhookConfiguration.yaml
@@ -0,0 +1,122 @@
+{{- if .Values.admissionWebhooks.enabled -}}
+apiVersion: admissionregistration.k8s.io/v1
+kind: MutatingWebhookConfiguration
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission
+ namespace: {{ .Release.Namespace }}
+ {{- if .Values.admissionWebhooks.certManager.enabled }}
+ annotations:
+ cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kubevela.fullname" .) | quote }}
+ {{- end }}
+webhooks:
+ {{- if eq .Values.OAMSpecVer "all"}}
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /mutating-core-oam-dev-v1alpha2-applicationconfigurations
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: Fail
+ {{- end }}
+ name: mutating.core.oam.dev.v1alpha2.applicationconfigurations
+ sideEffects: None
+ rules:
+ - apiGroups:
+ - core.oam.dev
+ apiVersions:
+ - v1alpha2
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - applicationconfigurations
+ scope: Namespaced
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ timeoutSeconds: 5
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /mutating-core-oam-dev-v1alpha2-components
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: Fail
+ {{- end }}
+ name: mutating.core.oam-dev.v1alpha2.components
+ sideEffects: None
+ rules:
+ - apiGroups:
+ - core.oam.dev
+ apiVersions:
+ - v1alpha2
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - components
+ scope: Namespaced
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ timeoutSeconds: 5
+ {{- end }}
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /mutate-standard-oam-dev-v1alpha1-podspecworkload
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: Fail
+ {{- end }}
+ name: mcontainerized.kb.io
+ sideEffects: None
+ admissionReviewVersions:
+ - v1beta1
+ rules:
+ - apiGroups:
+ - standard.oam.dev
+ apiVersions:
+ - v1alpha1
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - podspecworkloads
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /mutating-core-oam-dev-v1beta1-componentdefinitions
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: Fail
+ {{- end }}
+ name: mutating.core.oam-dev.v1beta1.componentdefinitions
+ sideEffects: None
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ rules:
+ - apiGroups:
+ - core.oam.dev
+ apiVersions:
+ - v1beta1
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - componentdefinitions
+
+{{- end -}}
diff --git a/charts/vela-minimal/templates/admission-webhooks/validatingWebhookConfiguration.yaml b/charts/vela-minimal/templates/admission-webhooks/validatingWebhookConfiguration.yaml
new file mode 100644
index 000000000..3eb5d70cc
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/validatingWebhookConfiguration.yaml
@@ -0,0 +1,172 @@
+{{- if .Values.admissionWebhooks.enabled -}}
+apiVersion: admissionregistration.k8s.io/v1
+kind: ValidatingWebhookConfiguration
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission
+ namespace: {{ .Release.Namespace }}
+ {{- if .Values.admissionWebhooks.certManager.enabled }}
+ annotations:
+ cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kubevela.fullname" .) | quote }}
+ {{- end }}
+webhooks:
+ {{- if eq .Values.OAMSpecVer "all"}}
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /validating-core-oam-dev-v1alpha2-applicationconfigurations
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: {{ .Values.admissionWebhooks.failurePolicy }}
+ {{- end }}
+ name: validating.core.oam.dev.v1alpha2.applicationconfigurations
+ sideEffects: None
+ rules:
+ - apiGroups:
+ - core.oam.dev
+ apiVersions:
+ - v1alpha2
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - applicationconfigurations
+ scope: Namespaced
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ timeoutSeconds: 5
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /validating-core-oam-dev-v1alpha2-components
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: {{ .Values.admissionWebhooks.failurePolicy }}
+ {{- end }}
+ name: validating.core.oam.dev.v1alpha2.components
+ sideEffects: None
+ rules:
+ - apiGroups:
+ - core.oam.dev
+ apiVersions:
+ - v1alpha2
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - components
+ scope: Namespaced
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ timeoutSeconds: 5
+ {{- end }}
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /validating-core-oam-dev-v1alpha2-traitdefinitions
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: {{ .Values.admissionWebhooks.failurePolicy }}
+ {{- end }}
+ name: validating.core.oam.dev.v1alpha2.traitdefinitions
+ sideEffects: None
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ rules:
+ - apiGroups:
+ - core.oam.dev
+ apiVersions:
+ - v1alpha2
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - traitdefinitions
+ scope: Cluster
+ timeoutSeconds: 5
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /validate-standard-oam-dev-v1alpha1-podspecworkload
+ failurePolicy: Fail
+ name: vcontainerized.kb.io
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ sideEffects: None
+ rules:
+ - apiGroups:
+ - standard.oam.dev
+ apiVersions:
+ - v1alpha1
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - podspecworkloads
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /validating-core-oam-dev-v1beta1-applications
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: {{ .Values.admissionWebhooks.failurePolicy }}
+ {{- end }}
+ name: validating.core.oam.dev.v1beta1.applications
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ sideEffects: None
+ rules:
+ - apiGroups:
+ - core.oam.dev
+ apiVersions:
+ - v1beta1
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - applications
+ - clientConfig:
+ caBundle: Cg==
+ service:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ path: /validating-core-oam-dev-v1beta1-componentdefinitions
+ {{- if .Values.admissionWebhooks.patch.enabled }}
+ failurePolicy: Ignore
+ {{- else }}
+ failurePolicy: Fail
+ {{- end }}
+ name: validating.core.oam-dev.v1beta1.componentdefinitions
+ sideEffects: None
+ admissionReviewVersions:
+ - v1beta1
+ - v1
+ rules:
+ - apiGroups:
+ - core.oam.dev
+ apiVersions:
+ - v1beta1
+ operations:
+ - CREATE
+ - UPDATE
+ resources:
+ - componentdefinitions
+{{- end -}}
diff --git a/charts/vela-minimal/templates/admission-webhooks/webhookService.yaml b/charts/vela-minimal/templates/admission-webhooks/webhookService.yaml
new file mode 100644
index 000000000..ddfb54e74
--- /dev/null
+++ b/charts/vela-minimal/templates/admission-webhooks/webhookService.yaml
@@ -0,0 +1,19 @@
+{{- if .Values.admissionWebhooks.enabled -}}
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ template "kubevela.name" . }}-webhook
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "kubevela.labels" . | nindent 4 }}
+spec:
+ type: {{ .Values.webhookService.type }}
+ ports:
+ - port: 443
+ targetPort: {{ .Values.webhookService.port }}
+ protocol: TCP
+ name: https
+ selector:
+ {{ include "kubevela.selectorLabels" . | nindent 6 }}
+
+{{- end -}}
diff --git a/charts/vela-minimal/templates/certmanager.yaml b/charts/vela-minimal/templates/certmanager.yaml
new file mode 100644
index 000000000..a527d1e6e
--- /dev/null
+++ b/charts/vela-minimal/templates/certmanager.yaml
@@ -0,0 +1,53 @@
+{{- if and .Values.admissionWebhooks.certManager.enabled -}}
+
+# The following manifests contain a self-signed issuer CR and a certificate CR.
+# More document can be found at https://docs.cert-manager.io
+apiVersion: cert-manager.io/v1
+kind: Issuer
+metadata:
+ name: {{ template "kubevela.fullname" . }}-self-signed-issuer
+spec:
+ selfSigned: {}
+
+---
+# Generate a CA Certificate used to sign certificates for the webhook
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+ name: {{ template "kubevela.fullname" . }}-root-cert
+spec:
+ secretName: {{ template "kubevela.fullname" . }}-root-cert
+ duration: 43800h # 5y
+ issuerRef:
+ name: {{ template "kubevela.fullname" . }}-self-signed-issuer
+ commonName: "ca.webhook.kubevela"
+ isCA: true
+
+---
+# Create an Issuer that uses the above generated CA certificate to issue certs
+apiVersion: cert-manager.io/v1
+kind: Issuer
+metadata:
+ name: {{ template "kubevela.fullname" . }}-root-issuer
+ namespace: {{ .Release.Namespace }}
+spec:
+ ca:
+ secretName: {{ template "kubevela.fullname" . }}-root-cert
+
+---
+# generate a serving certificate for the apiservices to use
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+ name: {{ template "kubevela.fullname" . }}-admission
+ namespace: {{ .Release.Namespace }}
+spec:
+ secretName: {{ template "kubevela.fullname" . }}-admission
+ duration: 8760h # 1y
+ issuerRef:
+ name: {{ template "kubevela.fullname" . }}-root-issuer
+ dnsNames:
+ - {{ template "kubevela.name" . }}-webhook.{{ .Release.Namespace }}.svc
+ - {{ template "kubevela.name" . }}-webhook.{{ .Release.Namespace }}.svc.cluster.local
+
+{{- end }}
diff --git a/charts/vela-minimal/templates/cluster-gateway.yaml b/charts/vela-minimal/templates/cluster-gateway.yaml
new file mode 100644
index 000000000..944c59052
--- /dev/null
+++ b/charts/vela-minimal/templates/cluster-gateway.yaml
@@ -0,0 +1,88 @@
+{{ if .Values.multicluster.enabled }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ .Release.Name }}-cluster-gateway
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "kubevela.labels" . | nindent 4 }}
+spec:
+ replicas: {{ .Values.multicluster.clusterGateway.replicaCount }}
+ selector:
+ matchLabels:
+ {{- include "kubevela-cluster-gateway.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ labels:
+ {{- include "kubevela-cluster-gateway.selectorLabels" . | nindent 8 }}
+ spec:
+ {{- with .Values.imagePullSecrets }}
+ imagePullSecrets:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ serviceAccountName: {{ include "kubevela.serviceAccountName" . }}
+ securityContext:
+ {{- toYaml .Values.podSecurityContext | nindent 8 }}
+ containers:
+ - name: {{ include "kubevela.fullname" . }}-cluster-gateway
+ securityContext:
+ {{- toYaml .Values.securityContext | nindent 12 }}
+ args:
+ - "apiserver"
+ - "--secure-port={{ .Values.multicluster.clusterGateway.port }}"
+ - "--secret-namespace={{ .Release.Namespace }}"
+ - "--feature-gates=APIPriorityAndFairness=false"
+ image: {{ .Values.multicluster.clusterGateway.image.repository }}:{{ .Values.multicluster.clusterGateway.image.tag }}
+ imagePullPolicy: {{ .Values.multicluster.clusterGateway.image.pullPolicy }}
+ resources:
+ {{- toYaml .Values.multicluster.clusterGateway.resources | nindent 12 }}
+ ports:
+ - containerPort: {{ .Values.multicluster.clusterGateway.port }}
+ {{- with .Values.nodeSelector }}
+ nodeSelector:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.affinity }}
+ affinity:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.tolerations }}
+ tolerations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+{{ end }}
+---
+{{ if .Values.multicluster.enabled }}
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ .Release.Name }}-cluster-gateway-service
+ namespace: {{ .Release.Namespace }}
+spec:
+ selector:
+ {{- include "kubevela-cluster-gateway.selectorLabels" . | nindent 4 }}
+ ports:
+ - protocol: TCP
+ port: {{ .Values.multicluster.clusterGateway.port }}
+ targetPort: {{ .Values.multicluster.clusterGateway.port }}
+{{ end }}
+---
+{{ if .Values.multicluster.enabled }}
+apiVersion: apiregistration.k8s.io/v1
+kind: APIService
+metadata:
+ name: v1alpha1.cluster.core.oam.dev
+ labels:
+ api: cluster-extension-apiserver
+ apiserver: "true"
+spec:
+ version: v1alpha1
+ group: cluster.core.oam.dev
+ groupPriorityMinimum: 2000
+ service:
+ name: {{ .Release.Name }}-cluster-gateway-service
+ namespace: {{ .Release.Namespace }}
+ port: {{ .Values.multicluster.clusterGateway.port }}
+ versionPriority: 10
+ insecureSkipTLSVerify: true
+{{ end }}
diff --git a/charts/vela-minimal/templates/definitions/autodetect.yaml b/charts/vela-minimal/templates/definitions/autodetect.yaml
new file mode 100644
index 000000000..530aa6f73
--- /dev/null
+++ b/charts/vela-minimal/templates/definitions/autodetect.yaml
@@ -0,0 +1,10 @@
+apiVersion: core.oam.dev/v1beta1
+kind: WorkloadDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: "autodetects.core.oam.dev is the default workload type of ComponentDefinition"
+ name: autodetects.core.oam.dev
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ definitionRef:
+ name: autodetects.core.oam.dev
\ No newline at end of file
diff --git a/charts/vela-minimal/templates/definitions/healthscopes.yaml b/charts/vela-minimal/templates/definitions/healthscopes.yaml
new file mode 100644
index 000000000..fa3dbbf26
--- /dev/null
+++ b/charts/vela-minimal/templates/definitions/healthscopes.yaml
@@ -0,0 +1,10 @@
+apiVersion: core.oam.dev/v1beta1
+kind: ScopeDefinition
+metadata:
+ name: healthscopes.core.oam.dev
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ workloadRefsPath: spec.workloadRefs
+ allowComponentOverlap: true
+ definitionRef:
+ name: healthscopes.core.oam.dev
\ No newline at end of file
diff --git a/charts/vela-minimal/templates/defwithtemplate/annotations.yaml b/charts/vela-minimal/templates/defwithtemplate/annotations.yaml
new file mode 100644
index 000000000..34824c0d6
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/annotations.yaml
@@ -0,0 +1,30 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/annotations.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Add annotations on K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: annotations
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: {
+ metadata: annotations: {
+ for k, v in parameter {
+ "\(k)": v
+ }
+ }
+ spec: template: metadata: annotations: {
+ for k, v in parameter {
+ "\(k)": v
+ }
+ }
+ }
+ parameter: [string]: string
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/apply-application.yaml b/charts/vela-minimal/templates/defwithtemplate/apply-application.yaml
new file mode 100644
index 000000000..62409ab29
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/apply-application.yaml
@@ -0,0 +1,20 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/apply-application.cue
+apiVersion: core.oam.dev/v1beta1
+kind: WorkflowStepDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Apply application for your workflow steps
+ name: apply-application
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ import (
+ "vela/op"
+ )
+
+ // apply application
+ output: op.#ApplyApplication & {}
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/apply-component.yaml b/charts/vela-minimal/templates/defwithtemplate/apply-component.yaml
new file mode 100644
index 000000000..c49a987ef
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/apply-component.yaml
@@ -0,0 +1,26 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/apply-component.cue
+apiVersion: core.oam.dev/v1beta1
+kind: WorkflowStepDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Apply components and traits for your workflow steps
+ name: apply-component
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ import (
+ "vela/op"
+ )
+
+ // apply components and traits
+ apply: op.#ApplyComponent & {
+ component: parameter.component
+ }
+ parameter: {
+ // +usage=Declare the name of the component
+ component: string
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/apply-remaining.yaml b/charts/vela-minimal/templates/defwithtemplate/apply-remaining.yaml
new file mode 100644
index 000000000..44ae7ae8e
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/apply-remaining.yaml
@@ -0,0 +1,36 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/apply-remaining.cue
+apiVersion: core.oam.dev/v1beta1
+kind: WorkflowStepDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Apply remaining components and traits
+ name: apply-remaining
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ import (
+ "vela/op"
+ )
+
+ // apply remaining components and traits
+ apply: op.#ApplyRemaining & {
+ parameter
+ }
+ parameter: {
+ // +usage=Declare the name of the component
+ exceptions?: [componentName=string]: {
+ // +usage=skipApplyWorkload indicates whether to skip apply the workload resource
+ skipApplyWorkload: *true | bool
+
+ // +usage=skipAllTraits indicates to skip apply all resources of the traits.
+ // +usage=If this is true, skipApplyTraits will be ignored
+ skipAllTraits: *true | bool
+
+ // +usage=skipApplyTraits specifies the names of the traits to skip apply
+ skipApplyTraits: [...string]
+ }
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/configmap.yaml b/charts/vela-minimal/templates/defwithtemplate/configmap.yaml
new file mode 100644
index 000000000..e14beab07
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/configmap.yaml
@@ -0,0 +1,61 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/configmap.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Create/Attach configmaps on K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: configmap
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: spec: template: spec: {
+ containers: [{
+ // +patchKey=name
+ volumeMounts: [
+ for v in parameter.volumes {
+ {
+ name: "volume-\(v.name)"
+ mountPath: v.mountPath
+ readOnly: v.readOnly
+ }
+ },
+ ]
+ }, ...]
+ // +patchKey=name
+ volumes: [
+ for v in parameter.volumes {
+ {
+ name: "volume-\(v.name)"
+ configMap: name: v.name
+ }
+ },
+ ]
+ }
+ outputs: {
+ for v in parameter.volumes {
+ if v.data != _|_ {
+ "\(v.name)": {
+ apiVersion: "v1"
+ kind: "ConfigMap"
+ metadata: name: v.name
+ data: v.data
+ }
+ }
+ }
+ }
+ parameter: {
+ // +usage=Specify mounted configmap names and their mount paths in the container
+ volumes: [...{
+ name: string
+ mountPath: string
+ readOnly: *false | bool
+ data?: [string]: string
+ }]
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/cpuscaler.yaml b/charts/vela-minimal/templates/defwithtemplate/cpuscaler.yaml
new file mode 100644
index 000000000..2c15dc952
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/cpuscaler.yaml
@@ -0,0 +1,51 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/cpuscaler.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Automatically scale the component based on CPU usage.
+ name: cpuscaler
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - deployments.apps
+ schematic:
+ cue:
+ template: |
+ outputs: cpuscaler: {
+ apiVersion: "autoscaling/v2beta2"
+ kind: "HorizontalPodAutoscaler"
+ metadata: name: context.name
+ spec: {
+ scaleTargetRef: {
+ apiVersion: "apps/v1"
+ kind: "Deployment"
+ name: context.name
+ }
+ minReplicas: parameter.min
+ maxReplicas: parameter.max
+ metrics: [{
+ type: "Resource"
+ resource: {
+ name: "cpu"
+ target: {
+ type: "Utilization"
+ averageUtilization: parameter.cpuUtil
+ }
+ }
+ }]
+ }
+ }
+ parameter: {
+
+ // +usage=Specify the minimal number of replicas to which the autoscaler can scale down
+ min: *1 | int
+
+ // +usage=Specify the maximum number of of replicas to which the autoscaler can scale up
+ max: *10 | int
+
+ // +usage=Specify the average cpu utilization, for example, 50 means the CPU usage is 50%
+ cpuUtil: *50 | int
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/depends-on-app.yaml b/charts/vela-minimal/templates/defwithtemplate/depends-on-app.yaml
new file mode 100644
index 000000000..8d99c42ea
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/depends-on-app.yaml
@@ -0,0 +1,65 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/depends-on-app.cue
+apiVersion: core.oam.dev/v1beta1
+kind: WorkflowStepDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: check or install depends-on Application
+ name: depends-on-app
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ import (
+ "vela/op"
+ "encoding/yaml"
+ )
+
+ dependsOn: op.#Read & {
+ value: {
+ apiVersion: "core.oam.dev/v1beta1"
+ kind: "Application"
+ metadata: {
+ name: parameter.name
+ namespace: parameter.namespace
+ }
+ }
+ }
+ load: op.#Steps & {
+ if dependsOn.err != _|_ {
+ configMap: op.#Read & {
+ value: {
+ apiVersion: "v1"
+ kind: "ConfigMap"
+ metadata: {
+ name: parameter.name
+ namespace: parameter.namespace
+ }
+ }
+ }
+ apply: op.#Apply & {
+ value: {
+ yaml.Unmarshal(configMap.value.data[parameter.name])
+ }
+ }
+ }
+ if dependsOn.err == _|_ {
+ apply: op.#Apply & {
+ value: {
+ dependsOn.value
+ }
+ }
+ }
+ }
+ phase: load.apply.value.status.status
+ wait: op.#ConditionalWait & {
+ continue: phase == "running"
+ }
+ parameter: {
+ // +usage=Specify the name of the dependent Application
+ name: string
+ // +usage=Specify the namespace of the dependent Application
+ namespace: string
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/env-binding.yaml b/charts/vela-minimal/templates/defwithtemplate/env-binding.yaml
new file mode 100644
index 000000000..8b4e89199
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/env-binding.yaml
@@ -0,0 +1,62 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/env-binding.cue
+apiVersion: core.oam.dev/v1beta1
+kind: PolicyDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Provides differentiated configuration and environment scheduling policies for application.
+ name: env-binding
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ output: {
+ apiVersion: "core.oam.dev/v1alpha1"
+ kind: "EnvBinding"
+ spec: {
+ engine: parameter.clusterManagementEngine
+ appTemplate: {
+ apiVersion: "core.oam.dev/v1beta1"
+ kind: "Application"
+ metadata: {
+ name: context.appName
+ namespace: context.namespace
+ }
+ spec: components: context.components
+ }
+ envs: parameter.envs
+ outputResourcesTo: {
+ name: context.name
+ namespace: context.namespace
+ }
+ }
+ }
+ #Env: {
+ name: string
+ patch: components: [...{
+ name: string
+ type: string
+ properties: {...}
+ traits?: [...{
+ type: string
+ properties: {...}
+ }]
+ }]
+ placement: {
+ clusterSelector?: {
+ labels?: [string]: string
+ name?: string
+ }
+ namespaceSelector?: {
+ labels?: [string]: string
+ name?: string
+ }
+ }
+ selector?: components: [...string]
+ }
+ parameter: {
+ clusterManagementEngine: *"cluster-gateway" | string
+ envs: [...#Env]
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/env.yaml b/charts/vela-minimal/templates/defwithtemplate/env.yaml
new file mode 100644
index 000000000..0a4b06290
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/env.yaml
@@ -0,0 +1,30 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/env.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: add env on K8s pod for your workload which follows the pod spec in path 'spec.template.'
+ name: env
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ schematic:
+ cue:
+ template: |
+ patch: spec: template: spec: {
+ // +patchKey=name
+ containers: [{
+ name: context.name
+ // +patchKey=name
+ env: [
+ for k, v in parameter.env {
+ name: k
+ value: v
+ },
+ ]
+ }]
+ }
+ parameter: env: [string]: string
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/expose.yaml b/charts/vela-minimal/templates/defwithtemplate/expose.yaml
new file mode 100644
index 000000000..bc711d76a
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/expose.yaml
@@ -0,0 +1,36 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/expose.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Expose port to enable web traffic for your component.
+ name: expose
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ podDisruptive: false
+ schematic:
+ cue:
+ template: |
+ outputs: service: {
+ apiVersion: "v1"
+ kind: "Service"
+ metadata: name: context.name
+ spec: {
+ selector: "app.oam.dev/component": context.name
+ ports: [
+ for p in parameter.port {
+ port: p
+ targetPort: p
+ },
+ ]
+ type: parameter.type
+ }
+ }
+ parameter: {
+ // +usage=Specify the exposion ports
+ port: [...int]
+ // +usage=Specify what kind of Service you want. options: "ClusterIP","NodePort","LoadBalancer","ExternalName"
+ type: *"ClusterIP" | "NodePort" | "LoadBalancer" | "ExternalName"
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/health.yaml b/charts/vela-minimal/templates/defwithtemplate/health.yaml
new file mode 100644
index 000000000..7f9c4fcad
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/health.yaml
@@ -0,0 +1,34 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/health.cue
+apiVersion: core.oam.dev/v1beta1
+kind: PolicyDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Apply periodical health checking to the application.
+ name: health
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ manageHealthCheck: true
+ schematic:
+ cue:
+ template: |
+ output: {
+ apiVersion: "core.oam.dev/v1alpha2"
+ kind: "HealthScope"
+ spec: {
+ "probe-timeout": parameter.probeTimeout
+ "probe-interval": parameter.probeInterval
+ appReferences: [{
+ appName: context.appName
+ }]
+ workloadRefs: []
+ manageHealthCheck: true
+ }
+ }
+ parameter: {
+ // +usage=Specify health checking timeout(seconds), default 10s
+ probeTimeout: *10 | int
+ // +usage=Specify health checking interval(seconds), default 30s
+ probeInterval: *30 | int
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/hostalias.yaml b/charts/vela-minimal/templates/defwithtemplate/hostalias.yaml
new file mode 100644
index 000000000..8cf43063b
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/hostalias.yaml
@@ -0,0 +1,28 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/hostalias.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Add host aliases on K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: hostalias
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: false
+ schematic:
+ cue:
+ template: |
+ patch: {
+ // +patchKey=ip
+ spec: template: spec: hostAliases: parameter.hostAliases
+ }
+ parameter: {
+ // +usage=Specify the hostAliases to add
+ hostAliases: [...{
+ ip: string
+ hostnames: [...string]
+ }]
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/ingress-1-20.yaml b/charts/vela-minimal/templates/defwithtemplate/ingress-1-20.yaml
new file mode 100644
index 000000000..8ea726545
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/ingress-1-20.yaml
@@ -0,0 +1,70 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/ingress-1-20.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Enable public web traffic for the component, the ingress API matches K8s v1.20+.
+ name: ingress-1-20
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ podDisruptive: false
+ schematic:
+ cue:
+ template: |
+ // trait template can have multiple outputs in one trait
+ outputs: service: {
+ apiVersion: "v1"
+ kind: "Service"
+ metadata: name: context.name
+ spec: {
+ selector: "app.oam.dev/component": context.name
+ ports: [
+ for k, v in parameter.http {
+ port: v
+ targetPort: v
+ },
+ ]
+ }
+ }
+ outputs: ingress: {
+ apiVersion: "networking.k8s.io/v1"
+ kind: "Ingress"
+ metadata: name: context.name
+ spec: rules: [{
+ host: parameter.domain
+ http: paths: [
+ for k, v in parameter.http {
+ path: k
+ pathType: "ImplementationSpecific"
+ backend: service: {
+ name: context.name
+ port: number: v
+ }
+ },
+ ]
+ }]
+ }
+ parameter: {
+ // +usage=Specify the domain you want to expose
+ domain: string
+
+ // +usage=Specify the mapping relationship between the http path and the workload port
+ http: [string]: int
+ }
+ status:
+ customStatus: |-
+ let igs = context.outputs.ingress.status.loadBalancer.ingress
+ if igs == _|_ {
+ message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + "'\n"
+ }
+ if len(igs) > 0 {
+ if igs[0].ip != _|_ {
+ message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip
+ }
+ if igs[0].ip == _|_ {
+ message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host
+ }
+ }
+ healthPolicy: 'isHealth: len(context.outputs.service.spec.clusterIP) > 0'
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/ingress.yaml b/charts/vela-minimal/templates/defwithtemplate/ingress.yaml
new file mode 100644
index 000000000..ca0ff97f2
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/ingress.yaml
@@ -0,0 +1,69 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/ingress.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Enable public web traffic for the component.
+ name: ingress
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ podDisruptive: false
+ schematic:
+ cue:
+ template: |
+ // trait template can have multiple outputs in one trait
+ outputs: service: {
+ apiVersion: "v1"
+ kind: "Service"
+ metadata: name: context.name
+ spec: {
+ selector: "app.oam.dev/component": context.name
+ ports: [
+ for k, v in parameter.http {
+ port: v
+ targetPort: v
+ },
+ ]
+ }
+ }
+ outputs: ingress: {
+ apiVersion: "networking.k8s.io/v1beta1"
+ kind: "Ingress"
+ metadata: name: context.name
+ spec: rules: [{
+ host: parameter.domain
+ http: paths: [
+ for k, v in parameter.http {
+ path: k
+ backend: {
+ serviceName: context.name
+ servicePort: v
+ }
+ },
+ ]
+ }]
+ }
+ parameter: {
+ // +usage=Specify the domain you want to expose
+ domain: string
+
+ // +usage=Specify the mapping relationship between the http path and the workload port
+ http: [string]: int
+ }
+ status:
+ customStatus: |-
+ let igs = context.outputs.ingress.status.loadBalancer.ingress
+ if igs == _|_ {
+ message: "No loadBalancer found, visiting by using 'vela port-forward " + context.appName + "'\n"
+ }
+ if len(igs) > 0 {
+ if igs[0].ip != _|_ {
+ message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host + ", IP: " + igs[0].ip
+ }
+ if igs[0].ip == _|_ {
+ message: "Visiting URL: " + context.outputs.ingress.spec.rules[0].host
+ }
+ }
+ healthPolicy: 'isHealth: len(context.outputs.service.spec.clusterIP) > 0'
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/init-container.yaml b/charts/vela-minimal/templates/defwithtemplate/init-container.yaml
new file mode 100644
index 000000000..e74bad803
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/init-container.yaml
@@ -0,0 +1,71 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/init-container.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: add an init container and use shared volume with pod
+ name: init-container
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - deployments.apps
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: spec: template: spec: {
+ // +patchKey=name
+ containers: [{
+ name: context.name
+ // +patchKey=name
+ volumeMounts: [{
+ name: parameter.mountName
+ mountPath: parameter.appMountPath
+ }]
+ }]
+ initContainers: [{
+ name: parameter.name
+ image: parameter.image
+ if parameter.cmd != _|_ {
+ command: parameter.cmd
+ }
+ if parameter.args != _|_ {
+ args: parameter.args
+ }
+
+ // +patchKey=name
+ volumeMounts: [{
+ name: parameter.mountName
+ mountPath: parameter.initMountPath
+ }]
+ }]
+ // +patchKey=name
+ volumes: [{
+ name: parameter.mountName
+ emptyDir: {}
+ }]
+ }
+ parameter: {
+ // +usage=Specify the name of init container
+ name: string
+
+ // +usage=Specify the image of init container
+ image: string
+
+ // +usage=Specify the commands run in the init container
+ cmd?: [...string]
+
+ // +usage=Specify the args run in the init container
+ args?: [...string]
+
+ // +usage=Specify the mount name of shared volume
+ mountName: *"workdir" | string
+
+ // +usage=Specify the mount path of app container
+ appMountPath: string
+
+ // +usage=Specify the mount path of init container
+ initMountPath: string
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/labels.yaml b/charts/vela-minimal/templates/defwithtemplate/labels.yaml
new file mode 100644
index 000000000..91b4d8278
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/labels.yaml
@@ -0,0 +1,30 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/labels.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Add labels on K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: labels
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: {
+ metadata: labels: {
+ for k, v in parameter {
+ "\(k)": v
+ }
+ }
+ spec: template: metadata: labels: {
+ for k, v in parameter {
+ "\(k)": v
+ }
+ }
+ }
+ parameter: [string]: string
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/lifecycle.yaml b/charts/vela-minimal/templates/defwithtemplate/lifecycle.yaml
new file mode 100644
index 000000000..ec7a3e8bd
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/lifecycle.yaml
@@ -0,0 +1,49 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/lifecycle.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Add lifecycle hooks for the first container of K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: lifecycle
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: spec: template: spec: containers: [{
+ lifecycle: {
+ if parameter.postStart != _|_ {
+ postStart: parameter.postStart
+ }
+ if parameter.preStop != _|_ {
+ preStop: parameter.preStop
+ }
+ }
+ }, ...]
+ parameter: {
+ postStart?: #LifeCycleHandler
+ preStop?: #LifeCycleHandler
+ }
+ #Port: int & >=1 & <=65535
+ #LifeCycleHandler: {
+ exec?: command: [...string]
+ httpGet?: {
+ path?: string
+ port: #Port
+ host?: string
+ scheme: *"HTTP" | "HTTPS"
+ httpHeaders?: [...{
+ name: string
+ value: string
+ }]
+ }
+ tcpSocket?: {
+ port: #Port
+ host?: string
+ }
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/node-affinity.yaml b/charts/vela-minimal/templates/defwithtemplate/node-affinity.yaml
new file mode 100644
index 000000000..874bb5760
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/node-affinity.yaml
@@ -0,0 +1,42 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/node-affinity.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: affinity specify node affinity and toleration on K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: node-affinity
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: spec: template: spec: {
+ if parameter.affinity != _|_ {
+ affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: [{
+ matchExpressions: [
+ for k, v in parameter.affinity {
+ key: k
+ operator: "In"
+ values: v
+ },
+ ]}]
+ }
+ if parameter.tolerations != _|_ {
+ tolerations: [
+ for k, v in parameter.tolerations {
+ effect: "NoSchedule"
+ key: k
+ operator: "Equal"
+ value: v
+ }]
+ }
+ }
+ parameter: {
+ affinity?: [string]: [...string]
+ tolerations?: [string]: string
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/pvc.yaml b/charts/vela-minimal/templates/defwithtemplate/pvc.yaml
new file mode 100644
index 000000000..ab1ca48c1
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/pvc.yaml
@@ -0,0 +1,120 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/pvc.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Create a Persistent Volume Claim and mount the PVC as volume to the first container in the pod
+ name: pvc
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - deployments.apps
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: spec: template: spec: {
+ containers: [{
+ if parameter.volumeMode == "Block" {
+ // +patchKey=name
+ volumeDevices: [
+ for v in parameter.volumesToMount {
+ {
+ name: v.name
+ devicePath: v.devicePath
+ }
+ },
+ ]
+ }
+ if parameter.volumeMode == "Filesystem" {
+ // +patchKey=name
+ volumeMounts: [
+ for v in parameter.volumesToMount {
+ {
+ name: v.name
+ mountPath: v.mountPath
+ }
+ },
+ ]
+ }
+ }]
+
+ // +patchKey=name
+ volumes: [
+ for v in parameter.volumesToMount {
+ {
+ name: v.name
+ persistentVolumeClaim: claimName: parameter.claimName
+ }
+ },
+ ]
+ }
+ outputs: pvc: {
+ apiVersion: "v1"
+ kind: "PersistentVolumeClaim"
+ metadata: name: parameter.claimName
+ spec: {
+ accessModes: parameter.accessModes
+ volumeMode: parameter.volumeMode
+ if parameter.volumeName != _|_ {
+ volumeName: parameter.volumeName
+ }
+
+ if parameter.storageClassName != _|_ {
+ storageClassName: parameter.storageClassName
+ }
+ resources: requests: storage: parameter.resources.requests.storage
+ if parameter.resources.limits.storage != _|_ {
+ resources: limits: storage: parameter.resources.limits.storage
+ }
+ if parameter.dataSourceRef != _|_ {
+ dataSourceRef: parameter.dataSourceRef
+ }
+ if parameter.dataSource != _|_ {
+ dataSource: parameter.dataSource
+ }
+ if parameter.selector != _|_ {
+ dataSource: parameter.selector
+ }
+ }
+ }
+ parameter: {
+ claimName: string
+ volumeMode: *"Filesystem" | string
+ volumeName?: string
+ accessModes: [...string]
+ storageClassName?: string
+ resources: {
+ requests: storage: =~"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$"
+ limits?: storage: =~"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$"
+ }
+ dataSourceRef?: {
+ name: string
+ kind: string
+ apiGroup: string
+ }
+ dataSource?: {
+ name: string
+ kind: string
+ apiGroup: string
+ }
+ selector?: {
+ matchLabels?: [string]: string
+ matchExpressions?: {
+ key: string
+ values: [...string]
+ operator: string
+ }
+ }
+ volumesToMount: [...{
+ name: string
+ if volumeMode == "Block" {
+ devicePath: string
+ }
+ if volumeMode == "Filesystem" {
+ mountPath: string
+ }
+ }]
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/raw.yaml b/charts/vela-minimal/templates/defwithtemplate/raw.yaml
new file mode 100644
index 000000000..7d5c8e731
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/raw.yaml
@@ -0,0 +1,18 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/raw.cue
+apiVersion: core.oam.dev/v1beta1
+kind: ComponentDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: raw allow users to specify raw K8s object in properties
+ name: raw
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ output: parameter
+ parameter: {}
+ workload:
+ type: autodetects.core.oam.dev
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/resource.yaml b/charts/vela-minimal/templates/defwithtemplate/resource.yaml
new file mode 100644
index 000000000..a96ff7fb2
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/resource.yaml
@@ -0,0 +1,30 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/resource.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Add resource requests and limits on K8s pod for your workload which follows the pod spec in path 'spec.template.'
+ name: resource
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: spec: template: spec: containers: [{
+ metadata: annotations: "customized-resource": "cpu:\(parameter.cpu) memory:\(parameter.memory)"
+ resources: {
+ requests: parameter
+ limits: parameter
+ }
+ }, ...]
+ parameter: {
+ // +usage=Specify the amount of cpu to limit
+ cpu: *1 | number
+ // +usage=Specify the amount of memory to limit
+ memory: *"2048Mi" | =~"^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$"
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/rollout.yaml b/charts/vela-minimal/templates/defwithtemplate/rollout.yaml
new file mode 100644
index 000000000..0c0c9ecca
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/rollout.yaml
@@ -0,0 +1,42 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/rollout.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: rollout the component
+ name: rollout
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ manageWorkload: true
+ schematic:
+ cue:
+ template: |
+ outputs: rollout: {
+ apiVersion: "standard.oam.dev/v1alpha1"
+ kind: "Rollout"
+ metadata: {
+ name: context.name
+ namespace: context.namespace
+ }
+ spec: {
+ targetRevisionName: parameter.targetRevision
+ componentName: context.name
+ rolloutPlan: {
+ rolloutStrategy: "IncreaseFirst"
+ rolloutBatches: parameter.rolloutBatches
+ targetSize: parameter.targetSize
+ if parameter["batchPartition"] != _|_ {
+ batchPartition: parameter.batchPartition
+ }
+ }
+ }
+ }
+ parameter: {
+ targetRevision: *context.revision | string
+ targetSize: int
+ rolloutBatches: [...rolloutBatch]
+ batchPartition?: int
+ }
+ rolloutBatch: replicas: int
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/scaler.yaml b/charts/vela-minimal/templates/defwithtemplate/scaler.yaml
new file mode 100644
index 000000000..53b78071c
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/scaler.yaml
@@ -0,0 +1,22 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/scaler.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Manually scale K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: scaler
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: false
+ schematic:
+ cue:
+ template: |
+ patch: spec: replicas: parameter.replicas
+ parameter: {
+ // +usage=Specify the number of workload
+ replicas: *1 | int
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/service-binding.yaml b/charts/vela-minimal/templates/defwithtemplate/service-binding.yaml
new file mode 100644
index 000000000..d4f07e197
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/service-binding.yaml
@@ -0,0 +1,45 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/service-binding.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Binding secrets of cloud resources to component env
+ name: service-binding
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ schematic:
+ cue:
+ template: |
+ patch: spec: template: spec: {
+ // +patchKey=name
+ containers: [{
+ name: context.name
+ // +patchKey=name
+ env: [
+ for envName, v in parameter.envMappings {
+ name: envName
+ valueFrom: secretKeyRef: {
+ name: v.secret
+ if v["key"] != _|_ {
+ key: v.key
+ }
+ if v["key"] == _|_ {
+ key: envName
+ }
+ }
+ },
+ ]
+ }]
+ }
+ parameter: {
+ // +usage=The mapping of environment variables to secret
+ envMappings: [string]: #KeySecret
+ }
+ #KeySecret: {
+ key?: string
+ secret: string
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/sidecar.yaml b/charts/vela-minimal/templates/defwithtemplate/sidecar.yaml
new file mode 100644
index 000000000..bee6a729b
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/sidecar.yaml
@@ -0,0 +1,57 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/sidecar.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Inject a sidecar container to K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: sidecar
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - '*'
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: {
+ // +patchKey=name
+ spec: template: spec: containers: [{
+ name: parameter.name
+ image: parameter.image
+ if parameter.cmd != _|_ {
+ command: parameter.cmd
+ }
+ if parameter.args != _|_ {
+ args: parameter.args
+ }
+ if parameter["volumes"] != _|_ {
+ volumeMounts: [ for v in parameter.volumes {
+ {
+ mountPath: v.path
+ name: v.name
+ }
+ }]
+ }
+ }]
+ }
+ parameter: {
+ // +usage=Specify the name of sidecar container
+ name: string
+
+ // +usage=Specify the image of sidecar container
+ image: string
+
+ // +usage=Specify the commands run in the sidecar
+ cmd?: [...string]
+
+ // +usage=Specify the args in the sidecar
+ args?: [...string]
+
+ // +usage=Specify the shared volume path
+ volumes?: [...{
+ name: string
+ path: string
+ }]
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/task.yaml b/charts/vela-minimal/templates/defwithtemplate/task.yaml
new file mode 100644
index 000000000..248101cd4
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/task.yaml
@@ -0,0 +1,213 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/task.cue
+apiVersion: core.oam.dev/v1beta1
+kind: ComponentDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Describes jobs that run code or a script to completion.
+ name: task
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ output: {
+ apiVersion: "batch/v1"
+ kind: "Job"
+ spec: {
+ parallelism: parameter.count
+ completions: parameter.count
+ template: spec: {
+ restartPolicy: parameter.restart
+ containers: [{
+ name: context.name
+ image: parameter.image
+
+ if parameter["cmd"] != _|_ {
+ command: parameter.cmd
+ }
+
+ if parameter["env"] != _|_ {
+ env: parameter.env
+ }
+
+ if parameter["cpu"] != _|_ {
+ resources: {
+ limits: cpu: parameter.cpu
+ requests: cpu: parameter.cpu
+ }
+ }
+
+ if parameter["memory"] != _|_ {
+ resources: {
+ limits: memory: parameter.memory
+ requests: memory: parameter.memory
+ }
+ }
+
+ if parameter["volumes"] != _|_ {
+ volumeMounts: [ for v in parameter.volumes {
+ {
+ mountPath: v.mountPath
+ name: v.name
+ }}]
+ }
+ }]
+
+ if parameter["volumes"] != _|_ {
+ volumes: [ for v in parameter.volumes {
+ {
+ name: v.name
+ if v.type == "pvc" {
+ persistentVolumeClaim: claimName: v.claimName
+ }
+ if v.type == "configMap" {
+ configMap: {
+ defaultMode: v.defaultMode
+ name: v.cmName
+ if v.items != _|_ {
+ items: v.items
+ }
+ }
+ }
+ if v.type == "secret" {
+ secret: {
+ defaultMode: v.defaultMode
+ secretName: v.secretName
+ if v.items != _|_ {
+ items: v.items
+ }
+ }
+ }
+ if v.type == "emptyDir" {
+ emptyDir: medium: v.medium
+ }
+ }}]
+ }
+
+ }
+ }
+ }
+ parameter: {
+ // +usage=Specify number of tasks to run in parallel
+ // +short=c
+ count: *1 | int
+
+ // +usage=Which image would you like to use for your service
+ // +short=i
+ image: string
+
+ // +usage=Define the job restart policy, the value can only be Never or OnFailure. By default, it's Never.
+ restart: *"Never" | string
+
+ // +usage=Commands to run in the container
+ cmd?: [...string]
+
+ // +usage=Define arguments by using environment variables
+ env?: [...{
+ // +usage=Environment variable name
+ name: string
+ // +usage=The value of the environment variable
+ value?: string
+ // +usage=Specifies a source the value of this var should come from
+ valueFrom?: {
+ // +usage=Selects a key of a secret in the pod's namespace
+ secretKeyRef: {
+ // +usage=The name of the secret in the pod's namespace to select from
+ name: string
+ // +usage=The key of the secret to select from. Must be a valid secret key
+ key: string
+ }
+ }
+ }]
+
+ // +usage=Number of CPU units for the service, like `0.5` (0.5 CPU core), `1` (1 CPU core)
+ cpu?: string
+
+ // +usage=Specifies the attributes of the memory resource required for the container.
+ memory?: string
+
+ // +usage=Declare volumes and volumeMounts
+ volumes?: [...{
+ name: string
+ mountPath: string
+ // +usage=Specify volume type, options: "pvc","configMap","secret","emptyDir"
+ type: "pvc" | "configMap" | "secret" | "emptyDir"
+ if type == "pvc" {
+ claimName: string
+ }
+ if type == "configMap" {
+ defaultMode: *420 | int
+ cmName: string
+ items?: [...{
+ key: string
+ path: string
+ mode: *511 | int
+ }]
+ }
+ if type == "secret" {
+ defaultMode: *420 | int
+ secretName: string
+ items?: [...{
+ key: string
+ path: string
+ mode: *511 | int
+ }]
+ }
+ if type == "emptyDir" {
+ medium: *"" | "Memory"
+ }
+ }]
+
+ // +usage=Instructions for assessing whether the container is alive.
+ livenessProbe?: #HealthProbe
+
+ // +usage=Instructions for assessing whether the container is in a suitable state to serve traffic.
+ readinessProbe?: #HealthProbe
+ }
+ #HealthProbe: {
+
+ // +usage=Instructions for assessing container health by executing a command. Either this attribute or the httpGet attribute or the tcpSocket attribute MUST be specified. This attribute is mutually exclusive with both the httpGet attribute and the tcpSocket attribute.
+ exec?: {
+ // +usage=A command to be executed inside the container to assess its health. Each space delimited token of the command is a separate array element. Commands exiting 0 are considered to be successful probes, whilst all other exit codes are considered failures.
+ command: [...string]
+ }
+
+ // +usage=Instructions for assessing container health by executing an HTTP GET request. Either this attribute or the exec attribute or the tcpSocket attribute MUST be specified. This attribute is mutually exclusive with both the exec attribute and the tcpSocket attribute.
+ httpGet?: {
+ // +usage=The endpoint, relative to the port, to which the HTTP GET request should be directed.
+ path: string
+ // +usage=The TCP socket within the container to which the HTTP GET request should be directed.
+ port: int
+ httpHeaders?: [...{
+ name: string
+ value: string
+ }]
+ }
+
+ // +usage=Instructions for assessing container health by probing a TCP socket. Either this attribute or the exec attribute or the httpGet attribute MUST be specified. This attribute is mutually exclusive with both the exec attribute and the httpGet attribute.
+ tcpSocket?: {
+ // +usage=The TCP socket within the container that should be probed to assess container health.
+ port: int
+ }
+
+ // +usage=Number of seconds after the container is started before the first probe is initiated.
+ initialDelaySeconds: *0 | int
+
+ // +usage=How often, in seconds, to execute the probe.
+ periodSeconds: *10 | int
+
+ // +usage=Number of seconds after which the probe times out.
+ timeoutSeconds: *1 | int
+
+ // +usage=Minimum consecutive successes for the probe to be considered successful after having failed.
+ successThreshold: *1 | int
+
+ // +usage=Number of consecutive failures required to determine the container is not alive (liveness probe) or not ready (readiness probe).
+ failureThreshold: *3 | int
+ }
+ workload:
+ definition:
+ apiVersion: batch/v1
+ kind: Job
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/volumes.yaml b/charts/vela-minimal/templates/defwithtemplate/volumes.yaml
new file mode 100644
index 000000000..5d037ded1
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/volumes.yaml
@@ -0,0 +1,83 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/volumes.cue
+apiVersion: core.oam.dev/v1beta1
+kind: TraitDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Add volumes on K8s pod for your workload which follows the pod spec in path 'spec.template'.
+ name: volumes
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ appliesToWorkloads:
+ - deployments.apps
+ podDisruptive: true
+ schematic:
+ cue:
+ template: |
+ patch: {
+ // +patchKey=name
+ spec: template: spec: volumes: [
+ for v in parameter.volumes {
+ {
+ name: v.name
+ if v.type == "pvc" {
+ persistentVolumeClaim: claimName: v.claimName
+ }
+ if v.type == "configMap" {
+ configMap: {
+ defaultMode: v.defaultMode
+ name: v.cmName
+ if v.items != _|_ {
+ items: v.items
+ }
+ }
+ }
+ if v.type == "secret" {
+ secret: {
+ defaultMode: v.defaultMode
+ secretName: v.secretName
+ if v.items != _|_ {
+ items: v.items
+ }
+ }
+ }
+ if v.type == "emptyDir" {
+ emptyDir: medium: v.medium
+ }
+ }
+ },
+ ]
+ }
+ parameter: {
+ // +usage=Declare volumes and volumeMounts
+ volumes?: [...{
+ name: string
+ // +usage=Specify volume type, options: "pvc","configMap","secret","emptyDir"
+ type: "pvc" | "configMap" | "secret" | "emptyDir"
+ if type == "pvc" {
+ claimName: string
+ }
+ if type == "configMap" {
+ defaultMode: *420 | int
+ cmName: string
+ items?: [...{
+ key: string
+ path: string
+ mode: *511 | int
+ }]
+ }
+ if type == "secret" {
+ defaultMode: *420 | int
+ secretName: string
+ items?: [...{
+ key: string
+ path: string
+ mode: *511 | int
+ }]
+ }
+ if type == "emptyDir" {
+ medium: *"" | "Memory"
+ }
+ }]
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/webhook-notification.yaml b/charts/vela-minimal/templates/defwithtemplate/webhook-notification.yaml
new file mode 100644
index 000000000..0761f8990
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/webhook-notification.yaml
@@ -0,0 +1,140 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/webhook-notification.cue
+apiVersion: core.oam.dev/v1beta1
+kind: WorkflowStepDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Send message to webhook
+ name: webhook-notification
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ import (
+ "vela/op"
+ )
+
+ parameter: {
+ dingding?: {
+ url: string
+ message: {
+ text?: *null | {
+ content: string
+ }
+ // +usage=msgType can be text, link, mardown, actionCard, feedCard
+ msgtype: string
+ link?: *null | {
+ text?: string
+ title?: string
+ messageUrl?: string
+ picUrl?: string
+ }
+ markdown?: *null | {
+ text: string
+ title: string
+ }
+ at?: *null | {
+ atMobiles?: *null | [...string]
+ isAtAll?: bool
+ }
+ actionCard?: *null | {
+ text: string
+ title: string
+ hideAvatar: string
+ btnOrientation: string
+ singleTitle: string
+ singleURL: string
+ btns: *null | [...*null | {
+ title: string
+ actionURL: string
+ }]
+ }
+ feedCard?: *null | {
+ links: *null | [...*null | {
+ text?: string
+ title?: string
+ messageUrl?: string
+ picUrl?: string
+ }]
+ }
+ }
+ }
+
+ slack?: {
+ url: string
+ message: {
+ text: string
+ blocks?: *null | [...block]
+ attachments?: *null | {
+ blocks?: *null | [...block]
+ color?: string
+ }
+ thread_ts?: string
+ mrkdwn?: *true | bool
+ }
+ }
+ }
+ block: {
+ type: string
+ block_id?: string
+ elements?: [...{
+ type: string
+ action_id?: string
+ url?: string
+ value?: string
+ style?: string
+ text?: text
+ confirm?: {
+ title: text
+ text: text
+ confirm: text
+ deny: text
+ style?: string
+ }
+ options?: [...option]
+ initial_options?: [...option]
+ placeholder?: text
+ initial_date?: string
+ image_url?: string
+ alt_text?: string
+ option_groups?: [...option]
+ max_selected_items?: int
+ initial_value?: string
+ multiline?: bool
+ min_length?: int
+ max_length?: int
+ dispatch_action_config?: trigger_actions_on?: [...string]
+ initial_time?: string
+ }]
+ }
+ text: {
+ type: string
+ text: string
+ emoji?: bool
+ verbatim?: bool
+ }
+ option: {
+ text: text
+ value: string
+ description?: text
+ url?: string
+ }
+ // send webhook notification
+ ding: {
+ if parameter.dingding != _|_ {
+ op.#DingTalk & {
+ message: parameter.dingding.message
+ dingUrl: parameter.dingding.url
+ }
+ }
+ }
+ slack: {
+ if parameter.slack != _|_ {
+ op.#Slack & {
+ message: parameter.slack.message
+ slackUrl: parameter.slack.url
+ }
+ }
+ }
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/webservice.yaml b/charts/vela-minimal/templates/defwithtemplate/webservice.yaml
new file mode 100644
index 000000000..59beda779
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/webservice.yaml
@@ -0,0 +1,255 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/webservice.cue
+apiVersion: core.oam.dev/v1beta1
+kind: ComponentDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Describes long-running, scalable, containerized services that have a stable network endpoint to receive external network traffic from customers.
+ name: webservice
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ output: {
+ apiVersion: "apps/v1"
+ kind: "Deployment"
+ spec: {
+ selector: matchLabels: "app.oam.dev/component": context.name
+
+ template: {
+ metadata: labels: {
+ "app.oam.dev/component": context.name
+ if parameter.addRevisionLabel {
+ "app.oam.dev/appRevision": context.appRevision
+ }
+ "app.oam.dev/revision": context.revision
+ }
+
+ spec: {
+ containers: [{
+ name: context.name
+ image: parameter.image
+ ports: [{
+ containerPort: parameter.port
+ }]
+
+ if parameter["imagePullPolicy"] != _|_ {
+ imagePullPolicy: parameter.imagePullPolicy
+ }
+
+ if parameter["cmd"] != _|_ {
+ command: parameter.cmd
+ }
+
+ if parameter["env"] != _|_ {
+ env: parameter.env
+ }
+
+ if context["config"] != _|_ {
+ env: context.config
+ }
+
+ if parameter["cpu"] != _|_ {
+ resources: {
+ limits: cpu: parameter.cpu
+ requests: cpu: parameter.cpu
+ }
+ }
+
+ if parameter["memory"] != _|_ {
+ resources: {
+ limits: memory: parameter.memory
+ requests: memory: parameter.memory
+ }
+ }
+
+ if parameter["volumes"] != _|_ {
+ volumeMounts: [ for v in parameter.volumes {
+ {
+ mountPath: v.mountPath
+ name: v.name
+ }}]
+ }
+
+ if parameter["livenessProbe"] != _|_ {
+ livenessProbe: parameter.livenessProbe
+ }
+
+ if parameter["readinessProbe"] != _|_ {
+ readinessProbe: parameter.readinessProbe
+ }
+
+ }]
+
+ if parameter["imagePullSecrets"] != _|_ {
+ imagePullSecrets: [ for v in parameter.imagePullSecrets {
+ name: v
+ },
+ ]
+ }
+
+ if parameter["volumes"] != _|_ {
+ volumes: [ for v in parameter.volumes {
+ {
+ name: v.name
+ if v.type == "pvc" {
+ persistentVolumeClaim: claimName: v.claimName
+ }
+ if v.type == "configMap" {
+ configMap: {
+ defaultMode: v.defaultMode
+ name: v.cmName
+ if v.items != _|_ {
+ items: v.items
+ }
+ }
+ }
+ if v.type == "secret" {
+ secret: {
+ defaultMode: v.defaultMode
+ secretName: v.secretName
+ if v.items != _|_ {
+ items: v.items
+ }
+ }
+ }
+ if v.type == "emptyDir" {
+ emptyDir: medium: v.medium
+ }
+ }}]
+ }
+ }
+ }
+ }
+ }
+ parameter: {
+ // +usage=Which image would you like to use for your service
+ // +short=i
+ image: string
+
+ // +usage=Specify image pull policy for your service
+ imagePullPolicy?: string
+
+ // +usage=Specify image pull secrets for your service
+ imagePullSecrets?: [...string]
+
+ // +usage=Which port do you want customer traffic sent to
+ // +short=p
+ port: *80 | int
+
+ // +ignore
+ // +usage=If addRevisionLabel is true, the appRevision label will be added to the underlying pods
+ addRevisionLabel: *false | bool
+
+ // +usage=Commands to run in the container
+ cmd?: [...string]
+
+ // +usage=Define arguments by using environment variables
+ env?: [...{
+ // +usage=Environment variable name
+ name: string
+ // +usage=The value of the environment variable
+ value?: string
+ // +usage=Specifies a source the value of this var should come from
+ valueFrom?: {
+ // +usage=Selects a key of a secret in the pod's namespace
+ secretKeyRef: {
+ // +usage=The name of the secret in the pod's namespace to select from
+ name: string
+ // +usage=The key of the secret to select from. Must be a valid secret key
+ key: string
+ }
+ }
+ }]
+
+ // +usage=Number of CPU units for the service, like `0.5` (0.5 CPU core), `1` (1 CPU core)
+ cpu?: string
+
+ // +usage=Specifies the attributes of the memory resource required for the container.
+ memory?: string
+
+ // +usage=Declare volumes and volumeMounts
+ volumes?: [...{
+ name: string
+ mountPath: string
+ // +usage=Specify volume type, options: "pvc","configMap","secret","emptyDir"
+ type: "pvc" | "configMap" | "secret" | "emptyDir"
+ if type == "pvc" {
+ claimName: string
+ }
+ if type == "configMap" {
+ defaultMode: *420 | int
+ cmName: string
+ items?: [...{
+ key: string
+ path: string
+ mode: *511 | int
+ }]
+ }
+ if type == "secret" {
+ defaultMode: *420 | int
+ secretName: string
+ items?: [...{
+ key: string
+ path: string
+ mode: *511 | int
+ }]
+ }
+ if type == "emptyDir" {
+ medium: *"" | "Memory"
+ }
+ }]
+
+ // +usage=Instructions for assessing whether the container is alive.
+ livenessProbe?: #HealthProbe
+
+ // +usage=Instructions for assessing whether the container is in a suitable state to serve traffic.
+ readinessProbe?: #HealthProbe
+ }
+ #HealthProbe: {
+
+ // +usage=Instructions for assessing container health by executing a command. Either this attribute or the httpGet attribute or the tcpSocket attribute MUST be specified. This attribute is mutually exclusive with both the httpGet attribute and the tcpSocket attribute.
+ exec?: {
+ // +usage=A command to be executed inside the container to assess its health. Each space delimited token of the command is a separate array element. Commands exiting 0 are considered to be successful probes, whilst all other exit codes are considered failures.
+ command: [...string]
+ }
+
+ // +usage=Instructions for assessing container health by executing an HTTP GET request. Either this attribute or the exec attribute or the tcpSocket attribute MUST be specified. This attribute is mutually exclusive with both the exec attribute and the tcpSocket attribute.
+ httpGet?: {
+ // +usage=The endpoint, relative to the port, to which the HTTP GET request should be directed.
+ path: string
+ // +usage=The TCP socket within the container to which the HTTP GET request should be directed.
+ port: int
+ httpHeaders?: [...{
+ name: string
+ value: string
+ }]
+ }
+
+ // +usage=Instructions for assessing container health by probing a TCP socket. Either this attribute or the exec attribute or the httpGet attribute MUST be specified. This attribute is mutually exclusive with both the exec attribute and the httpGet attribute.
+ tcpSocket?: {
+ // +usage=The TCP socket within the container that should be probed to assess container health.
+ port: int
+ }
+
+ // +usage=Number of seconds after the container is started before the first probe is initiated.
+ initialDelaySeconds: *0 | int
+
+ // +usage=How often, in seconds, to execute the probe.
+ periodSeconds: *10 | int
+
+ // +usage=Number of seconds after which the probe times out.
+ timeoutSeconds: *1 | int
+
+ // +usage=Minimum consecutive successes for the probe to be considered successful after having failed.
+ successThreshold: *1 | int
+
+ // +usage=Number of consecutive failures required to determine the container is not alive (liveness probe) or not ready (readiness probe).
+ failureThreshold: *3 | int
+ }
+ workload:
+ definition:
+ apiVersion: apps/v1
+ kind: Deployment
+
diff --git a/charts/vela-minimal/templates/defwithtemplate/worker.yaml b/charts/vela-minimal/templates/defwithtemplate/worker.yaml
new file mode 100644
index 000000000..5748fde25
--- /dev/null
+++ b/charts/vela-minimal/templates/defwithtemplate/worker.yaml
@@ -0,0 +1,234 @@
+# Code generated by KubeVela templates. DO NOT EDIT. Please edit the original cue file.
+# Definition source cue file: vela-templates/definitions/internal/worker.cue
+apiVersion: core.oam.dev/v1beta1
+kind: ComponentDefinition
+metadata:
+ annotations:
+ definition.oam.dev/description: Describes long-running, scalable, containerized services that running at backend. They do NOT have network endpoint to receive external network traffic.
+ name: worker
+ namespace: {{.Values.systemDefinitionNamespace}}
+spec:
+ schematic:
+ cue:
+ template: |
+ output: {
+ apiVersion: "apps/v1"
+ kind: "Deployment"
+ spec: {
+ selector: matchLabels: "app.oam.dev/component": context.name
+
+ template: {
+ metadata: labels: "app.oam.dev/component": context.name
+
+ spec: {
+ containers: [{
+ name: context.name
+ image: parameter.image
+
+ if parameter["imagePullPolicy"] != _|_ {
+ imagePullPolicy: parameter.imagePullPolicy
+ }
+
+ if parameter["cmd"] != _|_ {
+ command: parameter.cmd
+ }
+
+ if parameter["env"] != _|_ {
+ env: parameter.env
+ }
+
+ if parameter["cpu"] != _|_ {
+ resources: {
+ limits: cpu: parameter.cpu
+ requests: cpu: parameter.cpu
+ }
+ }
+
+ if parameter["memory"] != _|_ {
+ resources: {
+ limits: memory: parameter.memory
+ requests: memory: parameter.memory
+ }
+ }
+
+ if parameter["volumes"] != _|_ {
+ volumeMounts: [ for v in parameter.volumes {
+ {
+ mountPath: v.mountPath
+ name: v.name
+ }}]
+ }
+
+ if parameter["livenessProbe"] != _|_ {
+ livenessProbe: parameter.livenessProbe
+ }
+
+ if parameter["readinessProbe"] != _|_ {
+ readinessProbe: parameter.readinessProbe
+ }
+
+ }]
+
+ if parameter["imagePullSecrets"] != _|_ {
+ imagePullSecrets: [ for v in parameter.imagePullSecrets {
+ name: v
+ },
+ ]
+ }
+
+ if parameter["volumes"] != _|_ {
+ volumes: [ for v in parameter.volumes {
+ {
+ name: v.name
+ if v.type == "pvc" {
+ persistentVolumeClaim: claimName: v.claimName
+ }
+ if v.type == "configMap" {
+ configMap: {
+ defaultMode: v.defaultMode
+ name: v.cmName
+ if v.items != _|_ {
+ items: v.items
+ }
+ }
+ }
+ if v.type == "secret" {
+ secret: {
+ defaultMode: v.defaultMode
+ secretName: v.secretName
+ if v.items != _|_ {
+ items: v.items
+ }
+ }
+ }
+ if v.type == "emptyDir" {
+ emptyDir: medium: v.medium
+ }
+ }}]
+ }
+ }
+ }
+ }
+ }
+ parameter: {
+ // +usage=Which image would you like to use for your service
+ // +short=i
+ image: string
+
+ // +usage=Specify image pull policy for your service
+ imagePullPolicy?: string
+
+ // +usage=Specify image pull secrets for your service
+ imagePullSecrets?: [...string]
+
+ // +usage=Commands to run in the container
+ cmd?: [...string]
+
+ // +usage=Define arguments by using environment variables
+ env?: [...{
+ // +usage=Environment variable name
+ name: string
+ // +usage=The value of the environment variable
+ value?: string
+ // +usage=Specifies a source the value of this var should come from
+ valueFrom?: {
+ // +usage=Selects a key of a secret in the pod's namespace
+ secretKeyRef: {
+ // +usage=The name of the secret in the pod's namespace to select from
+ name: string
+ // +usage=The key of the secret to select from. Must be a valid secret key
+ key: string
+ }
+ }
+ }]
+
+ // +usage=Number of CPU units for the service, like `0.5` (0.5 CPU core), `1` (1 CPU core)
+ cpu?: string
+
+ // +usage=Specifies the attributes of the memory resource required for the container.
+ memory?: string
+
+ // +usage=Declare volumes and volumeMounts
+ volumes?: [...{
+ name: string
+ mountPath: string
+ // +usage=Specify volume type, options: "pvc","configMap","secret","emptyDir"
+ type: "pvc" | "configMap" | "secret" | "emptyDir"
+ if type == "pvc" {
+ claimName: string
+ }
+ if type == "configMap" {
+ defaultMode: *420 | int
+ cmName: string
+ items?: [...{
+ key: string
+ path: string
+ mode: *511 | int
+ }]
+ }
+ if type == "secret" {
+ defaultMode: *420 | int
+ secretName: string
+ items?: [...{
+ key: string
+ path: string
+ mode: *511 | int
+ }]
+ }
+ if type == "emptyDir" {
+ medium: *"" | "Memory"
+ }
+ }]
+
+ // +usage=Instructions for assessing whether the container is alive.
+ livenessProbe?: #HealthProbe
+
+ // +usage=Instructions for assessing whether the container is in a suitable state to serve traffic.
+ readinessProbe?: #HealthProbe
+ }
+ #HealthProbe: {
+
+ // +usage=Instructions for assessing container health by executing a command. Either this attribute or the httpGet attribute or the tcpSocket attribute MUST be specified. This attribute is mutually exclusive with both the httpGet attribute and the tcpSocket attribute.
+ exec?: {
+ // +usage=A command to be executed inside the container to assess its health. Each space delimited token of the command is a separate array element. Commands exiting 0 are considered to be successful probes, whilst all other exit codes are considered failures.
+ command: [...string]
+ }
+
+ // +usage=Instructions for assessing container health by executing an HTTP GET request. Either this attribute or the exec attribute or the tcpSocket attribute MUST be specified. This attribute is mutually exclusive with both the exec attribute and the tcpSocket attribute.
+ httpGet?: {
+ // +usage=The endpoint, relative to the port, to which the HTTP GET request should be directed.
+ path: string
+ // +usage=The TCP socket within the container to which the HTTP GET request should be directed.
+ port: int
+ httpHeaders?: [...{
+ name: string
+ value: string
+ }]
+ }
+
+ // +usage=Instructions for assessing container health by probing a TCP socket. Either this attribute or the exec attribute or the httpGet attribute MUST be specified. This attribute is mutually exclusive with both the exec attribute and the httpGet attribute.
+ tcpSocket?: {
+ // +usage=The TCP socket within the container that should be probed to assess container health.
+ port: int
+ }
+
+ // +usage=Number of seconds after the container is started before the first probe is initiated.
+ initialDelaySeconds: *0 | int
+
+ // +usage=How often, in seconds, to execute the probe.
+ periodSeconds: *10 | int
+
+ // +usage=Number of seconds after which the probe times out.
+ timeoutSeconds: *1 | int
+
+ // +usage=Minimum consecutive successes for the probe to be considered successful after having failed.
+ successThreshold: *1 | int
+
+ // +usage=Number of consecutive failures required to determine the container is not alive (liveness probe) or not ready (readiness probe).
+ failureThreshold: *3 | int
+ }
+ workload:
+ definition:
+ apiVersion: apps/v1
+ kind: Deployment
+
diff --git a/charts/vela-minimal/templates/kubevela-apiserver.yaml b/charts/vela-minimal/templates/kubevela-apiserver.yaml
new file mode 100644
index 000000000..b4f9a1092
--- /dev/null
+++ b/charts/vela-minimal/templates/kubevela-apiserver.yaml
@@ -0,0 +1,68 @@
+{{- if .Values.apiServer.enabled -}}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ include "kubevela.fullname" . }}-apiserver
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "kubevela.labels" . | nindent 4 }}
+spec:
+ replicas: {{ .Values.apiServer.replicaCount }}
+ selector:
+ matchLabels:
+ {{- include "kubevela-apiserver.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ labels:
+ {{- include "kubevela-apiserver.selectorLabels" . | nindent 8 }}
+ spec:
+ {{- with .Values.imagePullSecrets }}
+ imagePullSecrets:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ serviceAccountName: {{ include "kubevela.serviceAccountName" . }}
+ securityContext:
+ {{- toYaml .Values.podSecurityContext | nindent 8 }}
+ containers:
+ - name: {{ include "kubevela.fullname" . }}-apiserver
+ securityContext:
+ {{- toYaml .Values.securityContext | nindent 12 }}
+ args:
+ - "apiserver"
+ - "--port={{ .Values.apiServer.port }}"
+ image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
+ imagePullPolicy: {{ quote .Values.image.pullPolicy }}
+ resources:
+ {{- toYaml .Values.resources | nindent 12 }}
+ ports:
+ - containerPort: {{ .Values.apiServer.port }}
+ {{- with .Values.nodeSelector }}
+ nodeSelector:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.affinity }}
+ affinity:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.tolerations }}
+ tolerations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "kubevela.fullname" . }}-apiserver
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "kubevela.labels" . | nindent 4 }}
+spec:
+ type: {{ .Values.apiServer.Service.type }}
+ ports:
+ - port: 80
+ targetPort: {{ .Values.apiServer.port }}
+ protocol: TCP
+ name: http
+ selector:
+ {{- include "kubevela-apiserver.selectorLabels" . | nindent 6 }}
+{{- end -}}
\ No newline at end of file
diff --git a/charts/vela-minimal/templates/kubevela-controller.yaml b/charts/vela-minimal/templates/kubevela-controller.yaml
new file mode 100644
index 000000000..379993796
--- /dev/null
+++ b/charts/vela-minimal/templates/kubevela-controller.yaml
@@ -0,0 +1,182 @@
+---
+
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: {{ include "kubevela.serviceAccountName" . }}
+ labels:
+ {{- include "kubevela.labels" . | nindent 4 }}
+ {{- with .Values.serviceAccount.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+{{- end }}
+
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: {{ include "kubevela.fullname" . }}:manager-rolebinding
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: "cluster-admin"
+subjects:
+ - kind: ServiceAccount
+ name: {{ include "kubevela.serviceAccountName" . }}
+ namespace: {{ .Release.Namespace }}
+
+---
+# permissions to do leader election.
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+ name: {{ include "kubevela.fullname" . }}:leader-election-role
+rules:
+ - apiGroups:
+ - ""
+ resources:
+ - configmaps
+ verbs:
+ - get
+ - list
+ - watch
+ - create
+ - update
+ - patch
+ - delete
+ - apiGroups:
+ - ""
+ resources:
+ - configmaps/status
+ verbs:
+ - get
+ - update
+ - patch
+ - apiGroups:
+ - ""
+ resources:
+ - events
+ verbs:
+ - create
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+ name: {{ include "kubevela.fullname" . }}:leader-election-rolebinding
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: Role
+ name: {{ include "kubevela.fullname" . }}:leader-election-role
+subjects:
+ - kind: ServiceAccount
+ name: {{ include "kubevela.serviceAccountName" . }}
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ include "kubevela.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "kubevela.labels" . | nindent 4 }}
+spec:
+ replicas: {{ .Values.replicaCount }}
+ selector:
+ matchLabels:
+ {{- include "kubevela.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ labels:
+ {{- include "kubevela.selectorLabels" . | nindent 8 }}
+ spec:
+ {{- with .Values.imagePullSecrets }}
+ imagePullSecrets:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ serviceAccountName: {{ include "kubevela.serviceAccountName" . }}
+ securityContext:
+ {{- toYaml .Values.podSecurityContext | nindent 8 }}
+ containers:
+ - name: {{ .Release.Name }}
+ securityContext:
+ {{- toYaml .Values.securityContext | nindent 12 }}
+ args:
+ - "--metrics-addr=:8080"
+ - "--enable-leader-election"
+ {{ if ne .Values.logFilePath "" }}
+ - "--log-file-path={{ .Values.logFilePath }}"
+ - "--log-file-max-size={{ .Values.logFileMaxSize }}"
+ {{ end }}
+ {{ if .Values.logDebug }}
+ - "--log-debug=true"
+ {{ end }}
+ {{ if .Values.admissionWebhooks.enabled }}
+ - "--use-webhook=true"
+ - "--webhook-port={{ .Values.webhookService.port }}"
+ - "--webhook-cert-dir={{ .Values.admissionWebhooks.certificate.mountPath }}"
+ - "--autogen-workload-definition={{ .Values.admissionWebhooks.autoGenWorkloadDefinition }}"
+ {{ end }}
+ - "--health-addr=:{{ .Values.healthCheck.port }}"
+ - "--apply-once-only={{ .Values.applyOnceOnly }}"
+ {{ if ne .Values.disableCaps "" }}
+ - "--disable-caps={{ .Values.disableCaps }}"
+ {{ end }}
+ - "--system-definition-namespace={{ .Values.systemDefinitionNamespace }}"
+ - "--application-revision-limit={{ .Values.applicationRevisionLimit }}"
+ - "--definition-revision-limit={{ .Values.definitionRevisionLimit }}"
+ - "--oam-spec-ver={{ .Values.OAMSpecVer }}"
+ {{ if .Values.multicluster.enabled }}
+ - "--enable-cluster-gateway"
+ {{ end }}
+ image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
+ imagePullPolicy: {{ quote .Values.image.pullPolicy }}
+ resources:
+ {{- toYaml .Values.resources | nindent 12 }}
+ {{ if .Values.admissionWebhooks.enabled }}
+ ports:
+ - containerPort: {{ .Values.webhookService.port }}
+ name: webhook-server
+ protocol: TCP
+ - containerPort: {{ .Values.healthCheck.port }}
+ name: healthz
+ protocol: TCP
+ readinessProbe:
+ httpGet:
+ path: /readyz
+ port: healthz
+ initialDelaySeconds: 30
+ periodSeconds: 5
+ livenessProbe:
+ httpGet:
+ path: /healthz
+ port: healthz
+ initialDelaySeconds: 90
+ periodSeconds: 5
+ volumeMounts:
+ - mountPath: {{ .Values.admissionWebhooks.certificate.mountPath }}
+ name: tls-cert-vol
+ readOnly: true
+ {{ end }}
+ {{ if .Values.admissionWebhooks.enabled }}
+ volumes:
+ - name: tls-cert-vol
+ secret:
+ defaultMode: 420
+ secretName: {{ template "kubevela.fullname" . }}-admission
+ {{ end }}
+ {{- with .Values.nodeSelector }}
+ nodeSelector:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.affinity }}
+ affinity:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.tolerations }}
+ tolerations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
\ No newline at end of file
diff --git a/charts/vela-minimal/templates/test/test-application.yaml b/charts/vela-minimal/templates/test/test-application.yaml
new file mode 100644
index 000000000..a805ce94d
--- /dev/null
+++ b/charts/vela-minimal/templates/test/test-application.yaml
@@ -0,0 +1,62 @@
+apiVersion: core.oam.dev/v1beta1
+kind: Application
+metadata:
+ annotations:
+ helm.sh/hook: test-success
+ helm.sh/hook-delete-policy: hook-succeeded
+ name: helm-test-vela-app
+spec:
+ components:
+ - name: helm-test-express-server
+ type: webservice
+ properties:
+ image: crccheck/hello-world
+ port: 8000
+ # traits:
+ # - type: ingress
+ # properties:
+ # domain: testsvc.example.com
+ # http:
+ # "/": 8000
+# ---
+# apiVersion: v1
+# kind: Pod
+# metadata:
+# name: "{{ .Release.Name }}-application-test"
+# annotations:
+# "helm.sh/hook": test
+# helm.sh/hook-delete-policy: hook-succeeded
+# spec:
+# serviceAccountName: kubevela-vela-core
+# containers:
+# - name: {{ .Release.Name }}-application-test
+# image: alpine/k8s:1.18.2
+# imagePullPolicy: IfNotPresent
+# command:
+# - /bin/bash
+# - -ec
+# - |
+
+# set -e
+
+# echo "Waiting application is ready..."
+
+# echo "waiting for application being Ready"
+# kubectl -n vela-system wait --for=condition=Ready applications.core.oam.dev helm-test-vela-app --timeout=3m
+# echo "application is Ready"
+
+# # wait for deploy being created
+# echo "waiting for deployment being available"
+# kubectl -n vela-system wait --for=condition=available deployments helm-test-express-server --timeout 3m
+# echo "deployment being available"
+
+# # wait for ingress being created
+# while ! [ `kubectl -n vela-system get ing helm-test-express-server | grep -v NAME | wc -l` = 1 ]; do
+# echo "waiting for ingress being created"
+# sleep 1
+# done
+
+
+
+# echo "Application and its components are created"
+# restartPolicy: Never
\ No newline at end of file
diff --git a/charts/vela-minimal/values.yaml b/charts/vela-minimal/values.yaml
new file mode 100644
index 000000000..e9ee83f32
--- /dev/null
+++ b/charts/vela-minimal/values.yaml
@@ -0,0 +1,125 @@
+# Default values for kubevela.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 1
+# Valid applyOnceOnly values: true/false/on/off/force
+applyOnceOnly: "off"
+
+disableCaps: "manualscalertrait,containerizedwokrload,envbinding"
+image:
+ repository: oamdev/vela-core
+ tag: latest
+ pullPolicy: Always
+
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: ""
+
+serviceAccount:
+ # Specifies whether a service account should be created
+ create: true
+ # Annotations to add to the service account
+ annotations: {}
+ # The name of the service account to use.
+ # If not set and create is true, a name is generated using the fullname template
+ name:
+
+podSecurityContext: {}
+ # fsGroup: 2000
+
+securityContext: {}
+ # capabilities:
+ # drop:
+ # - ALL
+ # readOnlyRootFilesystem: true
+ # runAsNonRoot: true
+ # runAsUser: 1000
+
+resources:
+ limits:
+ cpu: 500m
+ memory: 1Gi
+ requests:
+ cpu: 50m
+ memory: 20Mi
+
+webhookService:
+ type: ClusterIP
+ port: 9443
+
+healthCheck:
+ port: 9440
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
+
+rbac:
+ create: true
+
+admissionWebhooks:
+ enabled: true
+ failurePolicy: Fail
+ certificate:
+ mountPath: /etc/k8s-webhook-certs
+ patch:
+ enabled: true
+ image:
+ repository: oamdev/kube-webhook-certgen
+ tag: v2.2
+ pullPolicy: IfNotPresent
+ affinity: {}
+ tolerations: []
+ certManager:
+ enabled: false
+ # If autoGenWorkloadDefinition is true, webhook will auto generated workloadDefinition which componentDefinition refers to
+ autoGenWorkloadDefinition: true
+
+#Enable debug logs for development purpose
+logDebug: false
+
+#If non-empty, write log files in this path
+logFilePath: ""
+
+#Defines the maximum size a log file can grow to. Unit is megabytes.
+#If the value is 0, the maximum file size is unlimited.
+logFileMaxSize: 1024
+
+systemDefinitionNamespace: vela-system
+
+applicationRevisionLimit: 10
+
+definitionRevisionLimit: 20
+
+# concurrentReconciles is the concurrent reconcile number of the controller
+concurrentReconciles: 4
+
+# dependCheckWait is the time to wait for ApplicationConfiguration's dependent-resource ready
+dependCheckWait: 30s
+
+# OAMSpecVer is the oam spec version controller want to setup
+OAMSpecVer: "minimal"
+
+apiServer:
+ enabled: false
+ port: 8000
+ replicaCount: 1
+ Service:
+ type: ClusterIP
+
+multicluster:
+ enabled: false
+ clusterGateway:
+ replicaCount: 1
+ port: 9443
+ image:
+ repository: oamdev/cluster-gateway
+ tag: v1.1.1
+ pullPolicy: Always
+ resources:
+ limits:
+ cpu: 100m
+ memory: 200Mi
\ No newline at end of file
diff --git a/pkg/controller/common/types.go b/pkg/controller/common/types.go
index 36cfb54e9..ba736a496 100644
--- a/pkg/controller/common/types.go
+++ b/pkg/controller/common/types.go
@@ -23,6 +23,8 @@ const (
DisableAllCaps = "all"
// DisableNoneCaps disable none of capabilities
DisableNoneCaps = ""
+ // ManualScalerTraitControllerName is the controller name of manual scaler trait
+ ManualScalerTraitControllerName = "manualscalertrait"
// ContainerizedWorkloadControllerName is the controller name of containerized workload
ContainerizedWorkloadControllerName = "containerizedwokrload"
// HealthScopeControllerName is the controller name of healthScope controller
diff --git a/pkg/controller/core.oam.dev/v1alpha2/setup.go b/pkg/controller/core.oam.dev/v1alpha2/setup.go
index 73b220ab4..aad5b024a 100644
--- a/pkg/controller/core.oam.dev/v1alpha2/setup.go
+++ b/pkg/controller/core.oam.dev/v1alpha2/setup.go
@@ -33,7 +33,26 @@ import (
// Setup workload controllers.
func Setup(mgr ctrl.Manager, args controller.Args) error {
- if args.OAMSpecVer == "v0.3" || args.OAMSpecVer == "all" {
+ switch args.OAMSpecVer {
+ case "all":
+ for _, setup := range []func(ctrl.Manager, controller.Args) error{
+ application.Setup, applicationrollout.Setup, appdeployment.Setup,
+ traitdefinition.Setup, componentdefinition.Setup, policydefinition.Setup, workflowstepdefinition.Setup,
+ initializer.Setup, applicationconfiguration.Setup,
+ } {
+ if err := setup(mgr, args); err != nil {
+ return err
+ }
+ }
+ case "minimal":
+ for _, setup := range []func(ctrl.Manager, controller.Args) error{
+ application.Setup, traitdefinition.Setup, componentdefinition.Setup, policydefinition.Setup, workflowstepdefinition.Setup,
+ } {
+ if err := setup(mgr, args); err != nil {
+ return err
+ }
+ }
+ case "v0.3":
for _, setup := range []func(ctrl.Manager, controller.Args) error{
application.Setup, applicationrollout.Setup, appdeployment.Setup,
traitdefinition.Setup, componentdefinition.Setup, policydefinition.Setup, workflowstepdefinition.Setup,
@@ -43,10 +62,13 @@ func Setup(mgr ctrl.Manager, args controller.Args) error {
return err
}
}
- }
- if args.OAMSpecVer == "v0.2" || args.OAMSpecVer == "all" {
- if err := applicationconfiguration.Setup(mgr, args); err != nil {
- return err
+ case "v0.2":
+ for _, setup := range []func(ctrl.Manager, controller.Args) error{
+ applicationconfiguration.Setup,
+ } {
+ if err := setup(mgr, args); err != nil {
+ return err
+ }
}
}
return nil
diff --git a/pkg/controller/setup.go b/pkg/controller/setup.go
index 7f6c5317b..6dba0869d 100644
--- a/pkg/controller/setup.go
+++ b/pkg/controller/setup.go
@@ -44,6 +44,9 @@ func Setup(mgr ctrl.Manager, disableCaps string, args controller.Args) error {
case common.DisableAllCaps:
default:
disableCapsSet := utils.StoreInSet(disableCaps)
+ if !disableCapsSet.Contains(common.ManualScalerTraitControllerName) {
+ functions = append(functions, manualscalertrait.Setup)
+ }
if !disableCapsSet.Contains(common.ContainerizedWorkloadControllerName) {
functions = append(functions, containerizedworkload.Setup)
}
diff --git a/pkg/controller/utils/utils.go b/pkg/controller/utils/utils.go
index 58df80020..db106bb02 100644
--- a/pkg/controller/utils/utils.go
+++ b/pkg/controller/utils/utils.go
@@ -70,7 +70,13 @@ const LabelPodSpecable = "workload.oam.dev/podspecable"
// allBuiltinCapabilities includes all builtin controllers
// TODO(zzxwill) needs to automatically discovery all controllers
-var allBuiltinCapabilities = mapset.NewSet(common.RolloutControllerName, common.ContainerizedWorkloadControllerName, common.HealthScopeControllerName)
+var allBuiltinCapabilities = mapset.NewSet(
+ common.ManualScalerTraitControllerName,
+ common.RolloutControllerName,
+ common.ContainerizedWorkloadControllerName,
+ common.HealthScopeControllerName,
+ common.EnvBindingControllerName,
+)
// GetPodSpecPath get podSpec field and label
func GetPodSpecPath(workloadDef *v1alpha2.WorkloadDefinition) (string, bool) {
diff --git a/pkg/webhook/core.oam.dev/register.go b/pkg/webhook/core.oam.dev/register.go
index 44765effe..971e9c4db 100644
--- a/pkg/webhook/core.oam.dev/register.go
+++ b/pkg/webhook/core.oam.dev/register.go
@@ -32,8 +32,8 @@ import (
// Register will be called in main and register all validation handlers
func Register(mgr manager.Manager, args controller.Args) {
-
- if args.OAMSpecVer == "v0.3" || args.OAMSpecVer == "all" {
+ switch args.OAMSpecVer {
+ case "all":
application.RegisterValidatingHandler(mgr, args)
componentdefinition.RegisterMutatingHandler(mgr, args)
componentdefinition.RegisterValidatingHandler(mgr, args)
@@ -41,9 +41,24 @@ func Register(mgr manager.Manager, args controller.Args) {
initializer.RegisterValidatingHandler(mgr, args)
applicationrollout.RegisterMutatingHandler(mgr)
applicationrollout.RegisterValidatingHandler(mgr)
- }
-
- if args.OAMSpecVer == "v0.2" || args.OAMSpecVer == "all" {
+ applicationconfiguration.RegisterMutatingHandler(mgr)
+ applicationconfiguration.RegisterValidatingHandler(mgr, args)
+ component.RegisterMutatingHandler(mgr, args)
+ component.RegisterValidatingHandler(mgr)
+ case "minimal":
+ application.RegisterValidatingHandler(mgr, args)
+ componentdefinition.RegisterMutatingHandler(mgr, args)
+ componentdefinition.RegisterValidatingHandler(mgr, args)
+ traitdefinition.RegisterValidatingHandler(mgr, args)
+ case "v0.3":
+ application.RegisterValidatingHandler(mgr, args)
+ componentdefinition.RegisterMutatingHandler(mgr, args)
+ componentdefinition.RegisterValidatingHandler(mgr, args)
+ traitdefinition.RegisterValidatingHandler(mgr, args)
+ initializer.RegisterValidatingHandler(mgr, args)
+ applicationrollout.RegisterMutatingHandler(mgr)
+ applicationrollout.RegisterValidatingHandler(mgr)
+ case "v0.2":
applicationconfiguration.RegisterMutatingHandler(mgr)
applicationconfiguration.RegisterValidatingHandler(mgr, args)
component.RegisterMutatingHandler(mgr, args)