diff --git a/config/crd/bases/camel.apache.org_integrationkits.yaml b/config/crd/bases/camel.apache.org_integrationkits.yaml index 2a9de14410..8a16efffcb 100644 --- a/config/crd/bases/camel.apache.org_integrationkits.yaml +++ b/config/crd/bases/camel.apache.org_integrationkits.yaml @@ -539,6 +539,236 @@ spec: runtimeVersion: description: the runtime version for which this kit was configured type: string + traits: + description: generated traits executed by the kit + properties: + addons: + additionalProperties: + description: AddonTrait represents the configuration of an addon + trait. + type: object + x-kubernetes-preserve-unknown-fields: true + description: The collection of addon trait configurations + type: object + builder: + description: The builder trait is internally used to determine + the best strategy to build and configure IntegrationKits. + properties: + annotations: + additionalProperties: + type: string + description: When using `pod` strategy, annotation to use + for the builder pod. + type: object + baseImage: + description: Specify a base image + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + incrementalImageBuild: + description: Use the incremental image build option, to reuse + existing containers (default `true`) + type: boolean + limitCPU: + description: 'When using `pod` strategy, the maximum amount + of CPU required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + limitMemory: + description: 'When using `pod` strategy, the maximum amount + of memory required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + mavenProfiles: + description: 'A list of references pointing to configmaps/secrets + that contains a maven profile. The content of the maven + profile is expected to be a text containing a valid maven + profile starting with `` and ending with `` + that will be integrated as an inline profile in the POM. + Syntax: [configmap|secret]:name[/key], where name represents + the resource name, key optionally represents the resource + key to be filtered (default key value = profile.xml).' + items: + type: string + type: array + nodeSelector: + additionalProperties: + type: string + description: Defines a set of nodes the builder pod is eligible + to be scheduled on, based on labels on the node. + type: object + orderStrategy: + description: The build order strategy to use, either `dependencies`, + `fifo` or `sequential` (default `sequential`) + enum: + - dependencies + - fifo + - sequential + type: string + properties: + description: A list of properties to be provided to the build + task + items: + type: string + type: array + requestCPU: + description: 'When using `pod` strategy, the minimum amount + of CPU required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + requestMemory: + description: 'When using `pod` strategy, the minimum amount + of memory required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + strategy: + description: The strategy to use, either `pod` or `routine` + (default `routine`) + enum: + - pod + - routine + type: string + tasks: + description: A list of tasks to be executed (available only + when using `pod` strategy) with format `;;`. + items: + type: string + type: array + tasksFilter: + description: A list of tasks sorted by the order of execution + in a csv format, ie, `,,...`. Mind + that you must include also the operator tasks (`builder`, + `quarkus-native`, `package`, `jib`, `spectrum`, `s2i`) if + you need to execute them. Useful only with `pod` strategy. + type: string + tasksLimitCPU: + description: A list of limit cpu configuration for the specific + task with format `:`. + items: + type: string + type: array + tasksLimitMemory: + description: A list of limit memory configuration for the + specific task with format `:`. + items: + type: string + type: array + tasksRequestCPU: + description: A list of request cpu configuration for the specific + task with format `:`. + items: + type: string + type: array + tasksRequestMemory: + description: A list of request memory configuration for the + specific task with format `:`. + items: + type: string + type: array + verbose: + description: Enable verbose logging on build components that + support it (e.g. Kaniko build pod). Deprecated no longer + in use + type: boolean + type: object + camel: + description: The Camel trait sets up Camel configuration. + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + properties: + description: A list of properties to be provided to the Integration + runtime + items: + type: string + type: array + runtimeVersion: + description: The camel-k-runtime version to use for the integration. + It overrides the default version set in the Integration + Platform. + type: string + type: object + quarkus: + description: 'The Quarkus trait configures the Quarkus runtime. + It''s enabled by default. NOTE: Compiling to a native executable, + requires at least 4GiB of memory, so the Pod running the native + build must have enough memory available.' + properties: + buildMode: + description: 'The Quarkus mode to run: either `jvm` or `native` + (default `jvm`). In case both `jvm` and `native` are specified, + two `IntegrationKit` resources are created, with the `native` + kit having precedence over the `jvm` one once ready.' + items: + description: QuarkusMode is the type of Quarkus build packaging. + enum: + - jvm + - native + type: string + type: array + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + nativeBaseImage: + description: The base image to use when running a native build + (default `quay.io/quarkus/quarkus-micro-image:2.0`) + type: string + nativeBuilderImage: + description: The image containing the tooling required for + a native build (by default it will use the one provided + in the runtime catalog) + type: string + packageTypes: + description: 'The Quarkus package types, `fast-jar` or `native` + (default `fast-jar`). In case both `fast-jar` and `native` + are specified, two `IntegrationKit` resources are created, + with the native kit having precedence over the `fast-jar` + one once ready. The order influences the resolution of the + current kit for the integration. The kit corresponding to + the first package type will be assigned to the integration + in case no existing kit that matches the integration exists. + Deprecated: use `build-mode` instead.' + items: + description: 'QuarkusPackageType is the type of Quarkus + build packaging. Deprecated: use `QuarkusMode` instead.' + enum: + - fast-jar + - native + type: string + type: array + type: object + registry: + description: The Registry trait sets up Maven to use the Image + registry as a Maven repository. + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + type: object + type: object version: description: the Camel K operator version for which this kit was configured type: string diff --git a/config/crd/bases/camel.apache.org_integrations.yaml b/config/crd/bases/camel.apache.org_integrations.yaml index 65682db95b..e72348827a 100644 --- a/config/crd/bases/camel.apache.org_integrations.yaml +++ b/config/crd/bases/camel.apache.org_integrations.yaml @@ -8073,6 +8073,1473 @@ spec: selector: description: label selector type: string + traits: + description: the traits generated and executed for this Integration + properties: + 3scale: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + addons: + additionalProperties: + description: AddonTrait represents the configuration of an addon + trait. + type: object + x-kubernetes-preserve-unknown-fields: true + description: The extension point with addon traits + type: object + affinity: + description: The configuration of Affinity trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + nodeAffinityLabels: + description: Defines a set of nodes the integration pod(s) + are eligible to be scheduled on, based on labels on the + node. + items: + type: string + type: array + podAffinity: + description: Always co-locates multiple replicas of the integration + in the same node (default `false`). + type: boolean + podAffinityLabels: + description: Defines a set of pods (namely those matching + the label selector, relative to the given namespace) that + the integration pod(s) should be co-located with. + items: + type: string + type: array + podAntiAffinity: + description: Never co-locates multiple replicas of the integration + in the same node (default `false`). + type: boolean + podAntiAffinityLabels: + description: Defines a set of pods (namely those matching + the label selector, relative to the given namespace) that + the integration pod(s) should not be co-located with. + items: + type: string + type: array + type: object + builder: + description: The configuration of Builder trait + properties: + annotations: + additionalProperties: + type: string + description: When using `pod` strategy, annotation to use + for the builder pod. + type: object + baseImage: + description: Specify a base image + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + incrementalImageBuild: + description: Use the incremental image build option, to reuse + existing containers (default `true`) + type: boolean + limitCPU: + description: 'When using `pod` strategy, the maximum amount + of CPU required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + limitMemory: + description: 'When using `pod` strategy, the maximum amount + of memory required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + mavenProfiles: + description: 'A list of references pointing to configmaps/secrets + that contains a maven profile. The content of the maven + profile is expected to be a text containing a valid maven + profile starting with `` and ending with `` + that will be integrated as an inline profile in the POM. + Syntax: [configmap|secret]:name[/key], where name represents + the resource name, key optionally represents the resource + key to be filtered (default key value = profile.xml).' + items: + type: string + type: array + nodeSelector: + additionalProperties: + type: string + description: Defines a set of nodes the builder pod is eligible + to be scheduled on, based on labels on the node. + type: object + orderStrategy: + description: The build order strategy to use, either `dependencies`, + `fifo` or `sequential` (default `sequential`) + enum: + - dependencies + - fifo + - sequential + type: string + properties: + description: A list of properties to be provided to the build + task + items: + type: string + type: array + requestCPU: + description: 'When using `pod` strategy, the minimum amount + of CPU required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + requestMemory: + description: 'When using `pod` strategy, the minimum amount + of memory required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + strategy: + description: The strategy to use, either `pod` or `routine` + (default `routine`) + enum: + - pod + - routine + type: string + tasks: + description: A list of tasks to be executed (available only + when using `pod` strategy) with format `;;`. + items: + type: string + type: array + tasksFilter: + description: A list of tasks sorted by the order of execution + in a csv format, ie, `,,...`. Mind + that you must include also the operator tasks (`builder`, + `quarkus-native`, `package`, `jib`, `spectrum`, `s2i`) if + you need to execute them. Useful only with `pod` strategy. + type: string + tasksLimitCPU: + description: A list of limit cpu configuration for the specific + task with format `:`. + items: + type: string + type: array + tasksLimitMemory: + description: A list of limit memory configuration for the + specific task with format `:`. + items: + type: string + type: array + tasksRequestCPU: + description: A list of request cpu configuration for the specific + task with format `:`. + items: + type: string + type: array + tasksRequestMemory: + description: A list of request memory configuration for the + specific task with format `:`. + items: + type: string + type: array + verbose: + description: Enable verbose logging on build components that + support it (e.g. Kaniko build pod). Deprecated no longer + in use + type: boolean + type: object + camel: + description: The configuration of Camel trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + properties: + description: A list of properties to be provided to the Integration + runtime + items: + type: string + type: array + runtimeVersion: + description: The camel-k-runtime version to use for the integration. + It overrides the default version set in the Integration + Platform. + type: string + type: object + container: + description: The configuration of Container trait + properties: + auto: + description: To automatically enable the trait + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + expose: + description: Can be used to enable/disable exposure via kubernetes + Service. + type: boolean + image: + description: The main container image + type: string + imagePullPolicy: + description: 'The pull policy: Always|Never|IfNotPresent' + enum: + - Always + - Never + - IfNotPresent + type: string + limitCPU: + description: The maximum amount of CPU required. + type: string + limitMemory: + description: The maximum amount of memory required. + type: string + name: + description: The main container name. It's named `integration` + by default. + type: string + port: + description: To configure a different port exposed by the + container (default `8080`). + type: integer + portName: + description: To configure a different port name for the port + exposed by the container. It defaults to `http` only when + the `expose` parameter is true. + type: string + requestCPU: + description: The minimum amount of CPU required. + type: string + requestMemory: + description: The minimum amount of memory required. + type: string + servicePort: + description: To configure under which service port the container + port is to be exposed (default `80`). + type: integer + servicePortName: + description: To configure under which service port name the + container port is to be exposed (default `http`). + type: string + type: object + cron: + description: The configuration of Cron trait + properties: + activeDeadlineSeconds: + description: Specifies the duration in seconds, relative to + the start time, that the job may be continuously active + before it is considered to be failed. It defaults to 60s. + format: int64 + type: integer + auto: + description: "Automatically deploy the integration as CronJob + when all routes are either starting from a periodic consumer + (only `cron`, `timer` and `quartz` are supported) or a passive + consumer (e.g. `direct` is a passive consumer). \n It's + required that all periodic consumers have the same period, + and it can be expressed as cron schedule (e.g. `1m` can + be expressed as `0/1 * * * *`, while `35m` or `50s` cannot)." + type: boolean + backoffLimit: + description: Specifies the number of retries before marking + the job failed. It defaults to 2. + format: int32 + type: integer + components: + description: 'A comma separated list of the Camel components + that need to be customized in order for them to work when + the schedule is triggered externally by Kubernetes. Supported + components are currently: `cron`, `timer` and `quartz`.' + type: string + concurrencyPolicy: + description: 'Specifies how to treat concurrent executions + of a Job. Valid values are: - "Allow": allows CronJobs to + run concurrently; - "Forbid" (default): forbids concurrent + runs, skipping next run if previous run hasn''t finished + yet; - "Replace": cancels currently running job and replaces + it with a new one' + enum: + - Allow + - Forbid + - Replace + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + fallback: + description: Use the default Camel implementation of the `cron` + endpoint (`quartz`) instead of trying to materialize the + integration as Kubernetes CronJob. + type: boolean + schedule: + description: The CronJob schedule for the whole integration. + If multiple routes are declared, they must have the same + schedule for this mechanism to work correctly. + type: string + startingDeadlineSeconds: + description: Optional deadline in seconds for starting the + job if it misses scheduled time for any reason. Missed + jobs executions will be counted as failed ones. + format: int64 + type: integer + type: object + dependencies: + description: The configuration of Dependencies trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + type: object + deployer: + description: The configuration of Deployer trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + kind: + description: Allows to explicitly select the desired deployment + kind between `deployment`, `cron-job` or `knative-service` + when creating the resources for running the integration. + enum: + - deployment + - cron-job + - knative-service + type: string + useSSA: + description: Use server-side apply to update the owned resources + (default `true`). Note that it automatically falls back + to client-side patching, if SSA is not available, e.g., + on old Kubernetes clusters. + type: boolean + type: object + deployment: + description: The configuration of Deployment trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + progressDeadlineSeconds: + description: The maximum time in seconds for the deployment + to make progress before it is considered to be failed. It + defaults to `60s`. + format: int32 + type: integer + rollingUpdateMaxSurge: + description: 'The maximum number of pods that can be scheduled + above the desired number of pods. Value can be an absolute + number (ex: 5) or a percentage of desired pods (ex: 10%). + This can not be 0 if MaxUnavailable is 0. Absolute number + is calculated from percentage by rounding up. Defaults to + `25%`.' + type: integer + rollingUpdateMaxUnavailable: + description: 'The maximum number of pods that can be unavailable + during the update. Value can be an absolute number (ex: + 5) or a percentage of desired pods (ex: 10%). Absolute number + is calculated from percentage by rounding down. This can + not be 0 if MaxSurge is 0. Defaults to `25%`.' + type: integer + strategy: + description: The deployment strategy to use to replace existing + pods with new ones. + enum: + - Recreate + - RollingUpdate + type: string + type: object + environment: + description: The configuration of Environment trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + containerMeta: + description: Enables injection of `NAMESPACE` and `POD_NAME` + environment variables (default `true`) + type: boolean + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + httpProxy: + description: Propagates the `HTTP_PROXY`, `HTTPS_PROXY` and + `NO_PROXY` environment variables (default `true`) + type: boolean + vars: + description: A list of environment variables to be added to + the integration container. The syntax is KEY=VALUE, e.g., + `MY_VAR="my value"`. These take precedence over the previously + defined environment variables. + items: + type: string + type: array + type: object + error-handler: + description: The configuration of Error Handler trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + ref: + description: The error handler ref name provided or found + in application properties + type: string + type: object + gc: + description: The configuration of GC trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + discoveryCache: + description: 'Discovery client cache to be used, either `disabled`, + `disk` or `memory` (default `memory`). Deprecated: to be + removed from trait configuration.' + enum: + - disabled + - disk + - memory + type: string + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + type: object + health: + description: The configuration of Health trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + livenessFailureThreshold: + description: Minimum consecutive failures for the liveness + probe to be considered failed after having succeeded. + format: int32 + type: integer + livenessInitialDelay: + description: Number of seconds after the container has started + before the liveness probe is initiated. + format: int32 + type: integer + livenessPeriod: + description: How often to perform the liveness probe. + format: int32 + type: integer + livenessProbeEnabled: + description: Configures the liveness probe for the integration + container (default `false`). + type: boolean + livenessScheme: + description: Scheme to use when connecting to the liveness + probe (default `HTTP`). + type: string + livenessSuccessThreshold: + description: Minimum consecutive successes for the liveness + probe to be considered successful after having failed. + format: int32 + type: integer + livenessTimeout: + description: Number of seconds after which the liveness probe + times out. + format: int32 + type: integer + readinessFailureThreshold: + description: Minimum consecutive failures for the readiness + probe to be considered failed after having succeeded. + format: int32 + type: integer + readinessInitialDelay: + description: Number of seconds after the container has started + before the readiness probe is initiated. + format: int32 + type: integer + readinessPeriod: + description: How often to perform the readiness probe. + format: int32 + type: integer + readinessProbeEnabled: + description: Configures the readiness probe for the integration + container (default `true`). + type: boolean + readinessScheme: + description: Scheme to use when connecting to the readiness + probe (default `HTTP`). + type: string + readinessSuccessThreshold: + description: Minimum consecutive successes for the readiness + probe to be considered successful after having failed. + format: int32 + type: integer + readinessTimeout: + description: Number of seconds after which the readiness probe + times out. + format: int32 + type: integer + startupFailureThreshold: + description: Minimum consecutive failures for the startup + probe to be considered failed after having succeeded. + format: int32 + type: integer + startupInitialDelay: + description: Number of seconds after the container has started + before the startup probe is initiated. + format: int32 + type: integer + startupPeriod: + description: How often to perform the startup probe. + format: int32 + type: integer + startupProbeEnabled: + description: Configures the startup probe for the integration + container (default `false`). + type: boolean + startupScheme: + description: Scheme to use when connecting to the startup + probe (default `HTTP`). + type: string + startupSuccessThreshold: + description: Minimum consecutive successes for the startup + probe to be considered successful after having failed. + format: int32 + type: integer + startupTimeout: + description: Number of seconds after which the startup probe + times out. + format: int32 + type: integer + type: object + ingress: + description: The configuration of Ingress trait + properties: + annotations: + additionalProperties: + type: string + description: 'The annotations added to the ingress. This can + be used to set controller specific annotations, e.g., when + using the NGINX Ingress controller: See https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md' + type: object + auto: + description: To automatically add an ingress whenever the + integration uses an HTTP endpoint consumer. + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + host: + description: To configure the host exposed by the ingress. + type: string + path: + description: To configure the path exposed by the ingress + (default `/`). + type: string + pathType: + description: To configure the path type exposed by the ingress. + One of `Exact`, `Prefix`, `ImplementationSpecific` (default + to `Prefix`). + enum: + - Exact + - Prefix + - ImplementationSpecific + type: string + type: object + istio: + description: The configuration of Istio trait + properties: + allow: + description: Configures a (comma-separated) list of CIDR subnets + that should not be intercepted by the Istio proxy (`10.0.0.0/8,172.16.0.0/12,192.168.0.0/16` + by default). + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + inject: + description: Forces the value for labels `sidecar.istio.io/inject`. + By default the label is set to `true` on deployment and + not set on Knative Service. + type: boolean + type: object + jolokia: + description: The configuration of Jolokia trait + properties: + CACert: + description: The PEM encoded CA certification file path, used + to verify client certificates, applicable when `protocol` + is `https` and `use-ssl-client-authentication` is `true` + (default `/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt` + for OpenShift). + type: string + clientPrincipal: + description: The principal(s) which must be given in a client + certificate to allow access to the Jolokia endpoint, applicable + when `protocol` is `https` and `use-ssl-client-authentication` + is `true` (default `clientPrincipal=cn=system:master-proxy`, + `cn=hawtio-online.hawtio.svc` and `cn=fuse-console.fuse.svc` + for OpenShift). + items: + type: string + type: array + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + discoveryEnabled: + description: Listen for multicast requests (default `false`) + type: boolean + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + extendedClientCheck: + description: Mandate the client certificate contains a client + flag in the extended key usage section, applicable when + `protocol` is `https` and `use-ssl-client-authentication` + is `true` (default `true` for OpenShift). + type: boolean + host: + description: The Host address to which the Jolokia agent should + bind to. If `"\*"` or `"0.0.0.0"` is given, the servers + binds to every network interface (default `"*"`). + type: string + options: + description: A list of additional Jolokia options as defined + in https://jolokia.org/reference/html/agents.html#agent-jvm-config[JVM + agent configuration options] + items: + type: string + type: array + password: + description: The password used for authentication, applicable + when the `user` option is set. + type: string + port: + description: The Jolokia endpoint port (default `8778`). + type: integer + protocol: + description: The protocol to use, either `http` or `https` + (default `https` for OpenShift) + type: string + useSSLClientAuthentication: + description: Whether client certificates should be used for + authentication (default `true` for OpenShift). + type: boolean + user: + description: The user to be used for authentication + type: string + type: object + jvm: + description: The configuration of JVM trait + properties: + classpath: + description: Additional JVM classpath (use `Linux` classpath + separator) + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + debug: + description: Activates remote debugging, so that a debugger + can be attached to the JVM, e.g., using port-forwarding + type: boolean + debugAddress: + description: Transport address at which to listen for the + newly launched JVM (default `*:5005`) + type: string + debugSuspend: + description: Suspends the target JVM immediately before the + main class is loaded + type: boolean + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + options: + description: A list of JVM options + items: + type: string + type: array + printCommand: + description: Prints the command used the start the JVM in + the container logs (default `true`) + type: boolean + type: object + kamelets: + description: The configuration of Kamelets trait + properties: + auto: + description: Automatically inject all referenced Kamelets + and their default configuration (enabled by default) + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + list: + description: Comma separated list of Kamelet names to load + into the current integration + type: string + mountPoint: + description: The directory where the application mounts and + reads Kamelet spec (default `/etc/camel/kamelets`) + type: string + type: object + keda: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + knative: + description: The configuration of Knative trait + properties: + auto: + description: Enable automatic discovery of all trait properties. + type: boolean + channelSinks: + description: List of channels used as destination of integration + routes. Can contain simple channel names or full Camel URIs. + items: + type: string + type: array + channelSources: + description: List of channels used as source of integration + routes. Can contain simple channel names or full Camel URIs. + items: + type: string + type: array + config: + description: Can be used to inject a Knative complete configuration + in JSON format. + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + endpointSinks: + description: List of endpoints used as destination of integration + routes. Can contain simple endpoint names or full Camel + URIs. + items: + type: string + type: array + endpointSources: + description: List of channels used as source of integration + routes. + items: + type: string + type: array + eventSinks: + description: List of event types that the integration will + produce. Can contain simple event types or full Camel URIs + (to use a specific broker). + items: + type: string + type: array + eventSources: + description: List of event types that the integration will + be subscribed to. Can contain simple event types or full + Camel URIs (to use a specific broker different from "default"). + items: + type: string + type: array + filterSourceChannels: + description: Enables filtering on events based on the header + "ce-knativehistory". Since this header has been removed + in newer versions of Knative, filtering is disabled by default. + type: boolean + namespaceLabel: + description: 'Enables the camel-k-operator to set the "bindings.knative.dev/include=true" + label to the namespace As Knative requires this label to + perform injection of K_SINK URL into the service. If this + is false, the integration pod may start and fail, read the + SinkBinding Knative documentation. (default: true)' + type: boolean + sinkBinding: + description: Allows binding the integration to a sink via + a Knative SinkBinding resource. This can be used when the + integration targets a single sink. It's enabled by default + when the integration targets a single sink (except when + the integration is owned by a Knative source). + type: boolean + type: object + knative-service: + description: The configuration of Knative Service trait + properties: + annotations: + additionalProperties: + type: string + description: 'The annotations added to route. This can be + used to set knative service specific annotations CLI usage + example: -t "knative-service.annotations.''haproxy.router.openshift.io/balance''=true"' + type: object + auto: + description: "Automatically deploy the integration as Knative + service when all conditions hold: \n * Integration is using + the Knative profile * All routes are either starting from + an HTTP based consumer or a passive consumer (e.g. `direct` + is a passive consumer)" + type: boolean + autoscalingMetric: + description: "Configures the Knative autoscaling metric property + (e.g. to set `concurrency` based or `cpu` based autoscaling). + \n Refer to the Knative documentation for more information." + type: string + autoscalingTarget: + description: "Sets the allowed concurrency level or CPU percentage + (depending on the autoscaling metric) for each Pod. \n Refer + to the Knative documentation for more information." + type: integer + class: + description: "Configures the Knative autoscaling class property + (e.g. to set `hpa.autoscaling.knative.dev` or `kpa.autoscaling.knative.dev` + autoscaling). \n Refer to the Knative documentation for + more information." + enum: + - kpa.autoscaling.knative.dev + - hpa.autoscaling.knative.dev + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + maxScale: + description: "An upper bound for the number of Pods that can + be running in parallel for the integration. Knative has + its own cap value that depends on the installation. \n Refer + to the Knative documentation for more information." + type: integer + minScale: + description: "The minimum number of Pods that should be running + at any time for the integration. It's **zero** by default, + meaning that the integration is scaled down to zero when + not used for a configured amount of time. \n Refer to the + Knative documentation for more information." + type: integer + rolloutDuration: + description: Enables to gradually shift traffic to the latest + Revision and sets the rollout duration. It's disabled by + default and must be expressed as a Golang `time.Duration` + string representation, rounded to a second precision. + type: string + visibility: + description: "Setting `cluster-local`, Knative service becomes + a private service. Specifically, this option applies the + `networking.knative.dev/visibility` label to Knative service. + \n Refer to the Knative documentation for more information." + enum: + - cluster-local + type: string + type: object + logging: + description: The configuration of Logging trait + properties: + color: + description: Colorize the log output + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + format: + description: Logs message format + type: string + json: + description: Output the logs in JSON + type: boolean + jsonPrettyPrint: + description: Enable "pretty printing" of the JSON logs + type: boolean + level: + description: Adjust the logging level (defaults to `INFO`) + enum: + - FATAL + - WARN + - INFO + - DEBUG + - TRACE + type: string + type: object + master: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + mount: + description: The configuration of Mount trait + properties: + configs: + description: 'A list of configuration pointing to configmap/secret. + The configuration are expected to be UTF-8 resources as + they are processed by runtime Camel Context and tried to + be parsed as property files. They are also made available + on the classpath in order to ease their usage directly from + the Route. Syntax: [configmap|secret]:name[/key], where + name represents the resource name and key optionally represents + the resource key to be filtered' + items: + type: string + type: array + configsAsProperties: + description: Include any property file (suffix `.properties`) + listed in configmaps/secrets provided in the `configs` parameter + as a runtime property file (default `true`). + type: boolean + configsAsPropertyFiles: + description: 'Deprecated: use camel.properties or include + your properties in an explicit property file backed by a + configmap or secret. Let the operator to treat configmaps + or secret as plain properties file with their key/value + list (ie .spec.data["camel.my-property"] = my-value) (default + `true`).' + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + hotReload: + description: Enable "hot reload" when a secret/configmap mounted + is edited (default `false`). The configmap/secret must be + marked with `camel.apache.org/integration` label to be taken + in account. + type: boolean + resources: + description: 'A list of resources (text or binary content) + pointing to configmap/secret. The resources are expected + to be any resource type (text or binary content). The destination + path can be either a default location or any path specified + by the user. Syntax: [configmap|secret]:name[/key][@path], + where name represents the resource name, key optionally + represents the resource key to be filtered and path represents + the destination path' + items: + type: string + type: array + scanKameletsImplicitLabelSecrets: + description: 'Deprecated: include your properties in an explicit + property file backed by a secret. Let the operator to scan + for secret labeled with `camel.apache.org/kamelet` and `camel.apache.org/kamelet.configuration`. + These secrets are mounted to the application and treated + as plain properties file with their key/value list (ie .spec.data["camel.my-property"] + = my-value) (default `true`).' + type: boolean + volumes: + description: 'A list of Persistent Volume Claims to be mounted. + Syntax: [pvcname:/container/path]' + items: + type: string + type: array + type: object + openapi: + description: The configuration of OpenAPI trait + properties: + configmaps: + description: The configmaps holding the spec of the OpenAPI + items: + type: string + type: array + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + type: object + owner: + description: The configuration of Owner trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + targetAnnotations: + description: The set of annotations to be transferred + items: + type: string + type: array + targetLabels: + description: The set of labels to be transferred + items: + type: string + type: array + type: object + pdb: + description: The configuration of PDB trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + maxUnavailable: + description: The number of pods for the Integration that can + be unavailable after an eviction. It can be either an absolute + number or a percentage (default `1` if `min-available` is + also not set). Only one of `max-unavailable` and `min-available` + can be specified. + type: string + minAvailable: + description: The number of pods for the Integration that must + still be available after an eviction. It can be either an + absolute number or a percentage. Only one of `min-available` + and `max-unavailable` can be specified. + type: string + type: object + platform: + description: The configuration of Platform trait + properties: + auto: + description: To automatically detect from the environment + if a default platform can be created (it will be created + on OpenShift only). + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + createDefault: + description: To create a default (empty) platform when the + platform is missing. + type: boolean + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + global: + description: Indicates if the platform should be created globally + in the case of global operator (default true). + type: boolean + type: object + pod: + description: The configuration of Pod trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + type: object + prometheus: + description: The configuration of Prometheus trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + podMonitor: + description: Whether a `PodMonitor` resource is created (default + `true`). + type: boolean + podMonitorLabels: + description: The `PodMonitor` resource labels, applicable + when `pod-monitor` is `true`. + items: + type: string + type: array + type: object + pull-secret: + description: The configuration of Pull Secret trait + properties: + auto: + description: Automatically configures the platform registry + secret on the pod if it is of type `kubernetes.io/dockerconfigjson`. + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + imagePullerDelegation: + description: When using a global operator with a shared platform, + this enables delegation of the `system:image-puller` cluster + role on the operator namespace to the integration service + account. + type: boolean + secretName: + description: The pull secret name to set on the Pod. If left + empty this is automatically taken from the `IntegrationPlatform` + registry configuration. + type: string + type: object + quarkus: + description: The configuration of Quarkus trait + properties: + buildMode: + description: 'The Quarkus mode to run: either `jvm` or `native` + (default `jvm`). In case both `jvm` and `native` are specified, + two `IntegrationKit` resources are created, with the `native` + kit having precedence over the `jvm` one once ready.' + items: + description: QuarkusMode is the type of Quarkus build packaging. + enum: + - jvm + - native + type: string + type: array + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + nativeBaseImage: + description: The base image to use when running a native build + (default `quay.io/quarkus/quarkus-micro-image:2.0`) + type: string + nativeBuilderImage: + description: The image containing the tooling required for + a native build (by default it will use the one provided + in the runtime catalog) + type: string + packageTypes: + description: 'The Quarkus package types, `fast-jar` or `native` + (default `fast-jar`). In case both `fast-jar` and `native` + are specified, two `IntegrationKit` resources are created, + with the native kit having precedence over the `fast-jar` + one once ready. The order influences the resolution of the + current kit for the integration. The kit corresponding to + the first package type will be assigned to the integration + in case no existing kit that matches the integration exists. + Deprecated: use `build-mode` instead.' + items: + description: 'QuarkusPackageType is the type of Quarkus + build packaging. Deprecated: use `QuarkusMode` instead.' + enum: + - fast-jar + - native + type: string + type: array + type: object + registry: + description: The configuration of Registry trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + type: object + route: + description: The configuration of Route trait + properties: + annotations: + additionalProperties: + type: string + description: 'The annotations added to route. This can be + used to set route specific annotations For annotations options + see https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html#route-specific-annotations + CLI usage example: -t "route.annotations.''haproxy.router.openshift.io/balance''=true"' + type: object + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + host: + description: To configure the host exposed by the route. + type: string + tlsCACertificate: + description: "The TLS CA certificate contents. \n Refer to + the OpenShift route documentation for additional information." + type: string + tlsCACertificateSecret: + description: "The secret name and key reference to the TLS + CA certificate. The format is \"secret-name[/key-name]\", + the value represents the secret name, if there is only one + key in the secret it will be read, otherwise you can set + a key name separated with a \"/\". \n Refer to the OpenShift + route documentation for additional information." + type: string + tlsCertificate: + description: "The TLS certificate contents. \n Refer to the + OpenShift route documentation for additional information." + type: string + tlsCertificateSecret: + description: "The secret name and key reference to the TLS + certificate. The format is \"secret-name[/key-name]\", the + value represents the secret name, if there is only one key + in the secret it will be read, otherwise you can set a key + name separated with a \"/\". \n Refer to the OpenShift route + documentation for additional information." + type: string + tlsDestinationCACertificate: + description: "The destination CA certificate provides the + contents of the ca certificate of the final destination. + \ When using reencrypt termination this file should be provided + in order to have routers use it for health checks on the + secure connection. If this field is not specified, the router + may provide its own destination CA and perform hostname + validation using the short service name (service.namespace.svc), + which allows infrastructure generated certificates to automatically + verify. \n Refer to the OpenShift route documentation for + additional information." + type: string + tlsDestinationCACertificateSecret: + description: "The secret name and key reference to the destination + CA certificate. The format is \"secret-name[/key-name]\", + the value represents the secret name, if there is only one + key in the secret it will be read, otherwise you can set + a key name separated with a \"/\". \n Refer to the OpenShift + route documentation for additional information." + type: string + tlsInsecureEdgeTerminationPolicy: + description: "To configure how to deal with insecure traffic, + e.g. `Allow`, `Disable` or `Redirect` traffic. \n Refer + to the OpenShift route documentation for additional information." + enum: + - None + - Allow + - Redirect + type: string + tlsKey: + description: "The TLS certificate key contents. \n Refer to + the OpenShift route documentation for additional information." + type: string + tlsKeySecret: + description: "The secret name and key reference to the TLS + certificate key. The format is \"secret-name[/key-name]\", + the value represents the secret name, if there is only one + key in the secret it will be read, otherwise you can set + a key name separated with a \"/\". \n Refer to the OpenShift + route documentation for additional information." + type: string + tlsTermination: + description: "The TLS termination type, like `edge`, `passthrough` + or `reencrypt`. \n Refer to the OpenShift route documentation + for additional information." + enum: + - edge + - reencrypt + - passthrough + type: string + type: object + service: + description: The configuration of Service trait + properties: + auto: + description: To automatically detect from the code if a Service + needs to be created. + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + nodePort: + description: 'Enable Service to be exposed as NodePort (default + `false`). Deprecated: Use service type instead.' + type: boolean + type: + description: The type of service to be used, either 'ClusterIP', + 'NodePort' or 'LoadBalancer'. + enum: + - ClusterIP + - NodePort + - LoadBalancer + type: string + type: object + service-binding: + description: The configuration of Service Binding trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + services: + description: List of Services in the form [[apigroup/]version:]kind:[namespace/]name + items: + type: string + type: array + type: object + strimzi: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + toleration: + description: The configuration of Toleration trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + taints: + description: The list of taints to tolerate, in the form `Key[=Value]:Effect[:Seconds]` + items: + type: string + type: array + type: object + tracing: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + type: object version: description: the operator version type: string diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc index ff9aaaa5c8..7bce2e3225 100644 --- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc +++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc @@ -2559,6 +2559,13 @@ the Camel K operator version for which this kit was configured a list of conditions which happened for the events related the kit +|`traits` + +*xref:#_camel_apache_org_v1_IntegrationKitTraits[IntegrationKitTraits]* +| + + +generated traits executed by the kit + |=== @@ -2568,6 +2575,7 @@ a list of conditions which happened for the events related the kit *Appears on:* * <<#_camel_apache_org_v1_IntegrationKitSpec, IntegrationKitSpec>> +* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>> IntegrationKitTraits defines traits assigned to an `IntegrationKit`. @@ -3230,6 +3238,13 @@ label selector features offered by the Integration +|`traits` + +*xref:#_camel_apache_org_v1_Traits[Traits]* +| + + +the traits generated and executed for this Integration + |`lastInitTimestamp` + *https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#time-v1-meta[Kubernetes meta/v1.Time]* | @@ -5355,6 +5370,7 @@ TraitConfiguration parameters configuration * <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>> * <<#_camel_apache_org_v1_IntegrationSpec, IntegrationSpec>> +* <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>> Traits represents the collection of trait configurations. diff --git a/helm/camel-k/crds/crd-integration-kit.yaml b/helm/camel-k/crds/crd-integration-kit.yaml index 2a9de14410..8a16efffcb 100644 --- a/helm/camel-k/crds/crd-integration-kit.yaml +++ b/helm/camel-k/crds/crd-integration-kit.yaml @@ -539,6 +539,236 @@ spec: runtimeVersion: description: the runtime version for which this kit was configured type: string + traits: + description: generated traits executed by the kit + properties: + addons: + additionalProperties: + description: AddonTrait represents the configuration of an addon + trait. + type: object + x-kubernetes-preserve-unknown-fields: true + description: The collection of addon trait configurations + type: object + builder: + description: The builder trait is internally used to determine + the best strategy to build and configure IntegrationKits. + properties: + annotations: + additionalProperties: + type: string + description: When using `pod` strategy, annotation to use + for the builder pod. + type: object + baseImage: + description: Specify a base image + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + incrementalImageBuild: + description: Use the incremental image build option, to reuse + existing containers (default `true`) + type: boolean + limitCPU: + description: 'When using `pod` strategy, the maximum amount + of CPU required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + limitMemory: + description: 'When using `pod` strategy, the maximum amount + of memory required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + mavenProfiles: + description: 'A list of references pointing to configmaps/secrets + that contains a maven profile. The content of the maven + profile is expected to be a text containing a valid maven + profile starting with `` and ending with `` + that will be integrated as an inline profile in the POM. + Syntax: [configmap|secret]:name[/key], where name represents + the resource name, key optionally represents the resource + key to be filtered (default key value = profile.xml).' + items: + type: string + type: array + nodeSelector: + additionalProperties: + type: string + description: Defines a set of nodes the builder pod is eligible + to be scheduled on, based on labels on the node. + type: object + orderStrategy: + description: The build order strategy to use, either `dependencies`, + `fifo` or `sequential` (default `sequential`) + enum: + - dependencies + - fifo + - sequential + type: string + properties: + description: A list of properties to be provided to the build + task + items: + type: string + type: array + requestCPU: + description: 'When using `pod` strategy, the minimum amount + of CPU required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + requestMemory: + description: 'When using `pod` strategy, the minimum amount + of memory required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + strategy: + description: The strategy to use, either `pod` or `routine` + (default `routine`) + enum: + - pod + - routine + type: string + tasks: + description: A list of tasks to be executed (available only + when using `pod` strategy) with format `;;`. + items: + type: string + type: array + tasksFilter: + description: A list of tasks sorted by the order of execution + in a csv format, ie, `,,...`. Mind + that you must include also the operator tasks (`builder`, + `quarkus-native`, `package`, `jib`, `spectrum`, `s2i`) if + you need to execute them. Useful only with `pod` strategy. + type: string + tasksLimitCPU: + description: A list of limit cpu configuration for the specific + task with format `:`. + items: + type: string + type: array + tasksLimitMemory: + description: A list of limit memory configuration for the + specific task with format `:`. + items: + type: string + type: array + tasksRequestCPU: + description: A list of request cpu configuration for the specific + task with format `:`. + items: + type: string + type: array + tasksRequestMemory: + description: A list of request memory configuration for the + specific task with format `:`. + items: + type: string + type: array + verbose: + description: Enable verbose logging on build components that + support it (e.g. Kaniko build pod). Deprecated no longer + in use + type: boolean + type: object + camel: + description: The Camel trait sets up Camel configuration. + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + properties: + description: A list of properties to be provided to the Integration + runtime + items: + type: string + type: array + runtimeVersion: + description: The camel-k-runtime version to use for the integration. + It overrides the default version set in the Integration + Platform. + type: string + type: object + quarkus: + description: 'The Quarkus trait configures the Quarkus runtime. + It''s enabled by default. NOTE: Compiling to a native executable, + requires at least 4GiB of memory, so the Pod running the native + build must have enough memory available.' + properties: + buildMode: + description: 'The Quarkus mode to run: either `jvm` or `native` + (default `jvm`). In case both `jvm` and `native` are specified, + two `IntegrationKit` resources are created, with the `native` + kit having precedence over the `jvm` one once ready.' + items: + description: QuarkusMode is the type of Quarkus build packaging. + enum: + - jvm + - native + type: string + type: array + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + nativeBaseImage: + description: The base image to use when running a native build + (default `quay.io/quarkus/quarkus-micro-image:2.0`) + type: string + nativeBuilderImage: + description: The image containing the tooling required for + a native build (by default it will use the one provided + in the runtime catalog) + type: string + packageTypes: + description: 'The Quarkus package types, `fast-jar` or `native` + (default `fast-jar`). In case both `fast-jar` and `native` + are specified, two `IntegrationKit` resources are created, + with the native kit having precedence over the `fast-jar` + one once ready. The order influences the resolution of the + current kit for the integration. The kit corresponding to + the first package type will be assigned to the integration + in case no existing kit that matches the integration exists. + Deprecated: use `build-mode` instead.' + items: + description: 'QuarkusPackageType is the type of Quarkus + build packaging. Deprecated: use `QuarkusMode` instead.' + enum: + - fast-jar + - native + type: string + type: array + type: object + registry: + description: The Registry trait sets up Maven to use the Image + registry as a Maven repository. + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + type: object + type: object version: description: the Camel K operator version for which this kit was configured type: string diff --git a/helm/camel-k/crds/crd-integration.yaml b/helm/camel-k/crds/crd-integration.yaml index 65682db95b..e72348827a 100644 --- a/helm/camel-k/crds/crd-integration.yaml +++ b/helm/camel-k/crds/crd-integration.yaml @@ -8073,6 +8073,1473 @@ spec: selector: description: label selector type: string + traits: + description: the traits generated and executed for this Integration + properties: + 3scale: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + addons: + additionalProperties: + description: AddonTrait represents the configuration of an addon + trait. + type: object + x-kubernetes-preserve-unknown-fields: true + description: The extension point with addon traits + type: object + affinity: + description: The configuration of Affinity trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + nodeAffinityLabels: + description: Defines a set of nodes the integration pod(s) + are eligible to be scheduled on, based on labels on the + node. + items: + type: string + type: array + podAffinity: + description: Always co-locates multiple replicas of the integration + in the same node (default `false`). + type: boolean + podAffinityLabels: + description: Defines a set of pods (namely those matching + the label selector, relative to the given namespace) that + the integration pod(s) should be co-located with. + items: + type: string + type: array + podAntiAffinity: + description: Never co-locates multiple replicas of the integration + in the same node (default `false`). + type: boolean + podAntiAffinityLabels: + description: Defines a set of pods (namely those matching + the label selector, relative to the given namespace) that + the integration pod(s) should not be co-located with. + items: + type: string + type: array + type: object + builder: + description: The configuration of Builder trait + properties: + annotations: + additionalProperties: + type: string + description: When using `pod` strategy, annotation to use + for the builder pod. + type: object + baseImage: + description: Specify a base image + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + incrementalImageBuild: + description: Use the incremental image build option, to reuse + existing containers (default `true`) + type: boolean + limitCPU: + description: 'When using `pod` strategy, the maximum amount + of CPU required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + limitMemory: + description: 'When using `pod` strategy, the maximum amount + of memory required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + mavenProfiles: + description: 'A list of references pointing to configmaps/secrets + that contains a maven profile. The content of the maven + profile is expected to be a text containing a valid maven + profile starting with `` and ending with `` + that will be integrated as an inline profile in the POM. + Syntax: [configmap|secret]:name[/key], where name represents + the resource name, key optionally represents the resource + key to be filtered (default key value = profile.xml).' + items: + type: string + type: array + nodeSelector: + additionalProperties: + type: string + description: Defines a set of nodes the builder pod is eligible + to be scheduled on, based on labels on the node. + type: object + orderStrategy: + description: The build order strategy to use, either `dependencies`, + `fifo` or `sequential` (default `sequential`) + enum: + - dependencies + - fifo + - sequential + type: string + properties: + description: A list of properties to be provided to the build + task + items: + type: string + type: array + requestCPU: + description: 'When using `pod` strategy, the minimum amount + of CPU required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + requestMemory: + description: 'When using `pod` strategy, the minimum amount + of memory required by the pod builder. Deprecated: use TasksRequestCPU + instead with task name `builder`.' + type: string + strategy: + description: The strategy to use, either `pod` or `routine` + (default `routine`) + enum: + - pod + - routine + type: string + tasks: + description: A list of tasks to be executed (available only + when using `pod` strategy) with format `;;`. + items: + type: string + type: array + tasksFilter: + description: A list of tasks sorted by the order of execution + in a csv format, ie, `,,...`. Mind + that you must include also the operator tasks (`builder`, + `quarkus-native`, `package`, `jib`, `spectrum`, `s2i`) if + you need to execute them. Useful only with `pod` strategy. + type: string + tasksLimitCPU: + description: A list of limit cpu configuration for the specific + task with format `:`. + items: + type: string + type: array + tasksLimitMemory: + description: A list of limit memory configuration for the + specific task with format `:`. + items: + type: string + type: array + tasksRequestCPU: + description: A list of request cpu configuration for the specific + task with format `:`. + items: + type: string + type: array + tasksRequestMemory: + description: A list of request memory configuration for the + specific task with format `:`. + items: + type: string + type: array + verbose: + description: Enable verbose logging on build components that + support it (e.g. Kaniko build pod). Deprecated no longer + in use + type: boolean + type: object + camel: + description: The configuration of Camel trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + properties: + description: A list of properties to be provided to the Integration + runtime + items: + type: string + type: array + runtimeVersion: + description: The camel-k-runtime version to use for the integration. + It overrides the default version set in the Integration + Platform. + type: string + type: object + container: + description: The configuration of Container trait + properties: + auto: + description: To automatically enable the trait + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + expose: + description: Can be used to enable/disable exposure via kubernetes + Service. + type: boolean + image: + description: The main container image + type: string + imagePullPolicy: + description: 'The pull policy: Always|Never|IfNotPresent' + enum: + - Always + - Never + - IfNotPresent + type: string + limitCPU: + description: The maximum amount of CPU required. + type: string + limitMemory: + description: The maximum amount of memory required. + type: string + name: + description: The main container name. It's named `integration` + by default. + type: string + port: + description: To configure a different port exposed by the + container (default `8080`). + type: integer + portName: + description: To configure a different port name for the port + exposed by the container. It defaults to `http` only when + the `expose` parameter is true. + type: string + requestCPU: + description: The minimum amount of CPU required. + type: string + requestMemory: + description: The minimum amount of memory required. + type: string + servicePort: + description: To configure under which service port the container + port is to be exposed (default `80`). + type: integer + servicePortName: + description: To configure under which service port name the + container port is to be exposed (default `http`). + type: string + type: object + cron: + description: The configuration of Cron trait + properties: + activeDeadlineSeconds: + description: Specifies the duration in seconds, relative to + the start time, that the job may be continuously active + before it is considered to be failed. It defaults to 60s. + format: int64 + type: integer + auto: + description: "Automatically deploy the integration as CronJob + when all routes are either starting from a periodic consumer + (only `cron`, `timer` and `quartz` are supported) or a passive + consumer (e.g. `direct` is a passive consumer). \n It's + required that all periodic consumers have the same period, + and it can be expressed as cron schedule (e.g. `1m` can + be expressed as `0/1 * * * *`, while `35m` or `50s` cannot)." + type: boolean + backoffLimit: + description: Specifies the number of retries before marking + the job failed. It defaults to 2. + format: int32 + type: integer + components: + description: 'A comma separated list of the Camel components + that need to be customized in order for them to work when + the schedule is triggered externally by Kubernetes. Supported + components are currently: `cron`, `timer` and `quartz`.' + type: string + concurrencyPolicy: + description: 'Specifies how to treat concurrent executions + of a Job. Valid values are: - "Allow": allows CronJobs to + run concurrently; - "Forbid" (default): forbids concurrent + runs, skipping next run if previous run hasn''t finished + yet; - "Replace": cancels currently running job and replaces + it with a new one' + enum: + - Allow + - Forbid + - Replace + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + fallback: + description: Use the default Camel implementation of the `cron` + endpoint (`quartz`) instead of trying to materialize the + integration as Kubernetes CronJob. + type: boolean + schedule: + description: The CronJob schedule for the whole integration. + If multiple routes are declared, they must have the same + schedule for this mechanism to work correctly. + type: string + startingDeadlineSeconds: + description: Optional deadline in seconds for starting the + job if it misses scheduled time for any reason. Missed + jobs executions will be counted as failed ones. + format: int64 + type: integer + type: object + dependencies: + description: The configuration of Dependencies trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + type: object + deployer: + description: The configuration of Deployer trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + kind: + description: Allows to explicitly select the desired deployment + kind between `deployment`, `cron-job` or `knative-service` + when creating the resources for running the integration. + enum: + - deployment + - cron-job + - knative-service + type: string + useSSA: + description: Use server-side apply to update the owned resources + (default `true`). Note that it automatically falls back + to client-side patching, if SSA is not available, e.g., + on old Kubernetes clusters. + type: boolean + type: object + deployment: + description: The configuration of Deployment trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + progressDeadlineSeconds: + description: The maximum time in seconds for the deployment + to make progress before it is considered to be failed. It + defaults to `60s`. + format: int32 + type: integer + rollingUpdateMaxSurge: + description: 'The maximum number of pods that can be scheduled + above the desired number of pods. Value can be an absolute + number (ex: 5) or a percentage of desired pods (ex: 10%). + This can not be 0 if MaxUnavailable is 0. Absolute number + is calculated from percentage by rounding up. Defaults to + `25%`.' + type: integer + rollingUpdateMaxUnavailable: + description: 'The maximum number of pods that can be unavailable + during the update. Value can be an absolute number (ex: + 5) or a percentage of desired pods (ex: 10%). Absolute number + is calculated from percentage by rounding down. This can + not be 0 if MaxSurge is 0. Defaults to `25%`.' + type: integer + strategy: + description: The deployment strategy to use to replace existing + pods with new ones. + enum: + - Recreate + - RollingUpdate + type: string + type: object + environment: + description: The configuration of Environment trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + containerMeta: + description: Enables injection of `NAMESPACE` and `POD_NAME` + environment variables (default `true`) + type: boolean + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + httpProxy: + description: Propagates the `HTTP_PROXY`, `HTTPS_PROXY` and + `NO_PROXY` environment variables (default `true`) + type: boolean + vars: + description: A list of environment variables to be added to + the integration container. The syntax is KEY=VALUE, e.g., + `MY_VAR="my value"`. These take precedence over the previously + defined environment variables. + items: + type: string + type: array + type: object + error-handler: + description: The configuration of Error Handler trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + ref: + description: The error handler ref name provided or found + in application properties + type: string + type: object + gc: + description: The configuration of GC trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + discoveryCache: + description: 'Discovery client cache to be used, either `disabled`, + `disk` or `memory` (default `memory`). Deprecated: to be + removed from trait configuration.' + enum: + - disabled + - disk + - memory + type: string + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + type: object + health: + description: The configuration of Health trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + livenessFailureThreshold: + description: Minimum consecutive failures for the liveness + probe to be considered failed after having succeeded. + format: int32 + type: integer + livenessInitialDelay: + description: Number of seconds after the container has started + before the liveness probe is initiated. + format: int32 + type: integer + livenessPeriod: + description: How often to perform the liveness probe. + format: int32 + type: integer + livenessProbeEnabled: + description: Configures the liveness probe for the integration + container (default `false`). + type: boolean + livenessScheme: + description: Scheme to use when connecting to the liveness + probe (default `HTTP`). + type: string + livenessSuccessThreshold: + description: Minimum consecutive successes for the liveness + probe to be considered successful after having failed. + format: int32 + type: integer + livenessTimeout: + description: Number of seconds after which the liveness probe + times out. + format: int32 + type: integer + readinessFailureThreshold: + description: Minimum consecutive failures for the readiness + probe to be considered failed after having succeeded. + format: int32 + type: integer + readinessInitialDelay: + description: Number of seconds after the container has started + before the readiness probe is initiated. + format: int32 + type: integer + readinessPeriod: + description: How often to perform the readiness probe. + format: int32 + type: integer + readinessProbeEnabled: + description: Configures the readiness probe for the integration + container (default `true`). + type: boolean + readinessScheme: + description: Scheme to use when connecting to the readiness + probe (default `HTTP`). + type: string + readinessSuccessThreshold: + description: Minimum consecutive successes for the readiness + probe to be considered successful after having failed. + format: int32 + type: integer + readinessTimeout: + description: Number of seconds after which the readiness probe + times out. + format: int32 + type: integer + startupFailureThreshold: + description: Minimum consecutive failures for the startup + probe to be considered failed after having succeeded. + format: int32 + type: integer + startupInitialDelay: + description: Number of seconds after the container has started + before the startup probe is initiated. + format: int32 + type: integer + startupPeriod: + description: How often to perform the startup probe. + format: int32 + type: integer + startupProbeEnabled: + description: Configures the startup probe for the integration + container (default `false`). + type: boolean + startupScheme: + description: Scheme to use when connecting to the startup + probe (default `HTTP`). + type: string + startupSuccessThreshold: + description: Minimum consecutive successes for the startup + probe to be considered successful after having failed. + format: int32 + type: integer + startupTimeout: + description: Number of seconds after which the startup probe + times out. + format: int32 + type: integer + type: object + ingress: + description: The configuration of Ingress trait + properties: + annotations: + additionalProperties: + type: string + description: 'The annotations added to the ingress. This can + be used to set controller specific annotations, e.g., when + using the NGINX Ingress controller: See https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md' + type: object + auto: + description: To automatically add an ingress whenever the + integration uses an HTTP endpoint consumer. + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + host: + description: To configure the host exposed by the ingress. + type: string + path: + description: To configure the path exposed by the ingress + (default `/`). + type: string + pathType: + description: To configure the path type exposed by the ingress. + One of `Exact`, `Prefix`, `ImplementationSpecific` (default + to `Prefix`). + enum: + - Exact + - Prefix + - ImplementationSpecific + type: string + type: object + istio: + description: The configuration of Istio trait + properties: + allow: + description: Configures a (comma-separated) list of CIDR subnets + that should not be intercepted by the Istio proxy (`10.0.0.0/8,172.16.0.0/12,192.168.0.0/16` + by default). + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + inject: + description: Forces the value for labels `sidecar.istio.io/inject`. + By default the label is set to `true` on deployment and + not set on Knative Service. + type: boolean + type: object + jolokia: + description: The configuration of Jolokia trait + properties: + CACert: + description: The PEM encoded CA certification file path, used + to verify client certificates, applicable when `protocol` + is `https` and `use-ssl-client-authentication` is `true` + (default `/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt` + for OpenShift). + type: string + clientPrincipal: + description: The principal(s) which must be given in a client + certificate to allow access to the Jolokia endpoint, applicable + when `protocol` is `https` and `use-ssl-client-authentication` + is `true` (default `clientPrincipal=cn=system:master-proxy`, + `cn=hawtio-online.hawtio.svc` and `cn=fuse-console.fuse.svc` + for OpenShift). + items: + type: string + type: array + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + discoveryEnabled: + description: Listen for multicast requests (default `false`) + type: boolean + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + extendedClientCheck: + description: Mandate the client certificate contains a client + flag in the extended key usage section, applicable when + `protocol` is `https` and `use-ssl-client-authentication` + is `true` (default `true` for OpenShift). + type: boolean + host: + description: The Host address to which the Jolokia agent should + bind to. If `"\*"` or `"0.0.0.0"` is given, the servers + binds to every network interface (default `"*"`). + type: string + options: + description: A list of additional Jolokia options as defined + in https://jolokia.org/reference/html/agents.html#agent-jvm-config[JVM + agent configuration options] + items: + type: string + type: array + password: + description: The password used for authentication, applicable + when the `user` option is set. + type: string + port: + description: The Jolokia endpoint port (default `8778`). + type: integer + protocol: + description: The protocol to use, either `http` or `https` + (default `https` for OpenShift) + type: string + useSSLClientAuthentication: + description: Whether client certificates should be used for + authentication (default `true` for OpenShift). + type: boolean + user: + description: The user to be used for authentication + type: string + type: object + jvm: + description: The configuration of JVM trait + properties: + classpath: + description: Additional JVM classpath (use `Linux` classpath + separator) + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + debug: + description: Activates remote debugging, so that a debugger + can be attached to the JVM, e.g., using port-forwarding + type: boolean + debugAddress: + description: Transport address at which to listen for the + newly launched JVM (default `*:5005`) + type: string + debugSuspend: + description: Suspends the target JVM immediately before the + main class is loaded + type: boolean + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + options: + description: A list of JVM options + items: + type: string + type: array + printCommand: + description: Prints the command used the start the JVM in + the container logs (default `true`) + type: boolean + type: object + kamelets: + description: The configuration of Kamelets trait + properties: + auto: + description: Automatically inject all referenced Kamelets + and their default configuration (enabled by default) + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + list: + description: Comma separated list of Kamelet names to load + into the current integration + type: string + mountPoint: + description: The directory where the application mounts and + reads Kamelet spec (default `/etc/camel/kamelets`) + type: string + type: object + keda: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + knative: + description: The configuration of Knative trait + properties: + auto: + description: Enable automatic discovery of all trait properties. + type: boolean + channelSinks: + description: List of channels used as destination of integration + routes. Can contain simple channel names or full Camel URIs. + items: + type: string + type: array + channelSources: + description: List of channels used as source of integration + routes. Can contain simple channel names or full Camel URIs. + items: + type: string + type: array + config: + description: Can be used to inject a Knative complete configuration + in JSON format. + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + endpointSinks: + description: List of endpoints used as destination of integration + routes. Can contain simple endpoint names or full Camel + URIs. + items: + type: string + type: array + endpointSources: + description: List of channels used as source of integration + routes. + items: + type: string + type: array + eventSinks: + description: List of event types that the integration will + produce. Can contain simple event types or full Camel URIs + (to use a specific broker). + items: + type: string + type: array + eventSources: + description: List of event types that the integration will + be subscribed to. Can contain simple event types or full + Camel URIs (to use a specific broker different from "default"). + items: + type: string + type: array + filterSourceChannels: + description: Enables filtering on events based on the header + "ce-knativehistory". Since this header has been removed + in newer versions of Knative, filtering is disabled by default. + type: boolean + namespaceLabel: + description: 'Enables the camel-k-operator to set the "bindings.knative.dev/include=true" + label to the namespace As Knative requires this label to + perform injection of K_SINK URL into the service. If this + is false, the integration pod may start and fail, read the + SinkBinding Knative documentation. (default: true)' + type: boolean + sinkBinding: + description: Allows binding the integration to a sink via + a Knative SinkBinding resource. This can be used when the + integration targets a single sink. It's enabled by default + when the integration targets a single sink (except when + the integration is owned by a Knative source). + type: boolean + type: object + knative-service: + description: The configuration of Knative Service trait + properties: + annotations: + additionalProperties: + type: string + description: 'The annotations added to route. This can be + used to set knative service specific annotations CLI usage + example: -t "knative-service.annotations.''haproxy.router.openshift.io/balance''=true"' + type: object + auto: + description: "Automatically deploy the integration as Knative + service when all conditions hold: \n * Integration is using + the Knative profile * All routes are either starting from + an HTTP based consumer or a passive consumer (e.g. `direct` + is a passive consumer)" + type: boolean + autoscalingMetric: + description: "Configures the Knative autoscaling metric property + (e.g. to set `concurrency` based or `cpu` based autoscaling). + \n Refer to the Knative documentation for more information." + type: string + autoscalingTarget: + description: "Sets the allowed concurrency level or CPU percentage + (depending on the autoscaling metric) for each Pod. \n Refer + to the Knative documentation for more information." + type: integer + class: + description: "Configures the Knative autoscaling class property + (e.g. to set `hpa.autoscaling.knative.dev` or `kpa.autoscaling.knative.dev` + autoscaling). \n Refer to the Knative documentation for + more information." + enum: + - kpa.autoscaling.knative.dev + - hpa.autoscaling.knative.dev + type: string + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + maxScale: + description: "An upper bound for the number of Pods that can + be running in parallel for the integration. Knative has + its own cap value that depends on the installation. \n Refer + to the Knative documentation for more information." + type: integer + minScale: + description: "The minimum number of Pods that should be running + at any time for the integration. It's **zero** by default, + meaning that the integration is scaled down to zero when + not used for a configured amount of time. \n Refer to the + Knative documentation for more information." + type: integer + rolloutDuration: + description: Enables to gradually shift traffic to the latest + Revision and sets the rollout duration. It's disabled by + default and must be expressed as a Golang `time.Duration` + string representation, rounded to a second precision. + type: string + visibility: + description: "Setting `cluster-local`, Knative service becomes + a private service. Specifically, this option applies the + `networking.knative.dev/visibility` label to Knative service. + \n Refer to the Knative documentation for more information." + enum: + - cluster-local + type: string + type: object + logging: + description: The configuration of Logging trait + properties: + color: + description: Colorize the log output + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + format: + description: Logs message format + type: string + json: + description: Output the logs in JSON + type: boolean + jsonPrettyPrint: + description: Enable "pretty printing" of the JSON logs + type: boolean + level: + description: Adjust the logging level (defaults to `INFO`) + enum: + - FATAL + - WARN + - INFO + - DEBUG + - TRACE + type: string + type: object + master: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + mount: + description: The configuration of Mount trait + properties: + configs: + description: 'A list of configuration pointing to configmap/secret. + The configuration are expected to be UTF-8 resources as + they are processed by runtime Camel Context and tried to + be parsed as property files. They are also made available + on the classpath in order to ease their usage directly from + the Route. Syntax: [configmap|secret]:name[/key], where + name represents the resource name and key optionally represents + the resource key to be filtered' + items: + type: string + type: array + configsAsProperties: + description: Include any property file (suffix `.properties`) + listed in configmaps/secrets provided in the `configs` parameter + as a runtime property file (default `true`). + type: boolean + configsAsPropertyFiles: + description: 'Deprecated: use camel.properties or include + your properties in an explicit property file backed by a + configmap or secret. Let the operator to treat configmaps + or secret as plain properties file with their key/value + list (ie .spec.data["camel.my-property"] = my-value) (default + `true`).' + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + hotReload: + description: Enable "hot reload" when a secret/configmap mounted + is edited (default `false`). The configmap/secret must be + marked with `camel.apache.org/integration` label to be taken + in account. + type: boolean + resources: + description: 'A list of resources (text or binary content) + pointing to configmap/secret. The resources are expected + to be any resource type (text or binary content). The destination + path can be either a default location or any path specified + by the user. Syntax: [configmap|secret]:name[/key][@path], + where name represents the resource name, key optionally + represents the resource key to be filtered and path represents + the destination path' + items: + type: string + type: array + scanKameletsImplicitLabelSecrets: + description: 'Deprecated: include your properties in an explicit + property file backed by a secret. Let the operator to scan + for secret labeled with `camel.apache.org/kamelet` and `camel.apache.org/kamelet.configuration`. + These secrets are mounted to the application and treated + as plain properties file with their key/value list (ie .spec.data["camel.my-property"] + = my-value) (default `true`).' + type: boolean + volumes: + description: 'A list of Persistent Volume Claims to be mounted. + Syntax: [pvcname:/container/path]' + items: + type: string + type: array + type: object + openapi: + description: The configuration of OpenAPI trait + properties: + configmaps: + description: The configmaps holding the spec of the OpenAPI + items: + type: string + type: array + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + type: object + owner: + description: The configuration of Owner trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + targetAnnotations: + description: The set of annotations to be transferred + items: + type: string + type: array + targetLabels: + description: The set of labels to be transferred + items: + type: string + type: array + type: object + pdb: + description: The configuration of PDB trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + maxUnavailable: + description: The number of pods for the Integration that can + be unavailable after an eviction. It can be either an absolute + number or a percentage (default `1` if `min-available` is + also not set). Only one of `max-unavailable` and `min-available` + can be specified. + type: string + minAvailable: + description: The number of pods for the Integration that must + still be available after an eviction. It can be either an + absolute number or a percentage. Only one of `min-available` + and `max-unavailable` can be specified. + type: string + type: object + platform: + description: The configuration of Platform trait + properties: + auto: + description: To automatically detect from the environment + if a default platform can be created (it will be created + on OpenShift only). + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + createDefault: + description: To create a default (empty) platform when the + platform is missing. + type: boolean + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + global: + description: Indicates if the platform should be created globally + in the case of global operator (default true). + type: boolean + type: object + pod: + description: The configuration of Pod trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + type: object + prometheus: + description: The configuration of Prometheus trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + podMonitor: + description: Whether a `PodMonitor` resource is created (default + `true`). + type: boolean + podMonitorLabels: + description: The `PodMonitor` resource labels, applicable + when `pod-monitor` is `true`. + items: + type: string + type: array + type: object + pull-secret: + description: The configuration of Pull Secret trait + properties: + auto: + description: Automatically configures the platform registry + secret on the pod if it is of type `kubernetes.io/dockerconfigjson`. + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + imagePullerDelegation: + description: When using a global operator with a shared platform, + this enables delegation of the `system:image-puller` cluster + role on the operator namespace to the integration service + account. + type: boolean + secretName: + description: The pull secret name to set on the Pod. If left + empty this is automatically taken from the `IntegrationPlatform` + registry configuration. + type: string + type: object + quarkus: + description: The configuration of Quarkus trait + properties: + buildMode: + description: 'The Quarkus mode to run: either `jvm` or `native` + (default `jvm`). In case both `jvm` and `native` are specified, + two `IntegrationKit` resources are created, with the `native` + kit having precedence over the `jvm` one once ready.' + items: + description: QuarkusMode is the type of Quarkus build packaging. + enum: + - jvm + - native + type: string + type: array + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: 'Deprecated: no longer in use.' + type: boolean + nativeBaseImage: + description: The base image to use when running a native build + (default `quay.io/quarkus/quarkus-micro-image:2.0`) + type: string + nativeBuilderImage: + description: The image containing the tooling required for + a native build (by default it will use the one provided + in the runtime catalog) + type: string + packageTypes: + description: 'The Quarkus package types, `fast-jar` or `native` + (default `fast-jar`). In case both `fast-jar` and `native` + are specified, two `IntegrationKit` resources are created, + with the native kit having precedence over the `fast-jar` + one once ready. The order influences the resolution of the + current kit for the integration. The kit corresponding to + the first package type will be assigned to the integration + in case no existing kit that matches the integration exists. + Deprecated: use `build-mode` instead.' + items: + description: 'QuarkusPackageType is the type of Quarkus + build packaging. Deprecated: use `QuarkusMode` instead.' + enum: + - fast-jar + - native + type: string + type: array + type: object + registry: + description: The configuration of Registry trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + type: object + route: + description: The configuration of Route trait + properties: + annotations: + additionalProperties: + type: string + description: 'The annotations added to route. This can be + used to set route specific annotations For annotations options + see https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html#route-specific-annotations + CLI usage example: -t "route.annotations.''haproxy.router.openshift.io/balance''=true"' + type: object + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + host: + description: To configure the host exposed by the route. + type: string + tlsCACertificate: + description: "The TLS CA certificate contents. \n Refer to + the OpenShift route documentation for additional information." + type: string + tlsCACertificateSecret: + description: "The secret name and key reference to the TLS + CA certificate. The format is \"secret-name[/key-name]\", + the value represents the secret name, if there is only one + key in the secret it will be read, otherwise you can set + a key name separated with a \"/\". \n Refer to the OpenShift + route documentation for additional information." + type: string + tlsCertificate: + description: "The TLS certificate contents. \n Refer to the + OpenShift route documentation for additional information." + type: string + tlsCertificateSecret: + description: "The secret name and key reference to the TLS + certificate. The format is \"secret-name[/key-name]\", the + value represents the secret name, if there is only one key + in the secret it will be read, otherwise you can set a key + name separated with a \"/\". \n Refer to the OpenShift route + documentation for additional information." + type: string + tlsDestinationCACertificate: + description: "The destination CA certificate provides the + contents of the ca certificate of the final destination. + \ When using reencrypt termination this file should be provided + in order to have routers use it for health checks on the + secure connection. If this field is not specified, the router + may provide its own destination CA and perform hostname + validation using the short service name (service.namespace.svc), + which allows infrastructure generated certificates to automatically + verify. \n Refer to the OpenShift route documentation for + additional information." + type: string + tlsDestinationCACertificateSecret: + description: "The secret name and key reference to the destination + CA certificate. The format is \"secret-name[/key-name]\", + the value represents the secret name, if there is only one + key in the secret it will be read, otherwise you can set + a key name separated with a \"/\". \n Refer to the OpenShift + route documentation for additional information." + type: string + tlsInsecureEdgeTerminationPolicy: + description: "To configure how to deal with insecure traffic, + e.g. `Allow`, `Disable` or `Redirect` traffic. \n Refer + to the OpenShift route documentation for additional information." + enum: + - None + - Allow + - Redirect + type: string + tlsKey: + description: "The TLS certificate key contents. \n Refer to + the OpenShift route documentation for additional information." + type: string + tlsKeySecret: + description: "The secret name and key reference to the TLS + certificate key. The format is \"secret-name[/key-name]\", + the value represents the secret name, if there is only one + key in the secret it will be read, otherwise you can set + a key name separated with a \"/\". \n Refer to the OpenShift + route documentation for additional information." + type: string + tlsTermination: + description: "The TLS termination type, like `edge`, `passthrough` + or `reencrypt`. \n Refer to the OpenShift route documentation + for additional information." + enum: + - edge + - reencrypt + - passthrough + type: string + type: object + service: + description: The configuration of Service trait + properties: + auto: + description: To automatically detect from the code if a Service + needs to be created. + type: boolean + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + nodePort: + description: 'Enable Service to be exposed as NodePort (default + `false`). Deprecated: Use service type instead.' + type: boolean + type: + description: The type of service to be used, either 'ClusterIP', + 'NodePort' or 'LoadBalancer'. + enum: + - ClusterIP + - NodePort + - LoadBalancer + type: string + type: object + service-binding: + description: The configuration of Service Binding trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + services: + description: List of Services in the form [[apigroup/]version:]kind:[namespace/]name + items: + type: string + type: array + type: object + strimzi: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + toleration: + description: The configuration of Toleration trait + properties: + configuration: + description: 'Legacy trait configuration parameters. Deprecated: + for backward compatibility.' + type: object + x-kubernetes-preserve-unknown-fields: true + enabled: + description: Can be used to enable or disable a trait. All + traits share this common property. + type: boolean + taints: + description: The list of taints to tolerate, in the form `Key[=Value]:Effect[:Seconds]` + items: + type: string + type: array + type: object + tracing: + description: 'Deprecated: for backward compatibility.' + properties: + configuration: + description: TraitConfiguration parameters configuration + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - configuration + type: object + type: object version: description: the operator version type: string diff --git a/pkg/apis/camel/v1/integration_types.go b/pkg/apis/camel/v1/integration_types.go index 9f293f6a63..c72a96253f 100644 --- a/pkg/apis/camel/v1/integration_types.go +++ b/pkg/apis/camel/v1/integration_types.go @@ -118,6 +118,8 @@ type IntegrationStatus struct { Selector string `json:"selector,omitempty"` // features offered by the Integration Capabilities []string `json:"capabilities,omitempty"` + // the traits generated and executed for this Integration + Traits Traits `json:"traits,omitempty"` // the timestamp representing the last time when this integration was initialized. InitializationTimestamp *metav1.Time `json:"lastInitTimestamp,omitempty"` } diff --git a/pkg/apis/camel/v1/integrationkit_types.go b/pkg/apis/camel/v1/integrationkit_types.go index 8ee233dee6..5311e7dd7b 100644 --- a/pkg/apis/camel/v1/integrationkit_types.go +++ b/pkg/apis/camel/v1/integrationkit_types.go @@ -120,6 +120,8 @@ type IntegrationKitStatus struct { Version string `json:"version,omitempty"` // a list of conditions which happened for the events related the kit Conditions []IntegrationKitCondition `json:"conditions,omitempty"` + // generated traits executed by the kit + Traits IntegrationKitTraits `json:"traits,omitempty"` } // +kubebuilder:object:root=true diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go b/pkg/apis/camel/v1/zz_generated.deepcopy.go index ed9b930e3f..8a3629a384 100644 --- a/pkg/apis/camel/v1/zz_generated.deepcopy.go +++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go @@ -1280,6 +1280,7 @@ func (in *IntegrationKitStatus) DeepCopyInto(out *IntegrationKitStatus) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + in.Traits.DeepCopyInto(&out.Traits) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationKitStatus. @@ -1667,6 +1668,7 @@ func (in *IntegrationStatus) DeepCopyInto(out *IntegrationStatus) { *out = make([]string, len(*in)) copy(*out, *in) } + in.Traits.DeepCopyInto(&out.Traits) if in.InitializationTimestamp != nil { in, out := &in.InitializationTimestamp, &out.InitializationTimestamp *out = (*in).DeepCopy() diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go index 12650227af..931c92f89f 100644 --- a/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go +++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go @@ -39,6 +39,7 @@ type IntegrationKitStatusApplyConfiguration struct { Platform *string `json:"platform,omitempty"` Version *string `json:"version,omitempty"` Conditions []IntegrationKitConditionApplyConfiguration `json:"conditions,omitempty"` + Traits *IntegrationKitTraitsApplyConfiguration `json:"traits,omitempty"` } // IntegrationKitStatusApplyConfiguration constructs an declarative configuration of the IntegrationKitStatus type for use with @@ -160,3 +161,11 @@ func (b *IntegrationKitStatusApplyConfiguration) WithConditions(values ...*Integ } return b } + +// WithTraits sets the Traits field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Traits field is set to the value of the last call. +func (b *IntegrationKitStatusApplyConfiguration) WithTraits(value *IntegrationKitTraitsApplyConfiguration) *IntegrationKitStatusApplyConfiguration { + b.Traits = value + return b +} diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go index d17acaa2b2..8ef4bdfcf5 100644 --- a/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go +++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go @@ -45,6 +45,7 @@ type IntegrationStatusApplyConfiguration struct { Replicas *int32 `json:"replicas,omitempty"` Selector *string `json:"selector,omitempty"` Capabilities []string `json:"capabilities,omitempty"` + Traits *TraitsApplyConfiguration `json:"traits,omitempty"` InitializationTimestamp *metav1.Time `json:"lastInitTimestamp,omitempty"` } @@ -209,6 +210,14 @@ func (b *IntegrationStatusApplyConfiguration) WithCapabilities(values ...string) return b } +// WithTraits sets the Traits field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Traits field is set to the value of the last call. +func (b *IntegrationStatusApplyConfiguration) WithTraits(value *TraitsApplyConfiguration) *IntegrationStatusApplyConfiguration { + b.Traits = value + return b +} + // WithInitializationTimestamp sets the InitializationTimestamp field in the declarative configuration to the given value // and returns the receiver, so that objects can be built by chaining "With" function invocations. // If called multiple times, the InitializationTimestamp field is set to the value of the last call. diff --git a/pkg/cmd/promote_test.go b/pkg/cmd/promote_test.go index bc39d63de9..0cf9093d88 100644 --- a/pkg/cmd/promote_test.go +++ b/pkg/cmd/promote_test.go @@ -101,7 +101,8 @@ spec: traits: container: image: my-special-image -status: {} +status: + traits: {} `, output) } @@ -197,7 +198,8 @@ spec: traits: container: image: my-special-image -status: {} +status: + traits: {} `, output) } @@ -316,7 +318,8 @@ spec: traits: container: image: my-special-image -status: {} +status: + traits: {} `, output) // Verify also when the operator Id is set in the integration defaultIntegration.Annotations = map[string]string{ @@ -338,6 +341,7 @@ spec: traits: container: image: my-special-image -status: {} +status: + traits: {} `, output) } diff --git a/pkg/cmd/run_test.go b/pkg/cmd/run_test.go index 4ecc9fd1b4..d6bddb689a 100644 --- a/pkg/cmd/run_test.go +++ b/pkg/cmd/run_test.go @@ -608,7 +608,8 @@ spec: {\n\t from(\"timer:tick\")\n .log(\"Hello Camel K!\");\n }\n}\n" name: %s traits: {} -status: {} +status: + traits: {} `, fileName, fileName), output) } @@ -648,7 +649,8 @@ spec: service-binding: services: - my-service-binding -status: {} +status: + traits: {} `, fileName, fileName), output) } @@ -956,6 +958,7 @@ spec: mount: configs: - configmap:my-cm -status: {} +status: + traits: {} `, output) } diff --git a/pkg/controller/integration/kits.go b/pkg/controller/integration/kits.go index 5cdfb06784..c4c2e69e8c 100644 --- a/pkg/controller/integration/kits.go +++ b/pkg/controller/integration/kits.go @@ -114,11 +114,11 @@ func integrationMatches(integration *v1.Integration, kit *v1.IntegrationKit) (bo // A kit can be used only if it contains a subset of the traits and related configurations // declared on integration. - itc, err := trait.NewTraitsOptionsForIntegration(integration) + itc, err := trait.NewStatusTraitsOptionsForIntegration(integration) if err != nil { return false, err } - ikc, err := trait.NewTraitsOptionsForIntegrationKit(kit) + ikc, err := trait.NewStatusTraitsOptionsForIntegrationKit(kit) if err != nil { return false, err } @@ -162,25 +162,26 @@ func statusMatches(integration *v1.Integration, kit *v1.IntegrationKit, ilog *lo return true } -// kitMatches returns whether the two v1.IntegrationKit match. -func kitMatches(kit1 *v1.IntegrationKit, kit2 *v1.IntegrationKit) (bool, error) { - version := kit1.Status.Version +// kitMatches returns whether the kit matches with the existing target kit. +func kitMatches(kit *v1.IntegrationKit, target *v1.IntegrationKit) (bool, error) { + version := kit.Status.Version if version == "" { // Defaults with the version that is going to be set during the kit initialization version = defaults.Version } - if version != kit2.Status.Version { + if version != target.Status.Version { return false, nil } - if len(kit1.Spec.Dependencies) != len(kit2.Spec.Dependencies) { + if len(kit.Spec.Dependencies) != len(target.Spec.Dependencies) { return false, nil } - c1, err := trait.NewTraitsOptionsForIntegrationKit(kit1) + // We cannot have yet the status set + c1, err := trait.NewSpecTraitsOptionsForIntegrationKit(kit) if err != nil { return false, err } - c2, err := trait.NewTraitsOptionsForIntegrationKit(kit2) + c2, err := trait.NewStatusTraitsOptionsForIntegrationKit(target) if err != nil { return false, err } @@ -188,7 +189,7 @@ func kitMatches(kit1 *v1.IntegrationKit, kit2 *v1.IntegrationKit) (bool, error) if match, err := hasMatchingTraits(c1, c2); !match || err != nil { return false, err } - if !util.StringSliceContains(kit1.Spec.Dependencies, kit2.Spec.Dependencies) { + if !util.StringSliceContains(kit.Spec.Dependencies, target.Spec.Dependencies) { return false, nil } diff --git a/pkg/controller/integration/kits_test.go b/pkg/controller/integration/kits_test.go index 173d884cf0..c2713159c7 100644 --- a/pkg/controller/integration/kits_test.go +++ b/pkg/controller/integration/kits_test.go @@ -162,6 +162,11 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T) }, Status: v1.IntegrationKitStatus{ Phase: v1.IntegrationKitPhaseReady, + Traits: v1.IntegrationKitTraits{ + Builder: &traitv1.BuilderTrait{ + PlatformBaseTrait: traitv1.PlatformBaseTrait{}, + }, + }, }, }, // Should NOT be discarded because it contains a subset of the required traits and @@ -194,6 +199,14 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T) }, Status: v1.IntegrationKitStatus{ Phase: v1.IntegrationKitPhaseReady, + Traits: v1.IntegrationKitTraits{ + Builder: &traitv1.BuilderTrait{ + PlatformBaseTrait: traitv1.PlatformBaseTrait{}, + Properties: []string{ + "build-key1=build-value1", + }, + }, + }, }, }, ) @@ -228,6 +241,14 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T) "camel-core", "camel-irc", }, + Traits: v1.Traits{ + Builder: &traitv1.BuilderTrait{ + PlatformBaseTrait: traitv1.PlatformBaseTrait{}, + Properties: []string{ + "build-key1=build-value1", + }, + }, + }, }, }) @@ -254,6 +275,13 @@ func TestHasMatchingTraits_KitNoTraitShouldNotBePicked(t *testing.T) { }, }, }, + Status: v1.IntegrationStatus{ + Traits: v1.Traits{ + Builder: &traitv1.BuilderTrait{ + PlatformBaseTrait: traitv1.PlatformBaseTrait{}, + }, + }, + }, } kit := &v1.IntegrationKit{ @@ -270,7 +298,7 @@ func TestHasMatchingTraits_KitNoTraitShouldNotBePicked(t *testing.T) { a := buildKitAction{} a.InjectLogger(log.Log) - ok, err := trait.IntegrationAndKitHaveSameTraits(integration, kit) + ok, err := integrationAndKitHaveSameTraits(integration, kit) assert.Nil(t, err) assert.False(t, ok) } @@ -295,6 +323,16 @@ func TestHasMatchingTraits_KitSameTraitShouldBePicked(t *testing.T) { }, }, }, + Status: v1.IntegrationStatus{ + Traits: v1.Traits{ + Builder: &traitv1.BuilderTrait{ + PlatformBaseTrait: traitv1.PlatformBaseTrait{}, + Properties: []string{ + "build-key1=build-value1", + }, + }, + }, + }, } kit := &v1.IntegrationKit{ @@ -316,12 +354,22 @@ func TestHasMatchingTraits_KitSameTraitShouldBePicked(t *testing.T) { }, }, }, + Status: v1.IntegrationKitStatus{ + Traits: v1.IntegrationKitTraits{ + Builder: &traitv1.BuilderTrait{ + PlatformBaseTrait: traitv1.PlatformBaseTrait{}, + Properties: []string{ + "build-key1=build-value1", + }, + }, + }, + }, } a := buildKitAction{} a.InjectLogger(log.Log) - ok, err := trait.IntegrationAndKitHaveSameTraits(integration, kit) + ok, err := integrationAndKitHaveSameTraits(integration, kit) assert.Nil(t, err) assert.True(t, ok) } @@ -422,3 +470,16 @@ func TestHasNotMatchingSources(t *testing.T) { hsm2 := hasMatchingSourcesForNative(integration, kit2) assert.False(t, hsm2) } + +func integrationAndKitHaveSameTraits(i1 *v1.Integration, i2 *v1.IntegrationKit) (bool, error) { + itOpts, err := trait.NewStatusTraitsOptionsForIntegration(i1) + if err != nil { + return false, err + } + ikOpts, err := trait.NewSpecTraitsOptionsForIntegrationKit(i2) + if err != nil { + return false, err + } + + return trait.Equals(ikOpts, itOpts), nil +} diff --git a/pkg/trait/trait.go b/pkg/trait/trait.go index 059b294f14..bfbd438524 100644 --- a/pkg/trait/trait.go +++ b/pkg/trait/trait.go @@ -85,8 +85,14 @@ func Apply(ctx context.Context, c client.Client, integration *v1.Integration, ki switch { case integration != nil: ilog.Debug("Applied traits to Integration", "integration", integration.Name, "namespace", integration.Namespace) + // The spec.traits may have been altered by other traits execution. We can save here the status for future + // reference + integration.Status.Traits = integration.Spec.Traits case kit != nil: ilog.Debug("Applied traits to Integration kit", "integration kit", kit.Name, "namespace", kit.Namespace) + // The spec.traits may have been altered by other traits execution We can save here the status for future + // reference + kit.Status.Traits = kit.Spec.Traits default: ilog.Debug("Applied traits") } diff --git a/pkg/trait/util.go b/pkg/trait/util.go index 59445247c8..d8b4d4acd1 100644 --- a/pkg/trait/util.go +++ b/pkg/trait/util.go @@ -349,25 +349,11 @@ func Equals(i1 Options, i2 Options) bool { // IntegrationsHaveSameTraits return if traits are the same. func IntegrationsHaveSameTraits(i1 *v1.Integration, i2 *v1.Integration) (bool, error) { - c1, err := NewTraitsOptionsForIntegration(i1) + c1, err := NewStatusTraitsOptionsForIntegration(i1) if err != nil { return false, err } - c2, err := NewTraitsOptionsForIntegration(i2) - if err != nil { - return false, err - } - - return Equals(c1, c2), nil -} - -// IntegrationKitsHaveSameTraits return if traits are the same. -func IntegrationKitsHaveSameTraits(i1 *v1.IntegrationKit, i2 *v1.IntegrationKit) (bool, error) { - c1, err := NewTraitsOptionsForIntegrationKit(i1) - if err != nil { - return false, err - } - c2, err := NewTraitsOptionsForIntegrationKit(i2) + c2, err := NewStatusTraitsOptionsForIntegration(i2) if err != nil { return false, err } @@ -408,7 +394,7 @@ func KameletBindingsHaveSameTraits(i1 *v1alpha1.KameletBinding, i2 *v1alpha1.Kam // The comparison is done for the subset of traits defines on the binding as during the trait processing, // some traits may be added to the Integration i.e. knative configuration in case of sink binding. func IntegrationAndPipeSameTraits(i1 *v1.Integration, i2 *v1.Pipe) (bool, error) { - itOpts, err := NewTraitsOptionsForIntegration(i1) + itOpts, err := NewStatusTraitsOptionsForIntegration(i1) if err != nil { return false, err } @@ -432,7 +418,7 @@ func IntegrationAndPipeSameTraits(i1 *v1.Integration, i2 *v1.Pipe) (bool, error) // some traits may be added to the Integration i.e. knative configuration in case of sink binding. // Deprecated. func IntegrationAndKameletBindingSameTraits(i1 *v1.Integration, i2 *v1alpha1.KameletBinding) (bool, error) { - itOpts, err := NewTraitsOptionsForIntegration(i1) + itOpts, err := NewStatusTraitsOptionsForIntegration(i1) if err != nil { return false, err } @@ -451,54 +437,43 @@ func IntegrationAndKameletBindingSameTraits(i1 *v1.Integration, i2 *v1alpha1.Kam return Equals(klbOpts, toCompare), nil } -// IntegrationAndKitHaveSameTraits return if traits are the same. -func IntegrationAndKitHaveSameTraits(i1 *v1.Integration, i2 *v1.IntegrationKit) (bool, error) { - itOpts, err := NewTraitsOptionsForIntegration(i1) - if err != nil { - return false, err - } - ikOpts, err := NewTraitsOptionsForIntegrationKit(i2) - if err != nil { - return false, err - } - - return Equals(ikOpts, itOpts), nil -} - -func NewTraitsOptionsForIntegration(i *v1.Integration) (Options, error) { - m1, err := ToTraitMap(i.Spec.Traits) - if err != nil { - return nil, err - } - - m2, err := FromAnnotations(&i.ObjectMeta) +func newTraitsOptions(opts Options, objectMeta *metav1.ObjectMeta) (Options, error) { + m2, err := FromAnnotations(objectMeta) if err != nil { return nil, err } for k, v := range m2 { - m1[k] = v + opts[k] = v } - return m1, nil + return opts, nil } -func NewTraitsOptionsForIntegrationKit(i *v1.IntegrationKit) (Options, error) { - m1, err := ToTraitMap(i.Spec.Traits) +func NewStatusTraitsOptionsForIntegration(i *v1.Integration) (Options, error) { + m1, err := ToTraitMap(i.Status.Traits) if err != nil { return nil, err } - m2, err := FromAnnotations(&i.ObjectMeta) + return newTraitsOptions(m1, &i.ObjectMeta) +} + +func newTraitsOptionsForIntegrationKit(i *v1.IntegrationKit, traits v1.IntegrationKitTraits) (Options, error) { + m1, err := ToTraitMap(traits) if err != nil { return nil, err } - for k, v := range m2 { - m1[k] = v - } + return newTraitsOptions(m1, &i.ObjectMeta) +} - return m1, nil +func NewStatusTraitsOptionsForIntegrationKit(i *v1.IntegrationKit) (Options, error) { + return newTraitsOptionsForIntegrationKit(i, i.Status.Traits) +} + +func NewSpecTraitsOptionsForIntegrationKit(i *v1.IntegrationKit) (Options, error) { + return newTraitsOptionsForIntegrationKit(i, i.Spec.Traits) } func NewTraitsOptionsForIntegrationPlatform(i *v1.IntegrationPlatform) (Options, error) { @@ -507,16 +482,7 @@ func NewTraitsOptionsForIntegrationPlatform(i *v1.IntegrationPlatform) (Options, return nil, err } - m2, err := FromAnnotations(&i.ObjectMeta) - if err != nil { - return nil, err - } - - for k, v := range m2 { - m1[k] = v - } - - return m1, nil + return newTraitsOptions(m1, &i.ObjectMeta) } func NewTraitsOptionsForPipe(i *v1.Pipe) (Options, error) { diff --git a/pkg/util/digest/digest.go b/pkg/util/digest/digest.go index 52a9a01ae0..0f17e12803 100644 --- a/pkg/util/digest/digest.go +++ b/pkg/util/digest/digest.go @@ -108,7 +108,7 @@ func ComputeForIntegration(integration *v1.Integration, configmaps []*corev1.Con // Calculation logic prior to 1.10.0 (the new Traits API schema) is maintained // in order to keep consistency in the digest calculated from the same set of // Trait configurations for backward compatibility. - traitsMap, err := toMap(integration.Spec.Traits) + traitsMap, err := toMap(integration.Status.Traits) if err != nil { return "", err }