From e0d4d2e4b66632fc629e0f297a08aee631c97023 Mon Sep 17 00:00:00 2001 From: nicolaferraro Date: Tue, 13 Oct 2020 10:53:26 +0200 Subject: [PATCH] Release Helm charts and bump versions --- .../builds.camel.apache.org.crd.yaml | 0 ...camel-k.v1.2.0.clusterserviceversion.yaml} | 6 +- .../camelcatalogs.camel.apache.org.crd.yaml | 0 .../integrationkits.camel.apache.org.crd.yaml | 0 ...grationplatforms.camel.apache.org.crd.yaml | 0 .../integrations.camel.apache.org.crd.yaml | 0 .../kameletbindings.camel.apache.org.crd.yaml | 0 .../kamelets.camel.apache.org.crd.yaml | 0 .../builds.camel.apache.org.crd.yaml | 4633 +++++++++++++++++ ...v1.3.0-snapshot.clusterserviceversion.yaml | 567 ++ .../camelcatalogs.camel.apache.org.crd.yaml | 263 + .../integrationkits.camel.apache.org.crd.yaml | 214 + ...grationplatforms.camel.apache.org.crd.yaml | 370 ++ .../integrations.camel.apache.org.crd.yaml | 361 ++ .../kameletbindings.camel.apache.org.crd.yaml | 323 ++ .../kamelets.camel.apache.org.crd.yaml | 603 +++ .../camel-k-dev/camel-k-dev.package.yaml | 2 +- deploy/operator-deployment.yaml | 2 +- docs/charts/camel-k-0.4.0.tgz | Bin 0 -> 44039 bytes docs/charts/index.yaml | 39 +- helm/camel-k/Chart.yaml | 4 +- helm/camel-k/values.yaml | 2 +- pkg/util/defaults/defaults.go | 2 +- script/Makefile | 4 +- 24 files changed, 7377 insertions(+), 18 deletions(-) rename deploy/olm-catalog/camel-k-dev/{1.2.0-snapshot => 1.2.0}/builds.camel.apache.org.crd.yaml (100%) rename deploy/olm-catalog/camel-k-dev/{1.2.0-snapshot/camel-k.v1.2.0-snapshot.clusterserviceversion.yaml => 1.2.0/camel-k.v1.2.0.clusterserviceversion.yaml} (99%) rename deploy/olm-catalog/camel-k-dev/{1.2.0-snapshot => 1.2.0}/camelcatalogs.camel.apache.org.crd.yaml (100%) rename deploy/olm-catalog/camel-k-dev/{1.2.0-snapshot => 1.2.0}/integrationkits.camel.apache.org.crd.yaml (100%) rename deploy/olm-catalog/camel-k-dev/{1.2.0-snapshot => 1.2.0}/integrationplatforms.camel.apache.org.crd.yaml (100%) rename deploy/olm-catalog/camel-k-dev/{1.2.0-snapshot => 1.2.0}/integrations.camel.apache.org.crd.yaml (100%) rename deploy/olm-catalog/camel-k-dev/{1.2.0-snapshot => 1.2.0}/kameletbindings.camel.apache.org.crd.yaml (100%) rename deploy/olm-catalog/camel-k-dev/{1.2.0-snapshot => 1.2.0}/kamelets.camel.apache.org.crd.yaml (100%) create mode 100644 deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/builds.camel.apache.org.crd.yaml create mode 100644 deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/camel-k.v1.3.0-snapshot.clusterserviceversion.yaml create mode 100644 deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml create mode 100644 deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrationkits.camel.apache.org.crd.yaml create mode 100644 deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml create mode 100644 deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrations.camel.apache.org.crd.yaml create mode 100644 deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/kameletbindings.camel.apache.org.crd.yaml create mode 100644 deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/kamelets.camel.apache.org.crd.yaml create mode 100644 docs/charts/camel-k-0.4.0.tgz diff --git a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/builds.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.2.0/builds.camel.apache.org.crd.yaml similarity index 100% rename from deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/builds.camel.apache.org.crd.yaml rename to deploy/olm-catalog/camel-k-dev/1.2.0/builds.camel.apache.org.crd.yaml diff --git a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/camel-k.v1.2.0-snapshot.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.2.0/camel-k.v1.2.0.clusterserviceversion.yaml similarity index 99% rename from deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/camel-k.v1.2.0-snapshot.clusterserviceversion.yaml rename to deploy/olm-catalog/camel-k-dev/1.2.0/camel-k.v1.2.0.clusterserviceversion.yaml index fb43d7f89b..21146bff51 100644 --- a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/camel-k.v1.2.0-snapshot.clusterserviceversion.yaml +++ b/deploy/olm-catalog/camel-k-dev/1.2.0/camel-k.v1.2.0.clusterserviceversion.yaml @@ -157,14 +157,14 @@ metadata: capabilities: Full Lifecycle categories: Integration & Delivery certified: "false" - containerImage: docker.io/apache/camel-k:1.2.0-SNAPSHOT + containerImage: docker.io/apache/camel-k:1.2.0 createdAt: "2020-06-09T02:45:00Z" description: Apache Camel K is a lightweight integration platform, born on Kubernetes, with serverless superpowers. repository: https://github.com/apache/camel-k operators.operatorframework.io/internal-objects: '["builds.camel.apache.org","integrationkits.camel.apache.org","camelcatalogs.camel.apache.org"]' support: Camel - name: camel-k-operator.v1.2.0-snapshot + name: camel-k-operator.v1.2.0 namespace: placeholder spec: relatedImages: @@ -312,7 +312,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/apache/camel-k:1.2.0-SNAPSHOT + image: docker.io/apache/camel-k:1.2.0 imagePullPolicy: IfNotPresent name: camel-k-operator resources: {} diff --git a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.2.0/camelcatalogs.camel.apache.org.crd.yaml similarity index 100% rename from deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml rename to deploy/olm-catalog/camel-k-dev/1.2.0/camelcatalogs.camel.apache.org.crd.yaml diff --git a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/integrationkits.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.2.0/integrationkits.camel.apache.org.crd.yaml similarity index 100% rename from deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/integrationkits.camel.apache.org.crd.yaml rename to deploy/olm-catalog/camel-k-dev/1.2.0/integrationkits.camel.apache.org.crd.yaml diff --git a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.2.0/integrationplatforms.camel.apache.org.crd.yaml similarity index 100% rename from deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml rename to deploy/olm-catalog/camel-k-dev/1.2.0/integrationplatforms.camel.apache.org.crd.yaml diff --git a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/integrations.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.2.0/integrations.camel.apache.org.crd.yaml similarity index 100% rename from deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/integrations.camel.apache.org.crd.yaml rename to deploy/olm-catalog/camel-k-dev/1.2.0/integrations.camel.apache.org.crd.yaml diff --git a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/kameletbindings.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.2.0/kameletbindings.camel.apache.org.crd.yaml similarity index 100% rename from deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/kameletbindings.camel.apache.org.crd.yaml rename to deploy/olm-catalog/camel-k-dev/1.2.0/kameletbindings.camel.apache.org.crd.yaml diff --git a/deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/kamelets.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.2.0/kamelets.camel.apache.org.crd.yaml similarity index 100% rename from deploy/olm-catalog/camel-k-dev/1.2.0-snapshot/kamelets.camel.apache.org.crd.yaml rename to deploy/olm-catalog/camel-k-dev/1.2.0/kamelets.camel.apache.org.crd.yaml diff --git a/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/builds.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/builds.camel.apache.org.crd.yaml new file mode 100644 index 0000000000..b98271c3a4 --- /dev/null +++ b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/builds.camel.apache.org.crd.yaml @@ -0,0 +1,4633 @@ +# --------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# --------------------------------------------------------------------------- + +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: "camel-k" + annotations: + controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: builds.camel.apache.org +spec: + additionalPrinterColumns: + - JSONPath: .status.phase + description: The build phase + name: Phase + type: string + - JSONPath: .metadata.creationTimestamp + description: The time at which the build was created + name: Age + type: date + - JSONPath: .status.startedAt + description: The time at which the build was last (re-)started + name: Started + type: date + - JSONPath: .status.duration + description: The build last execution duration + name: Duration + type: string + - JSONPath: .status.failure.recovery.attempt + description: The number of execution attempts + name: Attempts + type: integer + group: camel.apache.org + names: + categories: + - kamel + - camel + kind: Build + listKind: BuildList + plural: builds + shortNames: + - ikb + singular: build + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + description: Build is the Schema for the builds 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: BuildSpec defines the desired state of Build + properties: + tasks: + items: + description: Task -- + properties: + builder: + description: BuilderTask -- + properties: + affinity: + description: Affinity is a group of affinity scheduling rules. + properties: + nodeAffinity: + description: Describes node affinity scheduling rules + for the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the + greatest sum of weights, i.e. for each node that + meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if + the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term + matches all objects with implicit weight 0 (i.e. + it's a no-op). A null preferred scheduling term + matches no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated + with the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, the + values array must have a single + element, which will be interpreted + as an integer. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, the + values array must have a single + element, which will be interpreted + as an integer. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + description: Weight associated with matching + the corresponding nodeSelectorTerm, in the + range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the + affinity requirements specified by this field cease + to be met at some point during pod execution (e.g. + due to an update), the system may or may not try + to eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector + terms. The terms are ORed. + items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, the + values array must have a single + element, which will be interpreted + as an integer. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, the + values array must have a single + element, which will be interpreted + as an integer. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the + greatest sum of weights, i.e. for each node that + meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if + the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum + are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, + associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of + resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. + This array is replaced during + a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of + {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which + namespaces the labelSelector applies to + (matches against); null or empty list + means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching + the corresponding podAffinityTerm, in the + range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the + affinity requirements specified by this field cease + to be met at some point during pod execution (e.g. + due to a pod label update), the system may or may + not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes + corresponding to each podAffinityTerm are intersected, + i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those + matching the labelSelector relative to the given + namespace(s)) that this pod should be co-located + (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node + whose value of the label with key + matches that of any node on which a pod of the + set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, + etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the + greatest sum of weights, i.e. for each node that + meets all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity + expressions, etc.), compute a sum by iterating through + the elements of this field and adding "weight" to + the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum + are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, + associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of + resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. + This array is replaced during + a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of + {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which + namespaces the labelSelector applies to + (matches against); null or empty list + means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching + the corresponding podAffinityTerm, in the + range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the + anti-affinity requirements specified by this field + cease to be met at some point during pod execution + (e.g. due to a pod label update), the system may + or may not try to eventually evict the pod from + its node. When there are multiple elements, the + lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those + matching the labelSelector relative to the given + namespace(s)) that this pod should be co-located + (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node + whose value of the label with key + matches that of any node on which a pod of the + set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + baseImage: + type: string + buildDir: + type: string + dependencies: + items: + type: string + type: array + image: + type: string + maven: + description: MavenSpec -- + properties: + localRepository: + type: string + settings: + description: ValueSource -- + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + 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 + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + 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 + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + type: object + timeout: + type: string + type: object + meta: + description: This is required until https://github.com/kubernetes-sigs/controller-tools/pull/395 + gets merged + type: object + x-kubernetes-preserve-unknown-fields: true + name: + type: string + properties: + additionalProperties: + type: string + type: object + resources: + items: + description: ResourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + mountPath: + type: string + name: + type: string + type: + description: ResourceType -- + type: string + type: object + type: array + runtime: + description: RuntimeSpec -- + properties: + applicationClass: + type: string + capabilities: + additionalProperties: + description: Capability -- + properties: + dependencies: + items: + description: MavenArtifact -- + properties: + artifactId: + type: string + groupId: + type: string + version: + type: string + required: + - artifactId + - groupId + type: object + type: array + metadata: + additionalProperties: + type: string + type: object + required: + - dependencies + type: object + type: object + dependencies: + items: + description: MavenArtifact -- + properties: + artifactId: + type: string + groupId: + type: string + version: + type: string + required: + - artifactId + - groupId + type: object + type: array + metadata: + additionalProperties: + type: string + type: object + provider: + description: RuntimeProvider -- + type: string + version: + type: string + required: + - applicationClass + - dependencies + - provider + - version + type: object + sources: + items: + description: SourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + interceptors: + description: Interceptors are optional identifiers the + org.apache.camel.k.RoutesLoader uses to pre/post process + sources + items: + type: string + type: array + language: + description: Language -- + type: string + loader: + description: Loader is an optional id of the org.apache.camel.k.RoutesLoader + that will interpret this source at runtime + type: string + name: + type: string + property-names: + description: List of property names defined in the source + (e.g. if type is "template") + items: + type: string + type: array + type: + description: Type defines the kind of source described + by this object + type: string + type: object + type: array + steps: + items: + type: string + type: array + timeout: + type: string + volumeMounts: + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which the + volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and the + other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise + (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's + volume should be mounted. Defaults to "" (volume's + root). + type: string + subPathExpr: + description: Expanded path within the volume from which + the container's volume should be mounted. Behaves + similarly to SubPath but environment variable references + $(VAR_NAME) are expanded using the container's environment. + Defaults to "" (volume's root). SubPathExpr and SubPath + are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + volumes: + items: + description: Volume represents a named volume in a pod that + may be accessed by any container in the pod. + properties: + awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS + Disk resource that is attached to a kubelet''s host + machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + properties: + fsType: + description: 'Filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you + want to mount. If omitted, the default is to mount + by volume name. Examples: For volume /dev/sda1, + you specify the partition as "1". Similarly, the + volume partition for /dev/sda is "0" (or you can + leave the property empty).' + format: int32 + type: integer + readOnly: + description: 'Specify "true" to force and set the + ReadOnly property in VolumeMounts to "true". If + omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: boolean + volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: string + required: + - volumeID + type: object + azureDisk: + description: AzureDisk represents an Azure Data Disk + mount on the host and bind mount to the pod. + properties: + cachingMode: + description: 'Host Caching mode: None, Read Only, + Read Write.' + type: string + diskName: + description: The Name of the data disk in the blob + storage + type: string + diskURI: + description: The URI the data disk in the blob storage + type: string + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed + data disk (only in managed availability set). + defaults to shared' + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. + properties: + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretName: + description: the name of secret that contains Azure + Storage Account Name and Key + type: string + shareName: + description: Share Name + type: string + required: + - secretName + - shareName + type: object + cephfs: + description: CephFS represents a Ceph FS mount on the + host that shares a pod's lifetime + properties: + monitors: + description: 'Required: Monitors is a collection + of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + items: + type: string + type: array + path: + description: 'Optional: Used as the mounted root, + rather than the full Ceph tree, default is /' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting + in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: boolean + secretFile: + description: 'Optional: SecretFile is the path to + key ring for User, default is /etc/ceph/user.secret + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + secretRef: + description: 'Optional: SecretRef is reference to + the authentication secret for User, default is + empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + 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 + user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + required: + - monitors + type: object + cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + properties: + fsType: + description: 'Filesystem type to mount. Must be + a filesystem type supported by the host operating + system. Examples: "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. More info: + https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting + in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: boolean + secretRef: + description: 'Optional: points to a secret object + containing parameters used to connect to OpenStack.' + 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 + volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + required: + - volumeID + type: object + configMap: + description: ConfigMap represents a configMap that should + populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and + 0777. Defaults to 0644. Directories within the + path are not affected by this setting. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result can + be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file whose + name is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. + If a key is specified which is not present in + the ConfigMap, the volume setup will error unless + it is marked optional. Paths must be relative + and may not contain the '..' path or start with + '..'. + items: + description: Maps a string key to a path within + a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and + 0777. If not specified, the volume defaultMode + will be used. This might be in conflict + with other options that affect the file + mode, like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element '..'. + May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + 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 + optional: + description: Specify whether the ConfigMap or its + keys must be defined + type: boolean + type: object + csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver + (Alpha feature). + properties: + driver: + description: Driver is the name of the CSI driver + that handles this volume. Consult with your admin + for the correct name as registered in the cluster. + type: string + fsType: + description: Filesystem type to mount. Ex. "ext4", + "xfs", "ntfs". If not provided, the empty value + is passed to the associated CSI driver which will + determine the default filesystem to apply. + type: string + nodePublishSecretRef: + description: NodePublishSecretRef is a reference + to the secret object containing sensitive information + to pass to the CSI driver to complete the CSI + NodePublishVolume and NodeUnpublishVolume calls. + This field is optional, and may be empty if no + secret is required. If the secret object contains + more than one secret, all secret references are + passed. + 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 + readOnly: + description: Specifies a read-only configuration + for the volume. Defaults to false (read/write). + type: boolean + volumeAttributes: + additionalProperties: + type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. + Consult your driver's documentation for supported + values. + type: object + required: + - driver + type: object + downwardAPI: + description: DownwardAPI represents downward API about + the pod that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and + 0777. Defaults to 0644. Directories within the + path are not affected by this setting. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result can + be other mode bits set.' + format: int32 + type: integer + items: + description: Items is a list of downward API volume + file + items: + description: DownwardAPIVolumeFile represents + information to create the file containing the + pod field + properties: + fieldRef: + description: 'Required: Selects a field of + the pod: only annotations, labels, name + and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the + FieldPath is written in terms of, defaults + to "v1". + type: string + fieldPath: + description: Path of the field to select + in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and + 0777. If not specified, the volume defaultMode + will be used. This might be in conflict + with other options that affect the file + mode, like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of + the relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' + properties: + containerName: + description: 'Container name: required + for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format + of the exposed resources, defaults to + "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + properties: + medium: + description: 'What type of storage medium should + back this directory. The default is "" which means + to use the node''s default medium. Must be an + empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also + applicable for memory medium. The maximum usage + on memory medium EmptyDir would be the minimum + value between the SizeLimit specified here and + the sum of memory limits of all containers in + a pod. The default is nil which means that the + limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + fc: + description: FC represents a Fibre Channel resource + that is attached to a kubelet's host machine and then + exposed to the pod. + properties: + fsType: + description: 'Filesystem type to mount. Must be + a filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. TODO: how + do we prevent errors in the filesystem from compromising + the machine' + type: string + lun: + description: 'Optional: FC target lun number' + format: int32 + type: integer + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting + in VolumeMounts.' + type: boolean + targetWWNs: + description: 'Optional: FC target worldwide names + (WWNs)' + items: + type: string + type: array + wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' + items: + type: string + type: array + type: object + flexVolume: + description: FlexVolume represents a generic volume + resource that is provisioned/attached using an exec + based plugin. + properties: + driver: + description: Driver is the name of the driver to + use for this volume. + type: string + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". The default + filesystem depends on FlexVolume script. + type: string + options: + additionalProperties: + type: string + description: 'Optional: Extra command options if + any.' + type: object + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting + in VolumeMounts.' + type: boolean + secretRef: + description: 'Optional: SecretRef is reference to + the secret object containing sensitive information + to pass to the plugin scripts. This may be empty + if no secret object is specified. If the secret + object contains more than one secret, all secrets + are passed to the plugin scripts.' + 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 + required: + - driver + type: object + flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running + properties: + datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated + type: string + datasetUUID: + description: UUID of the dataset. This is unique + identifier of a Flocker dataset + type: string + type: object + gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + properties: + fsType: + description: 'Filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you + want to mount. If omitted, the default is to mount + by volume name. Examples: For volume /dev/sda1, + you specify the partition as "1". Similarly, the + volume partition for /dev/sda is "0" (or you can + leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + format: int32 + type: integer + pdName: + description: 'Unique name of the PD resource in + GCE. Used to identify the disk in GCE. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: boolean + required: + - pdName + type: object + gitRepo: + description: 'GitRepo represents a git repository at + a particular revision. DEPRECATED: GitRepo is deprecated. + To provision a container with a git repo, mount an + EmptyDir into an InitContainer that clones the repo + using git, then mount the EmptyDir into the Pod''s + container.' + properties: + directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git + repository in the subdirectory with the given + name. + type: string + repository: + description: Repository URL + type: string + revision: + description: Commit hash for the specified revision. + type: string + required: + - repository + type: object + glusterfs: + description: 'Glusterfs represents a Glusterfs mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/glusterfs/README.md' + properties: + endpoints: + description: 'EndpointsName is the endpoint name + that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + path: + description: 'Path is the Glusterfs volume path. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. + Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: boolean + required: + - endpoints + - path + type: object + hostPath: + description: 'HostPath represents a pre-existing file + or directory on the host machine that is directly + exposed to the container. This is generally used for + system agents or other privileged things that are + allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use + host directory mounts and who can/can not mount host + directories as read/write.' + properties: + path: + description: 'Path of the directory on the host. + If the path is a symlink, it will follow the link + to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + type: + description: 'Type for HostPath Volume Defaults + to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + required: + - path + type: object + iscsi: + description: 'ISCSI represents an ISCSI Disk resource + that is attached to a kubelet''s host machine and + then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' + properties: + chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP + authentication + type: boolean + chapAuthSession: + description: whether support iSCSI Session CHAP + authentication + type: boolean + fsType: + description: 'Filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, + new iSCSI interface : + will be created for the connection. + type: string + iqn: + description: Target iSCSI Qualified Name. + type: string + iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). + type: string + lun: + description: iSCSI Target Lun number. + format: int32 + type: integer + portals: + description: iSCSI Target Portal List. The portal + is either an IP or ip_addr:port if the port is + other than default (typically TCP ports 860 and + 3260). + items: + type: string + type: array + readOnly: + description: ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. + type: boolean + secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication + 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 + targetPortal: + description: iSCSI Target Portal. The Portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + description: 'Volume''s name. Must be a DNS_LABEL and + unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + nfs: + description: 'NFS represents an NFS mount on the host + that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + properties: + path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: boolean + server: + description: 'Server is the hostname or IP address + of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same + namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in + VolumeMounts. Default false. + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine + properties: + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + pdID: + description: ID that identifies Photon Controller + persistent disk + type: string + required: + - pdID + type: object + portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine + properties: + fsType: + description: FSType represents the filesystem type + to mount Must be a filesystem type supported by + the host operating system. Ex. "ext4", "xfs". + Implicitly inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + volumeID: + description: VolumeID uniquely identifies a Portworx + volume + type: string + required: + - volumeID + type: object + projected: + description: Items for all in one resources secrets, + configmaps, and downward API + properties: + defaultMode: + description: Mode bits to use on created files by + default. Must be a value between 0 and 0777. Directories + within the path are not affected by this setting. + This might be in conflict with other options that + affect the file mode, like fsGroup, and the result + can be other mode bits set. + format: int32 + type: integer + sources: + description: list of volume projections + items: + description: Projection that may be projected + along with other supported volume types + properties: + configMap: + description: information about the configMap + data to project + properties: + items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the + volume as a file whose name is the key + and content is the value. If specified, + the listed keys will be projected into + the specified paths, and unlisted keys + will not be present. If a key is specified + which is not present in the ConfigMap, + the volume setup will error unless it + is marked optional. Paths must be relative + and may not contain the '..' path or + start with '..'. + items: + description: Maps a string key to a + path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits + to use on this file, must be a + value between 0 and 0777. If not + specified, the volume defaultMode + will be used. This might be in + conflict with other options that + affect the file mode, like fsGroup, + and the result can be other mode + bits set.' + format: int32 + type: integer + path: + description: The relative path of + the file to map the key to. May + not be an absolute path. May not + contain the path element '..'. + May not start with the string + '..'. + type: string + required: + - key + - path + type: object + type: array + 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 + optional: + description: Specify whether the ConfigMap + or its keys must be defined + type: boolean + type: object + downwardAPI: + description: information about the downwardAPI + data to project + properties: + items: + description: Items is a list of DownwardAPIVolume + file + items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field + properties: + fieldRef: + description: 'Required: Selects + a field of the pod: only annotations, + labels, name and namespace are + supported.' + properties: + apiVersion: + description: Version of the + schema the FieldPath is written + in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field + to select in the specified + API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits + to use on this file, must be a + value between 0 and 0777. If not + specified, the volume defaultMode + will be used. This might be in + conflict with other options that + affect the file mode, like fsGroup, + and the result can be other mode + bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the + relative path name of the file + to be created. Must not be absolute + or contain the ''..'' path. Must + be utf-8 encoded. The first item + of the relative path must not + start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource + of the container: only resources + limits and requests (limits.cpu, + limits.memory, requests.cpu and + requests.memory) are currently + supported.' + properties: + containerName: + description: 'Container name: + required for volumes, optional + for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output + format of the exposed resources, + defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource + to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + description: information about the secret + data to project + properties: + items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and + content is the value. If specified, + the listed keys will be projected into + the specified paths, and unlisted keys + will not be present. If a key is specified + which is not present in the Secret, + the volume setup will error unless it + is marked optional. Paths must be relative + and may not contain the '..' path or + start with '..'. + items: + description: Maps a string key to a + path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits + to use on this file, must be a + value between 0 and 0777. If not + specified, the volume defaultMode + will be used. This might be in + conflict with other options that + affect the file mode, like fsGroup, + and the result can be other mode + bits set.' + format: int32 + type: integer + path: + description: The relative path of + the file to map the key to. May + not be an absolute path. May not + contain the path element '..'. + May not start with the string + '..'. + type: string + required: + - key + - path + type: object + type: array + 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 + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + type: object + serviceAccountToken: + description: information about the serviceAccountToken + data to project + properties: + audience: + description: Audience is the intended + audience of the token. A recipient of + a token must identify itself with an + identifier specified in the audience + of the token, and otherwise should reject + the token. The audience defaults to + the identifier of the apiserver. + type: string + expirationSeconds: + description: ExpirationSeconds is the + requested duration of validity of the + service account token. As the token + approaches expiration, the kubelet volume + plugin will proactively rotate the service + account token. The kubelet will start + trying to rotate the token if the token + is older than 80 percent of its time + to live or if the token is older than + 24 hours.Defaults to 1 hour and must + be at least 10 minutes. + format: int64 + type: integer + path: + description: Path is the path relative + to the mount point of the file to project + the token into. + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + description: Quobyte represents a Quobyte mount on the + host that shares a pod's lifetime + properties: + group: + description: Group to map volume access to Default + is no group + type: string + readOnly: + description: ReadOnly here will force the Quobyte + volume to be mounted with read-only permissions. + Defaults to false. + type: boolean + registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string + as host:port pair (multiple entries are separated + with commas) which acts as the central registry + for volumes + type: string + tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned + Quobyte volumes, value is set by the plugin + type: string + user: + description: User to map volume access to Defaults + to serivceaccount user + type: string + volume: + description: Volume is a string that references + an already created Quobyte volume by name. + type: string + required: + - registry + - volume + type: object + rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' + properties: + fsType: + description: 'Filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + keyring: + description: 'Keyring is the path to key ring for + RBDUser. Default is /etc/ceph/keyring. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + monitors: + description: 'A collection of Ceph monitors. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + items: + type: string + type: array + pool: + description: 'The rados pool name. Default is rbd. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: boolean + secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + 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 + user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + required: + - image + - monitors + type: object + scaleIO: + description: ScaleIO represents a ScaleIO persistent + volume attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Default is + "xfs". + type: string + gateway: + description: The host address of the ScaleIO API + Gateway. + type: string + protectionDomain: + description: The name of the ScaleIO Protection + Domain for the configured storage. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef references to the secret + for ScaleIO user and other sensitive information. + If this is not provided, Login operation will + fail. + 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 + sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false + type: boolean + storageMode: + description: Indicates whether the storage for a + volume should be ThickProvisioned or ThinProvisioned. + Default is ThinProvisioned. + type: string + storagePool: + description: The ScaleIO Storage Pool associated + with the protection domain. + type: string + system: + description: The name of the storage system as configured + in ScaleIO. + type: string + volumeName: + description: The name of a volume already created + in the ScaleIO system that is associated with + this volume source. + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + description: 'Secret represents a secret that should + populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + properties: + defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and + 0777. Defaults to 0644. Directories within the + path are not affected by this setting. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result can + be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. + If a key is specified which is not present in + the Secret, the volume setup will error unless + it is marked optional. Paths must be relative + and may not contain the '..' path or start with + '..'. + items: + description: Maps a string key to a path within + a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and + 0777. If not specified, the volume defaultMode + will be used. This might be in conflict + with other options that affect the file + mode, like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element '..'. + May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + optional: + description: Specify whether the Secret or its keys + must be defined + type: boolean + secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + type: string + type: object + storageos: + description: StorageOS represents a StorageOS volume + attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef specifies the secret to use + for obtaining the StorageOS API credentials. If + not specified, default values will be attempted. + 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 + volumeName: + description: VolumeName is the human-readable name + of the StorageOS volume. Volume names are only + unique within a namespace. + type: string + volumeNamespace: + description: VolumeNamespace specifies the scope + of the volume within StorageOS. If no namespace + is specified then the Pod's namespace will be + used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. + Set VolumeName to any name to override the default + behaviour. Set to "default" if you are not using + namespaces within StorageOS. Namespaces that do + not pre-exist within StorageOS will be created. + type: string + type: object + vsphereVolume: + description: VsphereVolume represents a vSphere volume + attached and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. + type: string + storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. + type: string + volumePath: + description: Path that identifies vSphere volume + vmdk + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + type: object + image: + description: ImageTask -- + properties: + affinity: + description: Affinity is a group of affinity scheduling rules. + properties: + nodeAffinity: + description: Describes node affinity scheduling rules + for the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the + greatest sum of weights, i.e. for each node that + meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if + the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. + items: + description: An empty preferred scheduling term + matches all objects with implicit weight 0 (i.e. + it's a no-op). A null preferred scheduling term + matches no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated + with the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, the + values array must have a single + element, which will be interpreted + as an integer. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, the + values array must have a single + element, which will be interpreted + as an integer. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + weight: + description: Weight associated with matching + the corresponding nodeSelectorTerm, in the + range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the + affinity requirements specified by this field cease + to be met at some point during pod execution (e.g. + due to an update), the system may or may not try + to eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector + terms. The terms are ORed. + items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, the + values array must have a single + element, which will be interpreted + as an integer. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: The label key that the + selector applies to. + type: string + operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. + type: string + values: + description: An array of string values. + If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, the + values array must have a single + element, which will be interpreted + as an integer. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + type: array + required: + - nodeSelectorTerms + type: object + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the + greatest sum of weights, i.e. for each node that + meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if + the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum + are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, + associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of + resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. + This array is replaced during + a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of + {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which + namespaces the labelSelector applies to + (matches against); null or empty list + means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching + the corresponding podAffinityTerm, in the + range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the + affinity requirements specified by this field cease + to be met at some point during pod execution (e.g. + due to a pod label update), the system may or may + not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes + corresponding to each podAffinityTerm are intersected, + i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those + matching the labelSelector relative to the given + namespace(s)) that this pod should be co-located + (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node + whose value of the label with key + matches that of any node on which a pod of the + set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, + etc. as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the + greatest sum of weights, i.e. for each node that + meets all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity + expressions, etc.), compute a sum by iterating through + the elements of this field and adding "weight" to + the sum if the node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest sum + are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, + associated with the corresponding weight. + properties: + labelSelector: + description: A label query over a set of + resources, in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label + key that the selector applies + to. + type: string + operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. + This array is replaced during + a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of + {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which + namespaces the labelSelector applies to + (matches against); null or empty list + means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching + the corresponding podAffinityTerm, in the + range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the + anti-affinity requirements specified by this field + cease to be met at some point during pod execution + (e.g. due to a pod label update), the system may + or may not try to eventually evict the pod from + its node. When there are multiple elements, the + lists of nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. + items: + description: Defines a set of pods (namely those + matching the labelSelector relative to the given + namespace(s)) that this pod should be co-located + (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node + whose value of the label with key + matches that of any node on which a pod of the + set of pods is running + properties: + labelSelector: + description: A label query over a set of resources, + in this case pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" + items: + type: string + type: array + topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the + pods matching the labelSelector in the specified + namespaces, where co-located is defined as + running on a node whose value of the label + with key topologyKey matches that of any node + on which any of the selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + args: + items: + type: string + type: array + builtImage: + type: string + command: + items: + type: string + type: array + env: + items: + description: EnvVar represents an environment variable present + in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in + the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Defaults to + "".' + type: string + valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + 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 + optional: + description: Specify whether the ConfigMap or + its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in + the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of + the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the pod's + namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + 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 + optional: + description: Specify whether the Secret or its + key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + image: + type: string + name: + type: string + securityContext: + description: SecurityContext holds security configuration + that will be applied to a container. Some fields are present + in both SecurityContext and PodSecurityContext. When both + are set, the values in SecurityContext take precedence. + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent process. + This bool directly controls if the no_new_privs flag + will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' + type: boolean + capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. + type: boolean + procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only root + filesystem. Default is false. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if it + does. If unset or false, no such validation will be + performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + properties: + level: + description: Level is SELinux level label that applies + to the container. + type: string + role: + description: Role is a SELinux role label that applies + to the container. + type: string + type: + description: Type is a SELinux type label that applies + to the container. + type: string + user: + description: User is a SELinux user label that applies + to the container. + type: string + type: object + windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of + the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + type: string + type: object + type: object + volumeMounts: + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which the + volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and the + other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write otherwise + (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the container's + volume should be mounted. Defaults to "" (volume's + root). + type: string + subPathExpr: + description: Expanded path within the volume from which + the container's volume should be mounted. Behaves + similarly to SubPath but environment variable references + $(VAR_NAME) are expanded using the container's environment. + Defaults to "" (volume's root). SubPathExpr and SubPath + are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + volumes: + items: + description: Volume represents a named volume in a pod that + may be accessed by any container in the pod. + properties: + awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS + Disk resource that is attached to a kubelet''s host + machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + properties: + fsType: + description: 'Filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you + want to mount. If omitted, the default is to mount + by volume name. Examples: For volume /dev/sda1, + you specify the partition as "1". Similarly, the + volume partition for /dev/sda is "0" (or you can + leave the property empty).' + format: int32 + type: integer + readOnly: + description: 'Specify "true" to force and set the + ReadOnly property in VolumeMounts to "true". If + omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: boolean + volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: string + required: + - volumeID + type: object + azureDisk: + description: AzureDisk represents an Azure Data Disk + mount on the host and bind mount to the pod. + properties: + cachingMode: + description: 'Host Caching mode: None, Read Only, + Read Write.' + type: string + diskName: + description: The Name of the data disk in the blob + storage + type: string + diskURI: + description: The URI the data disk in the blob storage + type: string + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed + data disk (only in managed availability set). + defaults to shared' + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. + properties: + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretName: + description: the name of secret that contains Azure + Storage Account Name and Key + type: string + shareName: + description: Share Name + type: string + required: + - secretName + - shareName + type: object + cephfs: + description: CephFS represents a Ceph FS mount on the + host that shares a pod's lifetime + properties: + monitors: + description: 'Required: Monitors is a collection + of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + items: + type: string + type: array + path: + description: 'Optional: Used as the mounted root, + rather than the full Ceph tree, default is /' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting + in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: boolean + secretFile: + description: 'Optional: SecretFile is the path to + key ring for User, default is /etc/ceph/user.secret + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + secretRef: + description: 'Optional: SecretRef is reference to + the authentication secret for User, default is + empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + 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 + user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + required: + - monitors + type: object + cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + properties: + fsType: + description: 'Filesystem type to mount. Must be + a filesystem type supported by the host operating + system. Examples: "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. More info: + https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting + in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: boolean + secretRef: + description: 'Optional: points to a secret object + containing parameters used to connect to OpenStack.' + 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 + volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + required: + - volumeID + type: object + configMap: + description: ConfigMap represents a configMap that should + populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and + 0777. Defaults to 0644. Directories within the + path are not affected by this setting. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result can + be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file whose + name is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. + If a key is specified which is not present in + the ConfigMap, the volume setup will error unless + it is marked optional. Paths must be relative + and may not contain the '..' path or start with + '..'. + items: + description: Maps a string key to a path within + a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and + 0777. If not specified, the volume defaultMode + will be used. This might be in conflict + with other options that affect the file + mode, like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element '..'. + May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + 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 + optional: + description: Specify whether the ConfigMap or its + keys must be defined + type: boolean + type: object + csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver + (Alpha feature). + properties: + driver: + description: Driver is the name of the CSI driver + that handles this volume. Consult with your admin + for the correct name as registered in the cluster. + type: string + fsType: + description: Filesystem type to mount. Ex. "ext4", + "xfs", "ntfs". If not provided, the empty value + is passed to the associated CSI driver which will + determine the default filesystem to apply. + type: string + nodePublishSecretRef: + description: NodePublishSecretRef is a reference + to the secret object containing sensitive information + to pass to the CSI driver to complete the CSI + NodePublishVolume and NodeUnpublishVolume calls. + This field is optional, and may be empty if no + secret is required. If the secret object contains + more than one secret, all secret references are + passed. + 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 + readOnly: + description: Specifies a read-only configuration + for the volume. Defaults to false (read/write). + type: boolean + volumeAttributes: + additionalProperties: + type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. + Consult your driver's documentation for supported + values. + type: object + required: + - driver + type: object + downwardAPI: + description: DownwardAPI represents downward API about + the pod that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and + 0777. Defaults to 0644. Directories within the + path are not affected by this setting. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result can + be other mode bits set.' + format: int32 + type: integer + items: + description: Items is a list of downward API volume + file + items: + description: DownwardAPIVolumeFile represents + information to create the file containing the + pod field + properties: + fieldRef: + description: 'Required: Selects a field of + the pod: only annotations, labels, name + and namespace are supported.' + properties: + apiVersion: + description: Version of the schema the + FieldPath is written in terms of, defaults + to "v1". + type: string + fieldPath: + description: Path of the field to select + in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and + 0777. If not specified, the volume defaultMode + will be used. This might be in conflict + with other options that affect the file + mode, like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of + the relative path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' + properties: + containerName: + description: 'Container name: required + for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format + of the exposed resources, defaults to + "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + properties: + medium: + description: 'What type of storage medium should + back this directory. The default is "" which means + to use the node''s default medium. Must be an + empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also + applicable for memory medium. The maximum usage + on memory medium EmptyDir would be the minimum + value between the SizeLimit specified here and + the sum of memory limits of all containers in + a pod. The default is nil which means that the + limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + fc: + description: FC represents a Fibre Channel resource + that is attached to a kubelet's host machine and then + exposed to the pod. + properties: + fsType: + description: 'Filesystem type to mount. Must be + a filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. TODO: how + do we prevent errors in the filesystem from compromising + the machine' + type: string + lun: + description: 'Optional: FC target lun number' + format: int32 + type: integer + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting + in VolumeMounts.' + type: boolean + targetWWNs: + description: 'Optional: FC target worldwide names + (WWNs)' + items: + type: string + type: array + wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' + items: + type: string + type: array + type: object + flexVolume: + description: FlexVolume represents a generic volume + resource that is provisioned/attached using an exec + based plugin. + properties: + driver: + description: Driver is the name of the driver to + use for this volume. + type: string + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". The default + filesystem depends on FlexVolume script. + type: string + options: + additionalProperties: + type: string + description: 'Optional: Extra command options if + any.' + type: object + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting + in VolumeMounts.' + type: boolean + secretRef: + description: 'Optional: SecretRef is reference to + the secret object containing sensitive information + to pass to the plugin scripts. This may be empty + if no secret object is specified. If the secret + object contains more than one secret, all secrets + are passed to the plugin scripts.' + 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 + required: + - driver + type: object + flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running + properties: + datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated + type: string + datasetUUID: + description: UUID of the dataset. This is unique + identifier of a Flocker dataset + type: string + type: object + gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + properties: + fsType: + description: 'Filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + partition: + description: 'The partition in the volume that you + want to mount. If omitted, the default is to mount + by volume name. Examples: For volume /dev/sda1, + you specify the partition as "1". Similarly, the + volume partition for /dev/sda is "0" (or you can + leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + format: int32 + type: integer + pdName: + description: 'Unique name of the PD resource in + GCE. Used to identify the disk in GCE. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: boolean + required: + - pdName + type: object + gitRepo: + description: 'GitRepo represents a git repository at + a particular revision. DEPRECATED: GitRepo is deprecated. + To provision a container with a git repo, mount an + EmptyDir into an InitContainer that clones the repo + using git, then mount the EmptyDir into the Pod''s + container.' + properties: + directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git + repository in the subdirectory with the given + name. + type: string + repository: + description: Repository URL + type: string + revision: + description: Commit hash for the specified revision. + type: string + required: + - repository + type: object + glusterfs: + description: 'Glusterfs represents a Glusterfs mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/glusterfs/README.md' + properties: + endpoints: + description: 'EndpointsName is the endpoint name + that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + path: + description: 'Path is the Glusterfs volume path. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. + Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: boolean + required: + - endpoints + - path + type: object + hostPath: + description: 'HostPath represents a pre-existing file + or directory on the host machine that is directly + exposed to the container. This is generally used for + system agents or other privileged things that are + allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use + host directory mounts and who can/can not mount host + directories as read/write.' + properties: + path: + description: 'Path of the directory on the host. + If the path is a symlink, it will follow the link + to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + type: + description: 'Type for HostPath Volume Defaults + to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + required: + - path + type: object + iscsi: + description: 'ISCSI represents an ISCSI Disk resource + that is attached to a kubelet''s host machine and + then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' + properties: + chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP + authentication + type: boolean + chapAuthSession: + description: whether support iSCSI Session CHAP + authentication + type: boolean + fsType: + description: 'Filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, + new iSCSI interface : + will be created for the connection. + type: string + iqn: + description: Target iSCSI Qualified Name. + type: string + iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). + type: string + lun: + description: iSCSI Target Lun number. + format: int32 + type: integer + portals: + description: iSCSI Target Portal List. The portal + is either an IP or ip_addr:port if the port is + other than default (typically TCP ports 860 and + 3260). + items: + type: string + type: array + readOnly: + description: ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. + type: boolean + secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication + 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 + targetPortal: + description: iSCSI Target Portal. The Portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + description: 'Volume''s name. Must be a DNS_LABEL and + unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + nfs: + description: 'NFS represents an NFS mount on the host + that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + properties: + path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: boolean + server: + description: 'Server is the hostname or IP address + of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same + namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in + VolumeMounts. Default false. + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine + properties: + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + pdID: + description: ID that identifies Photon Controller + persistent disk + type: string + required: + - pdID + type: object + portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine + properties: + fsType: + description: FSType represents the filesystem type + to mount Must be a filesystem type supported by + the host operating system. Ex. "ext4", "xfs". + Implicitly inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + volumeID: + description: VolumeID uniquely identifies a Portworx + volume + type: string + required: + - volumeID + type: object + projected: + description: Items for all in one resources secrets, + configmaps, and downward API + properties: + defaultMode: + description: Mode bits to use on created files by + default. Must be a value between 0 and 0777. Directories + within the path are not affected by this setting. + This might be in conflict with other options that + affect the file mode, like fsGroup, and the result + can be other mode bits set. + format: int32 + type: integer + sources: + description: list of volume projections + items: + description: Projection that may be projected + along with other supported volume types + properties: + configMap: + description: information about the configMap + data to project + properties: + items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the + volume as a file whose name is the key + and content is the value. If specified, + the listed keys will be projected into + the specified paths, and unlisted keys + will not be present. If a key is specified + which is not present in the ConfigMap, + the volume setup will error unless it + is marked optional. Paths must be relative + and may not contain the '..' path or + start with '..'. + items: + description: Maps a string key to a + path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits + to use on this file, must be a + value between 0 and 0777. If not + specified, the volume defaultMode + will be used. This might be in + conflict with other options that + affect the file mode, like fsGroup, + and the result can be other mode + bits set.' + format: int32 + type: integer + path: + description: The relative path of + the file to map the key to. May + not be an absolute path. May not + contain the path element '..'. + May not start with the string + '..'. + type: string + required: + - key + - path + type: object + type: array + 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 + optional: + description: Specify whether the ConfigMap + or its keys must be defined + type: boolean + type: object + downwardAPI: + description: information about the downwardAPI + data to project + properties: + items: + description: Items is a list of DownwardAPIVolume + file + items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field + properties: + fieldRef: + description: 'Required: Selects + a field of the pod: only annotations, + labels, name and namespace are + supported.' + properties: + apiVersion: + description: Version of the + schema the FieldPath is written + in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field + to select in the specified + API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits + to use on this file, must be a + value between 0 and 0777. If not + specified, the volume defaultMode + will be used. This might be in + conflict with other options that + affect the file mode, like fsGroup, + and the result can be other mode + bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the + relative path name of the file + to be created. Must not be absolute + or contain the ''..'' path. Must + be utf-8 encoded. The first item + of the relative path must not + start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource + of the container: only resources + limits and requests (limits.cpu, + limits.memory, requests.cpu and + requests.memory) are currently + supported.' + properties: + containerName: + description: 'Container name: + required for volumes, optional + for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output + format of the exposed resources, + defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource + to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + description: information about the secret + data to project + properties: + items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and + content is the value. If specified, + the listed keys will be projected into + the specified paths, and unlisted keys + will not be present. If a key is specified + which is not present in the Secret, + the volume setup will error unless it + is marked optional. Paths must be relative + and may not contain the '..' path or + start with '..'. + items: + description: Maps a string key to a + path within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits + to use on this file, must be a + value between 0 and 0777. If not + specified, the volume defaultMode + will be used. This might be in + conflict with other options that + affect the file mode, like fsGroup, + and the result can be other mode + bits set.' + format: int32 + type: integer + path: + description: The relative path of + the file to map the key to. May + not be an absolute path. May not + contain the path element '..'. + May not start with the string + '..'. + type: string + required: + - key + - path + type: object + type: array + 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 + optional: + description: Specify whether the Secret + or its key must be defined + type: boolean + type: object + serviceAccountToken: + description: information about the serviceAccountToken + data to project + properties: + audience: + description: Audience is the intended + audience of the token. A recipient of + a token must identify itself with an + identifier specified in the audience + of the token, and otherwise should reject + the token. The audience defaults to + the identifier of the apiserver. + type: string + expirationSeconds: + description: ExpirationSeconds is the + requested duration of validity of the + service account token. As the token + approaches expiration, the kubelet volume + plugin will proactively rotate the service + account token. The kubelet will start + trying to rotate the token if the token + is older than 80 percent of its time + to live or if the token is older than + 24 hours.Defaults to 1 hour and must + be at least 10 minutes. + format: int64 + type: integer + path: + description: Path is the path relative + to the mount point of the file to project + the token into. + type: string + required: + - path + type: object + type: object + type: array + required: + - sources + type: object + quobyte: + description: Quobyte represents a Quobyte mount on the + host that shares a pod's lifetime + properties: + group: + description: Group to map volume access to Default + is no group + type: string + readOnly: + description: ReadOnly here will force the Quobyte + volume to be mounted with read-only permissions. + Defaults to false. + type: boolean + registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string + as host:port pair (multiple entries are separated + with commas) which acts as the central registry + for volumes + type: string + tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned + Quobyte volumes, value is set by the plugin + type: string + user: + description: User to map volume access to Defaults + to serivceaccount user + type: string + volume: + description: Volume is a string that references + an already created Quobyte volume by name. + type: string + required: + - registry + - volume + type: object + rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' + properties: + fsType: + description: 'Filesystem type of the volume that + you want to mount. Tip: Ensure that the filesystem + type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred + to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem + from compromising the machine' + type: string + image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + keyring: + description: 'Keyring is the path to key ring for + RBDUser. Default is /etc/ceph/keyring. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + monitors: + description: 'A collection of Ceph monitors. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + items: + type: string + type: array + pool: + description: 'The rados pool name. Default is rbd. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: boolean + secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + 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 + user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + required: + - image + - monitors + type: object + scaleIO: + description: ScaleIO represents a ScaleIO persistent + volume attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Default is + "xfs". + type: string + gateway: + description: The host address of the ScaleIO API + Gateway. + type: string + protectionDomain: + description: The name of the ScaleIO Protection + Domain for the configured storage. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef references to the secret + for ScaleIO user and other sensitive information. + If this is not provided, Login operation will + fail. + 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 + sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false + type: boolean + storageMode: + description: Indicates whether the storage for a + volume should be ThickProvisioned or ThinProvisioned. + Default is ThinProvisioned. + type: string + storagePool: + description: The ScaleIO Storage Pool associated + with the protection domain. + type: string + system: + description: The name of the storage system as configured + in ScaleIO. + type: string + volumeName: + description: The name of a volume already created + in the ScaleIO system that is associated with + this volume source. + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + description: 'Secret represents a secret that should + populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + properties: + defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and + 0777. Defaults to 0644. Directories within the + path are not affected by this setting. This might + be in conflict with other options that affect + the file mode, like fsGroup, and the result can + be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. + If a key is specified which is not present in + the Secret, the volume setup will error unless + it is marked optional. Paths must be relative + and may not contain the '..' path or start with + '..'. + items: + description: Maps a string key to a path within + a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and + 0777. If not specified, the volume defaultMode + will be used. This might be in conflict + with other options that affect the file + mode, like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element '..'. + May not start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + optional: + description: Specify whether the Secret or its keys + must be defined + type: boolean + secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + type: string + type: object + storageos: + description: StorageOS represents a StorageOS volume + attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef specifies the secret to use + for obtaining the StorageOS API credentials. If + not specified, default values will be attempted. + 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 + volumeName: + description: VolumeName is the human-readable name + of the StorageOS volume. Volume names are only + unique within a namespace. + type: string + volumeNamespace: + description: VolumeNamespace specifies the scope + of the volume within StorageOS. If no namespace + is specified then the Pod's namespace will be + used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. + Set VolumeName to any name to override the default + behaviour. Set to "default" if you are not using + namespaces within StorageOS. Namespaces that do + not pre-exist within StorageOS will be created. + type: string + type: object + vsphereVolume: + description: VsphereVolume represents a vSphere volume + attached and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a + filesystem type supported by the host operating + system. Ex. "ext4", "xfs", "ntfs". Implicitly + inferred to be "ext4" if unspecified. + type: string + storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. + type: string + storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. + type: string + volumePath: + description: Path that identifies vSphere volume + vmdk + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + workingDir: + type: string + type: object + type: object + type: array + type: object + status: + description: BuildStatus defines the observed state of Build + properties: + artifacts: + items: + description: Artifact -- + properties: + checksum: + type: string + id: + type: string + location: + type: string + target: + type: string + required: + - id + type: object + type: array + baseImage: + type: string + conditions: + items: + description: BuildCondition describes the state of a resource at a + certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + lastUpdateTime: + description: The last time this condition was updated. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of integration condition. + type: string + required: + - status + - type + type: object + type: array + digest: + type: string + duration: + description: Change to Duration / ISO 8601 when CRD uses OpenAPI spec + v3 https://github.com/OAI/OpenAPI-Specification/issues/845 + type: string + error: + type: string + failure: + description: Failure -- + properties: + reason: + type: string + recovery: + description: FailureRecovery -- + properties: + attempt: + type: integer + attemptMax: + type: integer + attemptTime: + format: date-time + type: string + required: + - attempt + - attemptMax + type: object + time: + format: date-time + type: string + required: + - reason + - recovery + - time + type: object + image: + type: string + phase: + description: BuildPhase -- + type: string + platform: + type: string + startedAt: + format: date-time + type: string + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true diff --git a/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/camel-k.v1.3.0-snapshot.clusterserviceversion.yaml b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/camel-k.v1.3.0-snapshot.clusterserviceversion.yaml new file mode 100644 index 0000000000..af3bdc45cc --- /dev/null +++ b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/camel-k.v1.3.0-snapshot.clusterserviceversion.yaml @@ -0,0 +1,567 @@ +# --------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# --------------------------------------------------------------------------- + +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [{ + "apiVersion": "camel.apache.org/v1", + "kind": "IntegrationPlatform", + "metadata": { + "name": "example" + }, + "spec": {} + }, + { + "apiVersion": "camel.apache.org/v1", + "kind": "Integration", + "metadata": { + "name": "example" + }, + "spec": { + "flows": [ + { + "from": { + "uri": "timer:yaml", + "parameters": { + "period": "1000" + }, + "steps": [ + { + "set-body": { + "constant": "Hello from Camel K" + } + }, + { + "to": "log:info" + } + ] + } + } + ] + } + }, + { + "apiVersion": "camel.apache.org/v1", + "kind": "IntegrationKit", + "metadata": { + "name": "example" + }, + "spec": {} + }, + { + "apiVersion": "camel.apache.org/v1", + "kind": "CamelCatalog", + "metadata": { + "name": "example" + }, + "spec": {} + }, + { + "apiVersion": "camel.apache.org/v1", + "kind": "Build", + "metadata": { + "name": "example" + }, + "spec": {} + }, + { + "apiVersion": "camel.apache.org/v1alpha1", + "kind": "Kamelet", + "metadata": { + "name": "example" + }, + "spec": { + "definition": { + "description": "Produces periodic events with a custom payload", + "properties": { + "message": { + "description": "The message to generate", + "title": "Message", + "type": "string" + }, + "period": { + "default": 1000, + "description": "The time interval between two events", + "title": "Period", + "type": "integer" + } + }, + "required": [ + "message" + ], + "title": "Example Timer" + }, + "flow": { + "from": { + "parameters": { + "period": "#property:period" + }, + "steps": [ + { + "set-body": { + "constant": "#property:message" + } + }, + { + "to": "kamelet:sink" + } + ], + "uri": "timer:tick" + } + } + } + }, + { + "apiVersion": "camel.apache.org/v1alpha1", + "kind": "KameletBinding", + "metadata": { + "name": "example" + }, + "spec": { + "source": { + "ref": { + "apiVersion": "camel.apache.org/v1alpha1", + "kind": "Kamelet", + "name": "example" + }, + "properties": { + "message": "Hello world" + } + }, + "sink": { + "ref": { + "apiVersion": "messaging.knative.dev/v1beta1", + "kind": "InMemoryChannel", + "name": "example" + } + } + } + }] + capabilities: Full Lifecycle + categories: Integration & Delivery + certified: "false" + containerImage: docker.io/apache/camel-k:1.3.0-SNAPSHOT + createdAt: "2020-06-09T02:45:00Z" + description: Apache Camel K is a lightweight integration platform, born on Kubernetes, + with serverless superpowers. + repository: https://github.com/apache/camel-k + operators.operatorframework.io/internal-objects: '["builds.camel.apache.org","integrationkits.camel.apache.org","camelcatalogs.camel.apache.org"]' + support: Camel + name: camel-k-operator.v1.3.0-snapshot + namespace: placeholder +spec: + relatedImages: + - name: integration-base-image + image: adoptopenjdk/openjdk11:slim + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: A Camel K build + displayName: Build + kind: Build + name: builds.camel.apache.org + version: v1 + - description: A Camel catalog + displayName: Camel Catalog + kind: CamelCatalog + name: camelcatalogs.camel.apache.org + version: v1 + - description: A Camel K integration + displayName: Integration + kind: Integration + name: integrations.camel.apache.org + version: v1 + - description: A Camel K integration kit + displayName: Integration Kit + kind: IntegrationKit + name: integrationkits.camel.apache.org + version: v1 + - description: A Camel K integration platform + displayName: Integration Platform + kind: IntegrationPlatform + name: integrationplatforms.camel.apache.org + version: v1 + - description: A Camel K connector + displayName: Kamelet + kind: Kamelet + name: kamelets.camel.apache.org + version: v1alpha1 + - description: A Camel K connector binding resource + displayName: Kamelet Binding + kind: KameletBinding + name: kameletbindings.camel.apache.org + version: v1alpha1 + description: | + Apache Camel K + ============== + + Apache Camel K is a lightweight integration platform, born on Kubernetes, with serverless superpowers. + + ## Installation + + To start using Camel K, install the operator and then create the following `IntegrationPlatform`: + ``` + apiVersion: camel.apache.org/v1 + kind: IntegrationPlatform + metadata: + name: camel-k + labels: + app: "camel-k" + ``` + + ## Running an Integration + + After the initial setup, you can run a Camel integration on the cluster by creating an example `Integration`: + ``` + apiVersion: camel.apache.org/v1 + kind: Integration + metadata: + name: example + spec: + sources: + - content: | + import org.apache.camel.builder.RouteBuilder; + + public class Example extends RouteBuilder { + @Override + public void configure() throws Exception { + from("timer:tick") + .setBody(constant("Hello World!")) + .to("log:info?skipBodyLineSeparator=false"); + } + } + name: Example.java + ``` + displayName: Camel K Operator + icon: + - base64data: PHN2ZyB2aWV3Qm94PSIwIDAgMTMwLjIxIDEzMC4wMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIzMzMuNDgiIHgyPSI0NzciIHkxPSI3MDIuNiIgeTI9IjU2My43MyIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg5NC4wMzggMjc2LjA2KSBzY2FsZSguOTkyMDYpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI0Y2OTkyMyIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y3OUEyMyIgb2Zmc2V0PSIuMTEiLz48c3RvcCBzdG9wLWNvbG9yPSIjRTk3ODI2IiBvZmZzZXQ9Ii45NDUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjMzMy40OCIgeDI9IjQ3NyIgeTE9IjcwMi42IiB5Mj0iNTYzLjczIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDk0LjAzOCAyNzYuMDYpIHNjYWxlKC45OTIwNikiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjRjY5OTIzIiBvZmZzZXQ9IjAiLz48c3RvcCBzdG9wLWNvbG9yPSIjRjc5QTIzIiBvZmZzZXQ9Ii4wOCIvPjxzdG9wIHN0b3AtY29sb3I9IiNFOTc4MjYiIG9mZnNldD0iLjQxOSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iNjMzLjU1IiB4Mj0iNTY2LjQ3IiB5MT0iODE0LjYiIHkyPSI5MDkuMTIiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg1LjQyMSA1Ni4yMzYpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI2Y2ZTQyMyIgb2Zmc2V0PSIwIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0Y3OUEyMyIgb2Zmc2V0PSIuNDEyIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0U5NzgyNiIgb2Zmc2V0PSIuNzMzIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTQzNy44OSAtODM1LjI5KSI+PGNpcmNsZSBjeD0iNTAzLjEiIGN5PSI5MDAuMjkiIHI9IjYyLjUyIiBmaWxsPSJ1cmwoI2EpIiBzdHJva2U9InVybCgjYikiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iNC45NiIvPjxwYXRoIGQ9Ik00ODcuODkgODczLjY0YTg5LjUzIDg5LjUzIDAgMCAwLTIuNjg4LjAzMWMtMS4wNDMuMDMxLTIuNDQ1LjM2Mi00LjA2Mi45MDYgMjcuMzA5IDIwLjczNyAzNy4xMjcgNTguMTQ2IDIwLjI1IDkwLjY1Ni41NzMuMDE1IDEuMTQyLjA2MyAxLjcxOS4wNjMgMzAuODQ0IDAgNTYuNjItMjEuNDkzIDYzLjI4LTUwLjMxMi0xOS41NzItMjIuOTQzLTQ2LjExNy00MS4yOTQtNzguNS00MS4zNDR6IiBmaWxsPSJ1cmwoI2MpIiBvcGFjaXR5PSIuNzUiLz48cGF0aCBkPSJNNDgxLjE0IDg3NC41OGMtOS4wNjggMy4wNTItMjYuMzY4IDEzLjgwMi00MyAyOC4xNTYgMS4yNjMgMzQuMTk1IDI4Ljk2MSA2MS42MDcgNjMuMjUgNjIuNSAxNi44NzctMzIuNTEgNy4wNi02OS45MTktMjAuMjUtOTAuNjU2eiIgZmlsbD0iIzI4MTcwYiIgb3BhY2l0eT0iLjc1Ii8+PHBhdGggZD0iTTUwNC44ODkgODYyLjU0NmMtLjQ3Mi0uMDMyLS45MzIuMDI4LTEuMzc1LjI1LTUuNiAyLjgwMSAwIDE0IDAgMTQtMTYuODA3IDE0LjAwOS0xMy4yMzYgMzcuOTM4LTMyLjg0NCAzNy45MzgtMTAuNjg5IDAtMjEuMzIyLTEyLjI5My0zMi41MzEtMTkuODEyLS4xNDQgMS43NzMtLjI1IDMuNTY0LS4yNSA1LjM3NSAwIDI0LjUxNSAxMy41MSA0NS44NjMgMzMuNDY5IDU3LjA2MyA1LjU4My0uNzAzIDExLjE1OC0yLjExNCAxNS4zNDQtNC45MDYgMjEuOTkyLTE0LjY2MiAyNy40NTItNDIuNTU3IDM2LjQzOC01Ni4wMzEgNS41OTYtOC40MDcgMzEuODI0LTcuNjc3IDMzLjU5NC0xMS4yMiAyLjgwNC01LjYwMS01LjYwMi0xNC04LjQwNi0xNGgtMjIuNDA2Yy0xLjU2NiAwLTQuMDI1LTIuNzgtNS41OTQtMi43OGgtOC40MDZzLTMuNzI1LTUuNjUtNy4wMzEtNS44NzV6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg== + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - console.openshift.io + resources: + - consoleclidownloads + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - camel.apache.org + resources: + - '*' + verbs: + - '*' + serviceAccountName: camel-k-operator + deployments: + - name: camel-k-operator + spec: + replicas: 1 + selector: + matchLabels: + name: camel-k-operator + strategy: + type: Recreate + template: + metadata: + labels: + app: camel-k + camel.apache.org/component: operator + name: camel-k-operator + spec: + containers: + - command: + - kamel + - operator + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.annotations['olm.targetNamespaces'] + - name: OPERATOR_NAME + value: camel-k + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: docker.io/apache/camel-k:1.3.0-SNAPSHOT + imagePullPolicy: IfNotPresent + name: camel-k-operator + resources: {} + serviceAccountName: camel-k-operator + permissions: + - rules: + - apiGroups: + - camel.apache.org + resources: + - '*' + verbs: + - '*' + - apiGroups: + - "" + resources: + - pods + - services + - endpoints + - persistentvolumeclaims + - configmaps + - secrets + - serviceaccounts + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + - rolebindings + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - get + - list + - watch + - apiGroups: + - apps + resources: + - deployments + - replicasets + - statefulsets + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - batch + resources: + - cronjobs + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - apps + resources: + - daemonsets + verbs: + - get + - list + - watch + - apiGroups: + - extensions + resources: + - ingresses + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + - build.openshift.io + resources: + - buildconfigs + - buildconfigs/webhooks + - builds + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + - image.openshift.io + resources: + - imagestreamimages + - imagestreammappings + - imagestreams + - imagestreams/secrets + - imagestreamtags + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + - build.openshift.io + resources: + - buildconfigs/instantiate + - buildconfigs/instantiatebinary + - builds/clone + verbs: + - create + - apiGroups: + - "" + - route.openshift.io + resources: + - routes + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + - route.openshift.io + resources: + - routes/custom-host + verbs: + - create + - apiGroups: + - serving.knative.dev + resources: + - services + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - eventing.knative.dev + - messaging.knative.dev + - sources.knative.dev + resources: + - '*' + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - monitoring.coreos.com + resources: + - servicemonitors + verbs: + - create + - delete + - deletecollection + - get + - list + - patch + - update + - watch + - apiGroups: + - "kafka.strimzi.io" + resources: + - topics + - kafkas + verbs: + - get + - list + - watch + serviceAccountName: camel-k-operator + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - apache + - kamel + - kubernetes + - serverless + - microservices + labels: + name: camel-k-operator + links: + - name: Camel K source code repository + url: https://github.com/apache/camel-k + maintainers: + - email: users@camel.apache.org + name: The Apache Software Foundation + maturity: alpha + minKubeVersion: 1.11.0 + provider: + name: The Apache Software Foundation + replaces: camel-k-operator.v1.2.0 + selector: + matchLabels: + name: camel-k-operator + version: 1.3.0-snapshot diff --git a/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml new file mode 100644 index 0000000000..1235c8f434 --- /dev/null +++ b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/camelcatalogs.camel.apache.org.crd.yaml @@ -0,0 +1,263 @@ +# --------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# --------------------------------------------------------------------------- + +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: "camel-k" + annotations: + controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: camelcatalogs.camel.apache.org +spec: + additionalPrinterColumns: + - JSONPath: .spec.runtime.version + description: The Camel K Runtime version + name: Runtime Version + type: string + - JSONPath: .spec.runtime.provider + description: The Camel K Runtime provider + name: Runtime Provider + type: string + group: camel.apache.org + names: + categories: + - kamel + - camel + kind: CamelCatalog + listKind: CamelCatalogList + plural: camelcatalogs + shortNames: + - cc + singular: camelcatalog + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + description: CamelCatalog is the Schema for the camelcatalogs 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: CamelCatalogSpec defines the desired state of CamelCatalog + properties: + artifacts: + additionalProperties: + description: CamelArtifact -- + properties: + artifactId: + type: string + dataformats: + items: + type: string + type: array + dependencies: + items: + description: CamelArtifactDependency represent a maven's dependency + properties: + artifactId: + type: string + exclusions: + items: + description: CamelArtifactExclusion -- + properties: + artifactId: + type: string + groupId: + type: string + required: + - artifactId + - groupId + type: object + type: array + groupId: + type: string + version: + type: string + required: + - artifactId + - groupId + type: object + type: array + exclusions: + items: + description: CamelArtifactExclusion -- + properties: + artifactId: + type: string + groupId: + type: string + required: + - artifactId + - groupId + type: object + type: array + groupId: + type: string + javaTypes: + items: + type: string + type: array + languages: + items: + type: string + type: array + schemes: + items: + description: CamelScheme -- + properties: + http: + type: boolean + id: + type: string + passive: + type: boolean + required: + - http + - id + - passive + type: object + type: array + version: + type: string + required: + - artifactId + - groupId + type: object + type: object + loaders: + additionalProperties: + description: CamelLoader -- + properties: + artifactId: + type: string + dependencies: + items: + description: MavenArtifact -- + properties: + artifactId: + type: string + groupId: + type: string + version: + type: string + required: + - artifactId + - groupId + type: object + type: array + groupId: + type: string + languages: + items: + type: string + type: array + version: + type: string + required: + - artifactId + - groupId + type: object + type: object + runtime: + description: RuntimeSpec -- + properties: + applicationClass: + type: string + capabilities: + additionalProperties: + description: Capability -- + properties: + dependencies: + items: + description: MavenArtifact -- + properties: + artifactId: + type: string + groupId: + type: string + version: + type: string + required: + - artifactId + - groupId + type: object + type: array + metadata: + additionalProperties: + type: string + type: object + required: + - dependencies + type: object + type: object + dependencies: + items: + description: MavenArtifact -- + properties: + artifactId: + type: string + groupId: + type: string + version: + type: string + required: + - artifactId + - groupId + type: object + type: array + metadata: + additionalProperties: + type: string + type: object + provider: + description: RuntimeProvider -- + type: string + version: + type: string + required: + - applicationClass + - dependencies + - provider + - version + type: object + required: + - artifacts + - loaders + - runtime + type: object + status: + description: CamelCatalogStatus defines the observed state of CamelCatalog + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true diff --git a/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrationkits.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrationkits.camel.apache.org.crd.yaml new file mode 100644 index 0000000000..d818aa3f94 --- /dev/null +++ b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrationkits.camel.apache.org.crd.yaml @@ -0,0 +1,214 @@ +# --------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# --------------------------------------------------------------------------- + +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: "camel-k" + annotations: + controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: integrationkits.camel.apache.org +spec: + additionalPrinterColumns: + - JSONPath: .status.phase + description: The integration kit phase + name: Phase + type: string + - JSONPath: .metadata.labels.camel\.apache\.org\/kit\.type + description: The integration kit type + name: Type + type: string + - JSONPath: .status.image + description: The integration kit image + name: Image + type: string + group: camel.apache.org + names: + categories: + - kamel + - camel + kind: IntegrationKit + listKind: IntegrationKitList + plural: integrationkits + shortNames: + - ik + singular: integrationkit + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + description: IntegrationKit is the Schema for the integrationkits 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: IntegrationKitSpec defines the desired state of IntegrationKit + properties: + configuration: + items: + description: ConfigurationSpec -- + properties: + type: + type: string + value: + type: string + required: + - type + - value + type: object + type: array + dependencies: + items: + type: string + type: array + image: + type: string + profile: + description: TraitProfile represents lists of traits that are enabled + for the specific installation/integration + type: string + repositories: + items: + type: string + type: array + traits: + additionalProperties: + description: A TraitSpec contains the configuration of a trait + properties: + configuration: + type: object + required: + - configuration + type: object + type: object + type: object + status: + description: IntegrationKitStatus defines the observed state of IntegrationKit + properties: + artifacts: + items: + description: Artifact -- + properties: + checksum: + type: string + id: + type: string + location: + type: string + target: + type: string + required: + - id + type: object + type: array + baseImage: + type: string + conditions: + items: + description: IntegrationKitCondition describes the state of a resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + lastUpdateTime: + description: The last time this condition was updated. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of integration condition. + type: string + required: + - status + - type + type: object + type: array + digest: + type: string + failure: + description: Failure -- + properties: + reason: + type: string + recovery: + description: FailureRecovery -- + properties: + attempt: + type: integer + attemptMax: + type: integer + attemptTime: + format: date-time + type: string + required: + - attempt + - attemptMax + type: object + time: + format: date-time + type: string + required: + - reason + - recovery + - time + type: object + image: + type: string + phase: + description: IntegrationKitPhase -- + type: string + platform: + type: string + runtimeProvider: + description: RuntimeProvider -- + type: string + runtimeVersion: + type: string + version: + type: string + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true diff --git a/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml new file mode 100644 index 0000000000..c1176fa410 --- /dev/null +++ b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrationplatforms.camel.apache.org.crd.yaml @@ -0,0 +1,370 @@ +# --------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# --------------------------------------------------------------------------- + +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: "camel-k" + annotations: + controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: integrationplatforms.camel.apache.org +spec: + additionalPrinterColumns: + - JSONPath: .status.phase + description: The integration platform phase + name: Phase + type: string + group: camel.apache.org + names: + categories: + - kamel + - camel + kind: IntegrationPlatform + listKind: IntegrationPlatformList + plural: integrationplatforms + shortNames: + - ip + singular: integrationplatform + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + description: IntegrationPlatform is the Schema for the integrationplatforms + 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: IntegrationPlatformSpec defines the desired state of IntegrationPlatform + properties: + build: + description: IntegrationPlatformBuildSpec contains platform related + build information + properties: + baseImage: + type: string + buildStrategy: + description: IntegrationPlatformBuildStrategy enumerates all implemented + build strategies + type: string + httpProxySecret: + type: string + kanikoBuildCache: + type: boolean + maven: + description: MavenSpec -- + properties: + localRepository: + type: string + settings: + description: ValueSource -- + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + 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 + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + 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 + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + timeout: + type: string + type: object + persistentVolumeClaim: + type: string + properties: + additionalProperties: + type: string + type: object + publishStrategy: + description: IntegrationPlatformBuildPublishStrategy enumerates + all implemented publish strategies + type: string + registry: + description: IntegrationPlatformRegistrySpec -- + properties: + address: + type: string + ca: + type: string + insecure: + type: boolean + organization: + type: string + secret: + type: string + type: object + runtimeProvider: + description: RuntimeProvider -- + type: string + runtimeVersion: + type: string + timeout: + type: string + type: object + cluster: + description: IntegrationPlatformCluster is the kind of orchestration + cluster the platform is installed into + type: string + configuration: + items: + description: ConfigurationSpec -- + properties: + type: + type: string + value: + type: string + required: + - type + - value + type: object + type: array + profile: + description: TraitProfile represents lists of traits that are enabled + for the specific installation/integration + type: string + resources: + description: IntegrationPlatformResourcesSpec contains platform related + resources + type: object + traits: + additionalProperties: + description: A TraitSpec contains the configuration of a trait + properties: + configuration: + type: object + required: + - configuration + type: object + type: object + type: object + status: + description: IntegrationPlatformStatus defines the observed state of IntegrationPlatform + properties: + build: + description: IntegrationPlatformBuildSpec contains platform related + build information + properties: + baseImage: + type: string + buildStrategy: + description: IntegrationPlatformBuildStrategy enumerates all implemented + build strategies + type: string + httpProxySecret: + type: string + kanikoBuildCache: + type: boolean + maven: + description: MavenSpec -- + properties: + localRepository: + type: string + settings: + description: ValueSource -- + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + 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 + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + 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 + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + timeout: + type: string + type: object + persistentVolumeClaim: + type: string + properties: + additionalProperties: + type: string + type: object + publishStrategy: + description: IntegrationPlatformBuildPublishStrategy enumerates + all implemented publish strategies + type: string + registry: + description: IntegrationPlatformRegistrySpec -- + properties: + address: + type: string + ca: + type: string + insecure: + type: boolean + organization: + type: string + secret: + type: string + type: object + runtimeProvider: + description: RuntimeProvider -- + type: string + runtimeVersion: + type: string + timeout: + type: string + type: object + cluster: + description: IntegrationPlatformCluster is the kind of orchestration + cluster the platform is installed into + type: string + conditions: + items: + description: IntegrationPlatformCondition describes the state of a + resource at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + lastUpdateTime: + description: The last time this condition was updated. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of integration condition. + type: string + required: + - status + - type + type: object + type: array + configuration: + items: + description: ConfigurationSpec -- + properties: + type: + type: string + value: + type: string + required: + - type + - value + type: object + type: array + phase: + description: IntegrationPlatformPhase -- + type: string + profile: + description: TraitProfile represents lists of traits that are enabled + for the specific installation/integration + type: string + resources: + description: IntegrationPlatformResourcesSpec contains platform related + resources + type: object + traits: + additionalProperties: + description: A TraitSpec contains the configuration of a trait + properties: + configuration: + type: object + required: + - configuration + type: object + type: object + version: + type: string + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true diff --git a/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrations.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrations.camel.apache.org.crd.yaml new file mode 100644 index 0000000000..73753c723e --- /dev/null +++ b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/integrations.camel.apache.org.crd.yaml @@ -0,0 +1,361 @@ +# --------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# --------------------------------------------------------------------------- + +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: "camel-k" + annotations: + controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: integrations.camel.apache.org +spec: + additionalPrinterColumns: + - JSONPath: .status.phase + description: The integration phase + name: Phase + type: string + - JSONPath: .status.kit + description: The integration kit + name: Kit + type: string + - JSONPath: .status.replicas + description: The number of pods + name: Replicas + type: integer + group: camel.apache.org + names: + categories: + - kamel + - camel + kind: Integration + listKind: IntegrationList + plural: integrations + shortNames: + - it + singular: integration + scope: Namespaced + subresources: + scale: + labelSelectorPath: .status.selector + specReplicasPath: .spec.replicas + statusReplicasPath: .status.replicas + status: {} + validation: + openAPIV3Schema: + description: Integration is the Schema for the integrations 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: IntegrationSpec defines the desired state of Integration + properties: + configuration: + items: + description: ConfigurationSpec -- + properties: + type: + type: string + value: + type: string + required: + - type + - value + type: object + type: array + dependencies: + items: + type: string + type: array + flows: + items: + type: object + type: array + kit: + type: string + profile: + description: TraitProfile represents lists of traits that are enabled + for the specific installation/integration + type: string + replicas: + format: int32 + type: integer + repositories: + items: + type: string + type: array + resources: + items: + description: ResourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + mountPath: + type: string + name: + type: string + type: + description: ResourceType -- + type: string + type: object + type: array + serviceAccountName: + type: string + sources: + items: + description: SourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + interceptors: + description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader + uses to pre/post process sources + items: + type: string + type: array + language: + description: Language -- + type: string + loader: + description: Loader is an optional id of the org.apache.camel.k.RoutesLoader + that will interpret this source at runtime + type: string + name: + type: string + property-names: + description: List of property names defined in the source (e.g. + if type is "template") + items: + type: string + type: array + type: + description: Type defines the kind of source described by this + object + type: string + type: object + type: array + traits: + additionalProperties: + description: A TraitSpec contains the configuration of a trait + properties: + configuration: + type: object + required: + - configuration + type: object + type: object + type: object + status: + description: IntegrationStatus defines the observed state of Integration + properties: + capabilities: + items: + type: string + type: array + conditions: + items: + description: IntegrationCondition describes the state of a resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + lastUpdateTime: + description: The last time this condition was updated. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of integration condition. + type: string + required: + - status + - type + type: object + type: array + configuration: + items: + description: ConfigurationSpec -- + properties: + type: + type: string + value: + type: string + required: + - type + - value + type: object + type: array + dependencies: + items: + type: string + type: array + digest: + type: string + failure: + description: Failure -- + properties: + reason: + type: string + recovery: + description: FailureRecovery -- + properties: + attempt: + type: integer + attemptMax: + type: integer + attemptTime: + format: date-time + type: string + required: + - attempt + - attemptMax + type: object + time: + format: date-time + type: string + required: + - reason + - recovery + - time + type: object + generatedResources: + items: + description: ResourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + mountPath: + type: string + name: + type: string + type: + description: ResourceType -- + type: string + type: object + type: array + generatedSources: + items: + description: SourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + interceptors: + description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader + uses to pre/post process sources + items: + type: string + type: array + language: + description: Language -- + type: string + loader: + description: Loader is an optional id of the org.apache.camel.k.RoutesLoader + that will interpret this source at runtime + type: string + name: + type: string + property-names: + description: List of property names defined in the source (e.g. + if type is "template") + items: + type: string + type: array + type: + description: Type defines the kind of source described by this + object + type: string + type: object + type: array + image: + type: string + kit: + type: string + phase: + description: IntegrationPhase -- + type: string + platform: + type: string + profile: + description: TraitProfile represents lists of traits that are enabled + for the specific installation/integration + type: string + replicas: + format: int32 + type: integer + runtimeProvider: + description: RuntimeProvider -- + type: string + runtimeVersion: + type: string + selector: + type: string + version: + type: string + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true diff --git a/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/kameletbindings.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/kameletbindings.camel.apache.org.crd.yaml new file mode 100644 index 0000000000..53bf707814 --- /dev/null +++ b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/kameletbindings.camel.apache.org.crd.yaml @@ -0,0 +1,323 @@ +# --------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# --------------------------------------------------------------------------- + +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: "camel-k" + annotations: + controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: kameletbindings.camel.apache.org +spec: + additionalPrinterColumns: + - JSONPath: .status.phase + description: The Kamelet Binding phase + name: Phase + type: string + group: camel.apache.org + names: + categories: + - kamel + - camel + kind: KameletBinding + listKind: KameletBindingList + plural: kameletbindings + shortNames: + - klb + singular: kameletbinding + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + description: KameletBinding is the Schema for the kamelets binding 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: KameletBindingSpec -- + properties: + integration: + description: Integration is an optional integration used to specify + custom parameters + properties: + configuration: + items: + description: ConfigurationSpec -- + properties: + type: + type: string + value: + type: string + required: + - type + - value + type: object + type: array + dependencies: + items: + type: string + type: array + flows: + items: + type: object + type: array + kit: + type: string + profile: + description: TraitProfile represents lists of traits that are enabled + for the specific installation/integration + type: string + replicas: + format: int32 + type: integer + repositories: + items: + type: string + type: array + resources: + items: + description: ResourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + mountPath: + type: string + name: + type: string + type: + description: ResourceType -- + type: string + type: object + type: array + serviceAccountName: + type: string + sources: + items: + description: SourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + interceptors: + description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader + uses to pre/post process sources + items: + type: string + type: array + language: + description: Language -- + type: string + loader: + description: Loader is an optional id of the org.apache.camel.k.RoutesLoader + that will interpret this source at runtime + type: string + name: + type: string + property-names: + description: List of property names defined in the source + (e.g. if type is "template") + items: + type: string + type: array + type: + description: Type defines the kind of source described by + this object + type: string + type: object + type: array + traits: + additionalProperties: + description: A TraitSpec contains the configuration of a trait + properties: + configuration: + type: object + required: + - configuration + type: object + type: object + type: object + sink: + description: Sink is the destination of the integration defined by this + binding + properties: + properties: + description: Properties are a key value representation of endpoint + properties + type: object + ref: + description: Ref can be used to declare a Kubernetes resource as + source/sink endpoint + 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 + uri: + description: URI can alternatively be used to specify the (Camel) + endpoint explicitly + type: string + type: object + source: + description: Source is the starting point of the integration defined + by this binding + properties: + properties: + description: Properties are a key value representation of endpoint + properties + type: object + ref: + description: Ref can be used to declare a Kubernetes resource as + source/sink endpoint + 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 + uri: + description: URI can alternatively be used to specify the (Camel) + endpoint explicitly + type: string + type: object + type: object + status: + description: KameletBindingStatus -- + properties: + conditions: + description: Conditions -- + items: + description: KameletBindingCondition describes the state of a resource + at a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + lastUpdateTime: + description: The last time this condition was updated. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of kameletBinding condition. + type: string + required: + - status + - type + type: object + type: array + phase: + description: Phase -- + type: string + type: object + type: object + version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true diff --git a/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/kamelets.camel.apache.org.crd.yaml b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/kamelets.camel.apache.org.crd.yaml new file mode 100644 index 0000000000..1ff396292c --- /dev/null +++ b/deploy/olm-catalog/camel-k-dev/1.3.0-snapshot/kamelets.camel.apache.org.crd.yaml @@ -0,0 +1,603 @@ +# --------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# --------------------------------------------------------------------------- + +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + labels: + app: "camel-k" + annotations: + controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b + creationTimestamp: null + name: kamelets.camel.apache.org +spec: + additionalPrinterColumns: + - JSONPath: .status.phase + description: The Kamelet phase + name: Phase + type: string + group: camel.apache.org + names: + categories: + - kamel + - camel + kind: Kamelet + listKind: KameletList + plural: kamelets + shortNames: + - kl + singular: kamelet + scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + description: Kamelet is the Schema for the kamelets 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: KameletSpec defines the desired state of Kamelet + properties: + authorization: + description: AuthorizationSpec is TODO (oauth information) + type: object + definition: + description: JSONSchemaProps is a JSON-Schema definition. + properties: + $ref: + type: string + $schema: + description: JSONSchemaURL represents a schema url. + type: string + additionalItems: + type: boolean + additionalProperties: + type: boolean + allOf: + items: {} + type: array + anyOf: + items: {} + type: array + default: + description: default is a default value for undefined object fields. + Defaulting is a beta feature under the CustomResourceDefaulting + feature gate. Defaulting requires spec.preserveUnknownFields to + be false. + definitions: + additionalProperties: {} + description: JSONSchemaDefinitions contains the models explicitly + defined in this spec. + type: object + dependencies: + additionalProperties: + items: + type: string + type: array + description: JSONSchemaDependencies represent a dependencies property. + type: object + description: + type: string + enum: + items: {} + type: array + example: {} + exclusiveMaximum: + type: boolean + exclusiveMinimum: + type: boolean + externalDocs: + description: ExternalDocumentation allows referencing an external + resource for extended documentation. + properties: + description: + type: string + url: + type: string + type: object + format: + description: "format is an OpenAPI v3 format string. Unknown formats + are ignored. The following formats are validated: \n - bsonobjectid: + a bson object ID, i.e. a 24 characters hex string - uri: an URI + as parsed by Golang net/url.ParseRequestURI - email: an email + address as parsed by Golang net/mail.ParseAddress - hostname: + a valid representation for an Internet host name, as defined by + RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed + by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP + - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC + address as parsed by Golang net.ParseMAC - uuid: an UUID that + allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ + - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ + - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ + - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ + - isbn: an ISBN10 or ISBN13 number string like \"0321751043\" + or \"978-0321751041\" - isbn10: an ISBN10 number string like \"0321751043\" + - isbn13: an ISBN13 number string like \"978-0321751041\" - creditcard: + a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$ + with any non digit characters mixed in - ssn: a U.S. social security + number following the regex ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$ + - hexcolor: an hexadecimal color code like \"#FFFFFF: following + the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB + color code like rgb like \"rgb(255,255,2559\" - byte: base64 encoded + binary data - password: any kind of string - date: a date string + like \"2006-01-02\" as defined by full-date in RFC3339 - duration: + a duration string like \"22 ns\" as parsed by Golang time.ParseDuration + or compatible with Scala duration format - datetime: a date time + string like \"2014-12-15T19:30:20.000Z\" as defined by date-time + in RFC3339." + type: string + id: + type: string + items: {} + maxItems: + format: int64 + type: integer + maxLength: + format: int64 + type: integer + maxProperties: + format: int64 + type: integer + maximum: + description: A Number represents a JSON number literal. + type: string + minItems: + format: int64 + type: integer + minLength: + format: int64 + type: integer + minProperties: + format: int64 + type: integer + minimum: + description: A Number represents a JSON number literal. + type: string + multipleOf: + description: A Number represents a JSON number literal. + type: string + not: {} + nullable: + type: boolean + oneOf: + items: {} + type: array + pattern: + type: string + patternProperties: + additionalProperties: {} + type: object + properties: + additionalProperties: {} + type: object + required: + items: + type: string + type: array + title: + type: string + type: + type: string + uniqueItems: + type: boolean + x-descriptors: + description: x-descriptors annotates an object to define additional + display options. + items: + type: string + type: array + x-kubernetes-embedded-resource: + description: x-kubernetes-embedded-resource defines that the value + is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta. + The type must be object. It is allowed to further restrict the + embedded object. kind, apiVersion and metadata are validated automatically. + x-kubernetes-preserve-unknown-fields is allowed to be true, but + does not have to be if the object is fully specified (up to kind, + apiVersion, metadata). + type: boolean + x-kubernetes-int-or-string: + description: "x-kubernetes-int-or-string specifies that this value + is either an integer or a string. If this is true, an empty type + is allowed and type as child of anyOf is permitted if following + one of the following patterns: \n 1) anyOf: - type: integer + \ - type: string 2) allOf: - anyOf: - type: integer + \ - type: string - ... zero or more" + type: boolean + x-kubernetes-list-map-keys: + description: "x-kubernetes-list-map-keys annotates an array with + the x-kubernetes-list-type `map` by specifying the keys used as + the index of the map. \n This tag MUST only be used on lists that + have the \"x-kubernetes-list-type\" extension set to \"map\". + Also, the values specified for this attribute must be a scalar + typed field of the child structure (no nesting is supported). + \n The properties specified must either be required or have a + default value, to ensure those properties are present for all + list items." + items: + type: string + type: array + x-kubernetes-list-type: + description: "x-kubernetes-list-type annotates an array to further + describe its topology. This extension must only be used on lists + and may have 3 possible values: \n 1) `atomic`: the list is treated + as a single entity, like a scalar. Atomic lists will be entirely + replaced when updated. This extension may be used on any + type of list (struct, scalar, ...). 2) `set`: Sets are lists + that must not have multiple items with the same value. Each value + must be a scalar, an object with x-kubernetes-map-type `atomic` + or an array with x-kubernetes-list-type `atomic`. 3) `map`: + \ These lists are like maps in that their elements have a + non-index key used to identify them. Order is preserved upon + merge. The map tag must only be used on a list with elements + of type object. Defaults to atomic for arrays." + type: string + x-kubernetes-map-type: + description: "x-kubernetes-map-type annotates an object to further + describe its topology. This extension must only be used when type + is object and may have 2 possible values: \n 1) `granular`: These + maps are actual maps (key-value pairs) and each fields are independent + \ from each other (they can each be manipulated by separate + actors). This is the default behaviour for all maps. 2) `atomic`: + the list is treated as a single entity, like a scalar. Atomic + maps will be entirely replaced when updated." + type: string + x-kubernetes-preserve-unknown-fields: + description: x-kubernetes-preserve-unknown-fields stops the API + server decoding step from pruning fields which are not specified + in the validation schema. This affects fields recursively, but + switches back to normal pruning behaviour if nested properties + or additionalProperties are specified in the schema. This can + either be true or undefined. False is forbidden. + type: boolean + type: object + dependencies: + items: + type: string + type: array + flow: + type: object + sources: + items: + description: SourceSpec -- + properties: + compression: + type: boolean + content: + type: string + contentKey: + type: string + contentRef: + type: string + interceptors: + description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader + uses to pre/post process sources + items: + type: string + type: array + language: + description: Language -- + type: string + loader: + description: Loader is an optional id of the org.apache.camel.k.RoutesLoader + that will interpret this source at runtime + type: string + name: + type: string + property-names: + description: List of property names defined in the source (e.g. + if type is "template") + items: + type: string + type: array + type: + description: Type defines the kind of source described by this + object + type: string + type: object + type: array + types: + additionalProperties: + properties: + mediaType: + type: string + schema: + description: JSONSchemaProps is a JSON-Schema definition. + properties: + $ref: + type: string + $schema: + description: JSONSchemaURL represents a schema url. + type: string + additionalItems: + type: boolean + additionalProperties: + type: boolean + allOf: + items: {} + type: array + anyOf: + items: {} + type: array + default: + description: default is a default value for undefined object + fields. Defaulting is a beta feature under the CustomResourceDefaulting + feature gate. Defaulting requires spec.preserveUnknownFields + to be false. + definitions: + additionalProperties: {} + description: JSONSchemaDefinitions contains the models explicitly + defined in this spec. + type: object + dependencies: + additionalProperties: + items: + type: string + type: array + description: JSONSchemaDependencies represent a dependencies + property. + type: object + description: + type: string + enum: + items: {} + type: array + example: {} + exclusiveMaximum: + type: boolean + exclusiveMinimum: + type: boolean + externalDocs: + description: ExternalDocumentation allows referencing an external + resource for extended documentation. + properties: + description: + type: string + url: + type: string + type: object + format: + description: "format is an OpenAPI v3 format string. Unknown + formats are ignored. The following formats are validated: + \n - bsonobjectid: a bson object ID, i.e. a 24 characters + hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI + - email: an email address as parsed by Golang net/mail.ParseAddress + - hostname: a valid representation for an Internet host + name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4: + an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6 + IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed + by Golang net.ParseCIDR - mac: a MAC address as parsed by + Golang net.ParseMAC - uuid: an UUID that allows uppercase + defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$ + - uuid3: an UUID3 that allows uppercase defined by the regex + (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$ + - uuid4: an UUID4 that allows uppercase defined by the regex + (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ + - uuid5: an UUID5 that allows uppercase defined by the regex + (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$ + - isbn: an ISBN10 or ISBN13 number string like \"0321751043\" + or \"978-0321751041\" - isbn10: an ISBN10 number string + like \"0321751043\" - isbn13: an ISBN13 number string like + \"978-0321751041\" - creditcard: a credit card number defined + by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$ + with any non digit characters mixed in - ssn: a U.S. social + security number following the regex ^\\\\d{3}[- ]?\\\\d{2}[- + ]?\\\\d{4}$ - hexcolor: an hexadecimal color code like \"#FFFFFF: + following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ + - rgbcolor: an RGB color code like rgb like \"rgb(255,255,2559\" + - byte: base64 encoded binary data - password: any kind + of string - date: a date string like \"2006-01-02\" as defined + by full-date in RFC3339 - duration: a duration string like + \"22 ns\" as parsed by Golang time.ParseDuration or compatible + with Scala duration format - datetime: a date time string + like \"2014-12-15T19:30:20.000Z\" as defined by date-time + in RFC3339." + type: string + id: + type: string + items: {} + maxItems: + format: int64 + type: integer + maxLength: + format: int64 + type: integer + maxProperties: + format: int64 + type: integer + maximum: + description: A Number represents a JSON number literal. + type: string + minItems: + format: int64 + type: integer + minLength: + format: int64 + type: integer + minProperties: + format: int64 + type: integer + minimum: + description: A Number represents a JSON number literal. + type: string + multipleOf: + description: A Number represents a JSON number literal. + type: string + not: {} + nullable: + type: boolean + oneOf: + items: {} + type: array + pattern: + type: string + patternProperties: + additionalProperties: {} + type: object + properties: + additionalProperties: {} + type: object + required: + items: + type: string + type: array + title: + type: string + type: + type: string + uniqueItems: + type: boolean + x-descriptors: + description: x-descriptors annotates an object to define additional + display options. + items: + type: string + type: array + x-kubernetes-embedded-resource: + description: x-kubernetes-embedded-resource defines that the + value is an embedded Kubernetes runtime.Object, with TypeMeta + and ObjectMeta. The type must be object. It is allowed to + further restrict the embedded object. kind, apiVersion and + metadata are validated automatically. x-kubernetes-preserve-unknown-fields + is allowed to be true, but does not have to be if the object + is fully specified (up to kind, apiVersion, metadata). + type: boolean + x-kubernetes-int-or-string: + description: "x-kubernetes-int-or-string specifies that this + value is either an integer or a string. If this is true, + an empty type is allowed and type as child of anyOf is permitted + if following one of the following patterns: \n 1) anyOf: + \ - type: integer - type: string 2) allOf: - anyOf: + \ - type: integer - type: string - ... zero + or more" + type: boolean + x-kubernetes-list-map-keys: + description: "x-kubernetes-list-map-keys annotates an array + with the x-kubernetes-list-type `map` by specifying the + keys used as the index of the map. \n This tag MUST only + be used on lists that have the \"x-kubernetes-list-type\" + extension set to \"map\". Also, the values specified for + this attribute must be a scalar typed field of the child + structure (no nesting is supported). \n The properties specified + must either be required or have a default value, to ensure + those properties are present for all list items." + items: + type: string + type: array + x-kubernetes-list-type: + description: "x-kubernetes-list-type annotates an array to + further describe its topology. This extension must only + be used on lists and may have 3 possible values: \n 1) `atomic`: + the list is treated as a single entity, like a scalar. Atomic + lists will be entirely replaced when updated. This extension + \ may be used on any type of list (struct, scalar, ...). + 2) `set`: Sets are lists that must not have multiple + items with the same value. Each value must be a scalar, + an object with x-kubernetes-map-type `atomic` or an array + with x-kubernetes-list-type `atomic`. 3) `map`: These + lists are like maps in that their elements have a non-index + key used to identify them. Order is preserved upon + merge. The map tag must only be used on a list with + elements of type object. Defaults to atomic for arrays." + type: string + x-kubernetes-map-type: + description: "x-kubernetes-map-type annotates an object to + further describe its topology. This extension must only + be used when type is object and may have 2 possible values: + \n 1) `granular`: These maps are actual maps (key-value + pairs) and each fields are independent from each other + (they can each be manipulated by separate actors). This + is the default behaviour for all maps. 2) `atomic`: + the list is treated as a single entity, like a scalar. Atomic + maps will be entirely replaced when updated." + type: string + x-kubernetes-preserve-unknown-fields: + description: x-kubernetes-preserve-unknown-fields stops the + API server decoding step from pruning fields which are not + specified in the validation schema. This affects fields + recursively, but switches back to normal pruning behaviour + if nested properties or additionalProperties are specified + in the schema. This can either be true or undefined. False + is forbidden. + type: boolean + type: object + type: object + type: object + type: object + status: + description: KameletStatus defines the observed state of Kamelet + properties: + conditions: + items: + description: KameletCondition describes the state of a resource at + a certain point. + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + lastUpdateTime: + description: The last time this condition was updated. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of kamelet condition. + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + properties: + items: + properties: + default: + type: string + name: + type: string + type: object + type: array + type: object + type: object + version: v1alpha1 + versions: + - name: v1alpha1 + served: true + storage: true diff --git a/deploy/olm-catalog/camel-k-dev/camel-k-dev.package.yaml b/deploy/olm-catalog/camel-k-dev/camel-k-dev.package.yaml index 38dc116707..7bbac05cbd 100644 --- a/deploy/olm-catalog/camel-k-dev/camel-k-dev.package.yaml +++ b/deploy/olm-catalog/camel-k-dev/camel-k-dev.package.yaml @@ -16,7 +16,7 @@ # --------------------------------------------------------------------------- channels: -- currentCSV: camel-k-operator.v1.2.0-snapshot +- currentCSV: camel-k-operator.v1.3.0-snapshot name: stable defaultChannel: stable packageName: camel-k-dev diff --git a/deploy/operator-deployment.yaml b/deploy/operator-deployment.yaml index 32fb879c7d..ea88763352 100644 --- a/deploy/operator-deployment.yaml +++ b/deploy/operator-deployment.yaml @@ -39,7 +39,7 @@ spec: serviceAccountName: camel-k-operator containers: - name: camel-k-operator - image: docker.io/apache/camel-k:1.2.0-SNAPSHOT + image: docker.io/apache/camel-k:1.3.0-SNAPSHOT command: - kamel - operator diff --git a/docs/charts/camel-k-0.4.0.tgz b/docs/charts/camel-k-0.4.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e8716efa69386a428c83f01f1b447f56935b0415 GIT binary patch literal 44039 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 J)Y$-l1^}>|+&%yR literal 0 HcmV?d00001 diff --git a/docs/charts/index.yaml b/docs/charts/index.yaml index cee599b733..8d63b0c86a 100644 --- a/docs/charts/index.yaml +++ b/docs/charts/index.yaml @@ -1,9 +1,34 @@ apiVersion: v1 entries: camel-k: + - apiVersion: v2 + appVersion: 1.2.0 + created: "2020-10-13T10:41:32.925987585+02:00" + description: A lightweight integration platform, born on Kubernetes, with serverless + superpowers + digest: c47863e13644340b857acf5c688004927e0ad126a9c39e8c90fa6d84e2c445b9 + home: https://camel.apache.org/camel-k/latest/ + icon: https://github.com/apache/camel/raw/master/docs/img/logo64-d.png + keywords: + - serverless + - integration + - patterns + maintainers: + - email: nferraro@apache.org + name: nferraro + name: camel-k + sources: + - https://github.com/apache/camel-k + - https://github.com/apache/camel-k-runtime + - https://github.com/apache/camel-quarkus + - https://github.com/apache/camel + type: application + urls: + - https://apache.github.io/camel-k/charts/camel-k-0.4.0.tgz + version: 0.4.0 - apiVersion: v2 appVersion: 1.1.1 - created: "2020-09-15T12:51:02.014651571+02:00" + created: "2020-10-13T10:41:32.924145944+02:00" description: A lightweight integration platform, born on Kubernetes, with serverless superpowers digest: 46771bd1c0e52097f07e9c17e657690872716ed845b196cd0c981c97b984b573 @@ -28,7 +53,7 @@ entries: version: 0.3.2 - apiVersion: v2 appVersion: 1.0.1 - created: "2020-09-15T12:51:02.01187172+02:00" + created: "2020-10-13T10:41:32.922192338+02:00" description: A lightweight integration platform, born on Kubernetes, with serverless superpowers digest: d7453b9b6281355caad37896c6760be64735f69009bc312a54cbc17e8a1f6697 @@ -53,7 +78,7 @@ entries: version: 0.3.1 - apiVersion: v2 appVersion: 1.0.0 - created: "2020-09-15T12:51:02.011010499+02:00" + created: "2020-10-13T10:41:32.921639062+02:00" description: A lightweight integration platform, born on Kubernetes, with serverless superpowers digest: 610a2b024d539451ee278b72179f34c242a67b7949e2a4eae7b0fa2d8d3630e3 @@ -78,7 +103,7 @@ entries: version: 0.3.0 - apiVersion: v2 appVersion: 1.0.0-RC2 - created: "2020-09-15T12:51:02.010133635+02:00" + created: "2020-10-13T10:41:32.920154994+02:00" description: A lightweight integration platform, born on Kubernetes, with serverless superpowers digest: 3d5397e111004a8735849dcebd55c9827e687aa3ab28b5c28de8fe69595e1b8f @@ -103,7 +128,7 @@ entries: version: 0.2.1 - apiVersion: v2 appVersion: 1.0.0-RC2 - created: "2020-09-15T12:51:02.009233388+02:00" + created: "2020-10-13T10:41:32.91910233+02:00" description: A lightweight integration platform, born on Kubernetes, with serverless superpowers digest: 43fa5d9563ce76d25695e4132c5870279541b26be2ac8023537b587483853260 @@ -128,7 +153,7 @@ entries: version: 0.1.1 - apiVersion: v2 appVersion: 1.0.0-RC2 - created: "2020-09-15T12:51:02.007417289+02:00" + created: "2020-10-13T10:41:32.91828156+02:00" description: A lightweight integration platform, born on Kubernetes, with serverless superpowers digest: 3bc8c53c4d781c4b4e4aac254d291339b348c2d8b4cf24b579ceb4330a48edd5 @@ -151,4 +176,4 @@ entries: urls: - https://apache.github.io/camel-k/charts/camel-k-0.1.0.tgz version: 0.1.0 -generated: "2020-09-15T12:51:02.006342977+02:00" +generated: "2020-10-13T10:41:32.917385082+02:00" diff --git a/helm/camel-k/Chart.yaml b/helm/camel-k/Chart.yaml index 6e289aa4ac..3d4bb80b07 100644 --- a/helm/camel-k/Chart.yaml +++ b/helm/camel-k/Chart.yaml @@ -31,11 +31,11 @@ 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.4.0 +version: 0.5.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: 1.2.0-SNAPSHOT +appVersion: 1.3.0-SNAPSHOT icon: https://github.com/apache/camel/raw/master/docs/img/logo64-d.png home: https://camel.apache.org/camel-k/latest/ diff --git a/helm/camel-k/values.yaml b/helm/camel-k/values.yaml index 9dbb44a5f2..431ded295f 100644 --- a/helm/camel-k/values.yaml +++ b/helm/camel-k/values.yaml @@ -23,7 +23,7 @@ nameOverride: "" fullnameOverride: "" operator: - image: docker.io/apache/camel-k:1.2.0-SNAPSHOT + image: docker.io/apache/camel-k:1.3.0-SNAPSHOT platform: build: diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go index fe1b5dd6ed..ede7d071ad 100644 --- a/pkg/util/defaults/defaults.go +++ b/pkg/util/defaults/defaults.go @@ -23,7 +23,7 @@ package defaults const ( // Version -- - Version = "1.2.0-SNAPSHOT" + Version = "1.3.0-SNAPSHOT" // DefaultRuntimeVersion -- DefaultRuntimeVersion = "1.5.0" diff --git a/script/Makefile b/script/Makefile index 48bfd6a088..5abb30c933 100644 --- a/script/Makefile +++ b/script/Makefile @@ -14,8 +14,8 @@ # limitations under the License. VERSIONFILE := pkg/util/defaults/defaults.go -VERSION := 1.2.0-SNAPSHOT -LAST_RELEASED_VERSION := 1.1.1 +VERSION := 1.3.0-SNAPSHOT +LAST_RELEASED_VERSION := 1.2.0 RUNTIME_VERSION := 1.5.0 BUILDAH_VERSION := 1.14.0 KANIKO_VERSION := 0.17.1