You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2023/12/05 12:26:25 UTC

(camel-spring-boot) branch CAMEL-20190 created (now f2c21fe2bb7)

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a change to branch CAMEL-20190
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git


      at f2c21fe2bb7 CAMEL-20190 - Camel-Spring-Boot: Kubernetes Cronjob starter - test

This branch includes the following new commits:

     new 8e22353afe0 CAMEL-20190 - Camel-Spring-Boot: Kubernetes Cronjob starter
     new f2c21fe2bb7 CAMEL-20190 - Camel-Spring-Boot: Kubernetes Cronjob starter - test

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(camel-spring-boot) 02/02: CAMEL-20190 - Camel-Spring-Boot: Kubernetes Cronjob starter - test

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch CAMEL-20190
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git

commit f2c21fe2bb746a0fc9996f229248fd693d498128
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Dec 5 13:26:09 2023 +0100

    CAMEL-20190 - Camel-Spring-Boot: Kubernetes Cronjob starter - test
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../test/java/org/apache/camel/itest/springboot/CamelKubernetesTest.java | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelKubernetesTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelKubernetesTest.java
index a7f2d883431..025cbc5460c 100644
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelKubernetesTest.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelKubernetesTest.java
@@ -57,6 +57,7 @@ public class CamelKubernetesTest extends AbstractSpringBootTestSupport {
         this.runComponentTest(createTestConfig(), "kubernetes-services");
         this.runComponentTest(createTestConfig(), "openshift-builds");
         this.runComponentTest(createTestConfig(), "openshift-build-configs");
+        this.runComponentTest(createTestConfig(), "kubernetes-cronjob");
 
         this.runModuleUnitTestsIfEnabled(config);
     }


(camel-spring-boot) 01/02: CAMEL-20190 - Camel-Spring-Boot: Kubernetes Cronjob starter

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch CAMEL-20190
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git

commit 8e22353afe08e081b5f57c5dda0894afde07ffff
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Dec 5 13:24:38 2023 +0100

    CAMEL-20190 - Camel-Spring-Boot: Kubernetes Cronjob starter
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../camel/springboot/catalog/components.properties |  1 +
 .../catalog/components/kubernetes-cronjob.json     | 59 +++++++++++++++
 .../src/main/docs/kubernetes.json                  | 42 +++++++++++
 ...ubernetesCronJobComponentAutoConfiguration.java | 77 +++++++++++++++++++
 .../KubernetesCronJobComponentConfiguration.java   | 87 ++++++++++++++++++++++
 .../KubernetesCronJobComponentConverter.java       | 63 ++++++++++++++++
 ...rk.boot.autoconfigure.AutoConfiguration.imports |  4 +-
 7 files changed, 332 insertions(+), 1 deletion(-)

diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
index f0d4ac7d006..3a336cfa068 100644
--- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
@@ -184,6 +184,7 @@ kafka
 kamelet
 knative
 kubernetes-config-maps
+kubernetes-cronjob
 kubernetes-custom-resources
 kubernetes-deployments
 kubernetes-events
diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/kubernetes-cronjob.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/kubernetes-cronjob.json
new file mode 100644
index 00000000000..5cfe96fa08c
--- /dev/null
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/kubernetes-cronjob.json
@@ -0,0 +1,59 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "kubernetes-cronjob",
+    "title": "Kubernetes Cronjob",
+    "description": "Perform operations on Kubernetes CronJob.",
+    "deprecated": false,
+    "firstVersion": "4.3.0",
+    "label": "container,cloud",
+    "javaType": "org.apache.camel.component.kubernetes.cronjob.KubernetesCronJobComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel.springboot",
+    "artifactId": "camel-kubernetes-starter",
+    "version": "4.3.0-SNAPSHOT",
+    "scheme": "kubernetes-cronjob",
+    "extendsScheme": "",
+    "syntax": "kubernetes-cronjob:masterUrl",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": true,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "kubernetesClient": { "index": 0, "kind": "property", "displayName": "Kubernetes Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "io.fabric8.kubernetes.client.KubernetesClient", "deprecated": false, "autowired": true, "secret": false, "description": "To use an existing kubernetes client." },
+    "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...]
+    "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching t [...]
+  },
+  "headers": {
+    "CamelKubernetesOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Producer operation", "constantName": "org.apache.camel.component.kubernetes.KubernetesConstants#KUBERNETES_OPERATION" },
+    "CamelKubernetesCronJobLabels": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Map<String, String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Cronjob labels.", "constantName": "org.apache.camel.component.kubernetes.KubernetesConstants#KUBERNETES_CRON_JOB_LABELS" },
+    "CamelKubernetesCronJobName": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Cronjob name.", "constantName": "org.apache.camel.component.kubernetes.KubernetesConstants#KUBERNETES_CRON_JOB_NAME" },
+    "CamelKubernetesCronJobSpec": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "io.fabric8.kubernetes.api.model.batch.v1.CronJobSpec", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The spec for a Job.", "constantName": "org.apache.camel.component.kubernetes.KubernetesConstants#KUBERNETES_CRON_JOB_SPEC" }
+  },
+  "properties": {
+    "masterUrl": { "index": 0, "kind": "path", "displayName": "Master Url", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "Kubernetes Master url" },
+    "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The Kubernetes API Version to use" },
+    "dnsDomain": { "index": 2, "kind": "parameter", "displayName": "Dns Domain", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The dns domain, used for ServiceCall EIP" },
+    "kubernetesClient": { "index": 3, "kind": "parameter", "displayName": "Kubernetes Client", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "io.fabric8.kubernetes.client.KubernetesClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "Default KubernetesClient to use if provided" },
+    "namespace": { "index": 4, "kind": "parameter", "displayName": "Namespace", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The namespace" },
+    "operation": { "index": 5, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "Producer operation to do on Kubernetes" },
+    "portName": { "index": 6, "kind": "parameter", "displayName": "Port Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The port name, used for ServiceCall EIP" },
+    "portProtocol": { "index": 7, "kind": "parameter", "displayName": "Port Protocol", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "tcp", "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The port protocol, used for ServiceCall EIP" },
+    "lazyStartProducer": { "index": 8, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produc [...]
+    "connectionTimeout": { "index": 9, "kind": "parameter", "displayName": "Connection Timeout", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "Connection timeout in milliseconds to use when making requests to the Kubernetes A [...]
+    "caCertData": { "index": 10, "kind": "parameter", "displayName": "Ca Cert Data", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The CA Cert Data" },
+    "caCertFile": { "index": 11, "kind": "parameter", "displayName": "Ca Cert File", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The CA Cert File" },
+    "clientCertData": { "index": 12, "kind": "parameter", "displayName": "Client Cert Data", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The Client Cert Data" },
+    "clientCertFile": { "index": 13, "kind": "parameter", "displayName": "Client Cert File", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The Client Cert File" },
+    "clientKeyAlgo": { "index": 14, "kind": "parameter", "displayName": "Client Key Algo", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The Key Algorithm used by the client" },
+    "clientKeyData": { "index": 15, "kind": "parameter", "displayName": "Client Key Data", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The Client Key data" },
+    "clientKeyFile": { "index": 16, "kind": "parameter", "displayName": "Client Key File", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The Client Key file" },
+    "clientKeyPassphrase": { "index": 17, "kind": "parameter", "displayName": "Client Key Passphrase", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The Client Key Passphrase" },
+    "oauthToken": { "index": 18, "kind": "parameter", "displayName": "Oauth Token", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "The Auth Token" },
+    "password": { "index": 19, "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "Password to connect to Kubernetes" },
+    "trustCerts": { "index": 20, "kind": "parameter", "displayName": "Trust Certs", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "Define if the certs we used are trusted anyway or not" },
+    "username": { "index": 21, "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.kubernetes.KubernetesConfiguration", "configurationField": "configuration", "description": "Username to connect to Kubernetes" }
+  }
+}
diff --git a/components-starter/camel-kubernetes-starter/src/main/docs/kubernetes.json b/components-starter/camel-kubernetes-starter/src/main/docs/kubernetes.json
index 662e01ca651..996fe0ff38e 100644
--- a/components-starter/camel-kubernetes-starter/src/main/docs/kubernetes.json
+++ b/components-starter/camel-kubernetes-starter/src/main/docs/kubernetes.json
@@ -16,6 +16,17 @@
       "sourceType": "org.apache.camel.component.kubernetes.config_maps.springboot.KubernetesConfigMapsComponentConfiguration",
       "sourceMethod": "getCustomizer()"
     },
+    {
+      "name": "camel.component.kubernetes-cronjob",
+      "type": "org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentConfiguration",
+      "sourceType": "org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentConfiguration"
+    },
+    {
+      "name": "camel.component.kubernetes-cronjob.customizer",
+      "type": "org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon$CustomizerProperties",
+      "sourceType": "org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentConfiguration",
+      "sourceMethod": "getCustomizer()"
+    },
     {
       "name": "camel.component.kubernetes-custom-resources",
       "type": "org.apache.camel.component.kubernetes.customresources.springboot.KubernetesCustomResourcesComponentConfiguration",
@@ -339,6 +350,37 @@
       "sourceType": "org.apache.camel.component.kubernetes.config_maps.springboot.KubernetesConfigMapsComponentConfiguration",
       "defaultValue": false
     },
+    {
+      "name": "camel.component.kubernetes-cronjob.autowired-enabled",
+      "type": "java.lang.Boolean",
+      "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc.",
+      "sourceType": "org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentConfiguration",
+      "defaultValue": true
+    },
+    {
+      "name": "camel.component.kubernetes-cronjob.customizer.enabled",
+      "type": "java.lang.Boolean",
+      "sourceType": "org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon$CustomizerProperties"
+    },
+    {
+      "name": "camel.component.kubernetes-cronjob.enabled",
+      "type": "java.lang.Boolean",
+      "description": "Whether to enable auto configuration of the kubernetes-cronjob component. This is enabled by default.",
+      "sourceType": "org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentConfiguration"
+    },
+    {
+      "name": "camel.component.kubernetes-cronjob.kubernetes-client",
+      "type": "io.fabric8.kubernetes.client.KubernetesClient",
+      "description": "To use an existing kubernetes client. The option is a io.fabric8.kubernetes.client.KubernetesClient type.",
+      "sourceType": "org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentConfiguration"
+    },
+    {
+      "name": "camel.component.kubernetes-cronjob.lazy-start-producer",
+      "type": "java.lang.Boolean",
+      "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the [...]
+      "sourceType": "org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentConfiguration",
+      "defaultValue": false
+    },
     {
       "name": "camel.component.kubernetes-custom-resources.autowired-enabled",
       "type": "java.lang.Boolean",
diff --git a/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentAutoConfiguration.java b/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentAutoConfiguration.java
new file mode 100644
index 00000000000..288cf6e5584
--- /dev/null
+++ b/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentAutoConfiguration.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.kubernetes.cronjob.springboot;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Component;
+import org.apache.camel.component.kubernetes.cronjob.KubernetesCronJobComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
+import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
+import org.apache.camel.spring.boot.util.ConditionalOnHierarchicalProperties;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Configuration(proxyBeanMethods = false)
+@Conditional(ConditionalOnCamelContextAndAutoConfigurationBeans.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,KubernetesCronJobComponentConfiguration.class})
+@ConditionalOnHierarchicalProperties({"camel.component", "camel.component.kubernetes-cronjob"})
+@AutoConfigureAfter({CamelAutoConfiguration.class, KubernetesCronJobComponentConverter.class})
+public class KubernetesCronJobComponentAutoConfiguration {
+
+    @Autowired
+    private ApplicationContext applicationContext;
+    private final CamelContext camelContext;
+    @Autowired
+    private KubernetesCronJobComponentConfiguration configuration;
+
+    public KubernetesCronJobComponentAutoConfiguration(
+            org.apache.camel.CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    @Lazy
+    @Bean
+    public ComponentCustomizer configureKubernetesCronJobComponent() {
+        return new ComponentCustomizer() {
+            @Override
+            public void configure(String name, Component target) {
+                CamelPropertiesHelper.copyProperties(camelContext, configuration, target);
+            }
+            @Override
+            public boolean isEnabled(String name, Component target) {
+                return HierarchicalPropertiesEvaluator.evaluate(
+                        applicationContext,
+                        "camel.component.customizer",
+                        "camel.component.kubernetes-cronjob.customizer")
+                    && target instanceof KubernetesCronJobComponent;
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentConfiguration.java b/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentConfiguration.java
new file mode 100644
index 00000000000..81dc40c1260
--- /dev/null
+++ b/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentConfiguration.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.kubernetes.cronjob.springboot;
+
+import io.fabric8.kubernetes.client.KubernetesClient;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * Perform operations on Kubernetes CronJob.
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@ConfigurationProperties(prefix = "camel.component.kubernetes-cronjob")
+public class KubernetesCronJobComponentConfiguration
+        extends
+            ComponentConfigurationPropertiesCommon {
+
+    /**
+     * Whether to enable auto configuration of the kubernetes-cronjob component.
+     * This is enabled by default.
+     */
+    private Boolean enabled;
+    /**
+     * To use an existing kubernetes client. The option is a
+     * io.fabric8.kubernetes.client.KubernetesClient type.
+     */
+    private KubernetesClient kubernetesClient;
+    /**
+     * Whether the producer should be started lazy (on the first message). By
+     * starting lazy you can use this to allow CamelContext and routes to
+     * startup in situations where a producer may otherwise fail during starting
+     * and cause the route to fail being started. By deferring this startup to
+     * be lazy then the startup failure can be handled during routing messages
+     * via Camel's routing error handlers. Beware that when the first message is
+     * processed then creating and starting the producer may take a little time
+     * and prolong the total processing time of the processing.
+     */
+    private Boolean lazyStartProducer = false;
+    /**
+     * Whether autowiring is enabled. This is used for automatic autowiring
+     * options (the option must be marked as autowired) by looking up in the
+     * registry to find if there is a single instance of matching type, which
+     * then gets configured on the component. This can be used for automatic
+     * configuring JDBC data sources, JMS connection factories, AWS Clients,
+     * etc.
+     */
+    private Boolean autowiredEnabled = true;
+
+    public KubernetesClient getKubernetesClient() {
+        return kubernetesClient;
+    }
+
+    public void setKubernetesClient(KubernetesClient kubernetesClient) {
+        this.kubernetesClient = kubernetesClient;
+    }
+
+    public Boolean getLazyStartProducer() {
+        return lazyStartProducer;
+    }
+
+    public void setLazyStartProducer(Boolean lazyStartProducer) {
+        this.lazyStartProducer = lazyStartProducer;
+    }
+
+    public Boolean getAutowiredEnabled() {
+        return autowiredEnabled;
+    }
+
+    public void setAutowiredEnabled(Boolean autowiredEnabled) {
+        this.autowiredEnabled = autowiredEnabled;
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentConverter.java b/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentConverter.java
new file mode 100644
index 00000000000..82f08a3ddbe
--- /dev/null
+++ b/components-starter/camel-kubernetes-starter/src/main/java/org/apache/camel/component/kubernetes/cronjob/springboot/KubernetesCronJobComponentConverter.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.kubernetes.cronjob.springboot;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.core.convert.converter.GenericConverter;
+import org.springframework.stereotype.Component;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Configuration(proxyBeanMethods = false)
+@ConfigurationPropertiesBinding
+@Component
+public class KubernetesCronJobComponentConverter implements GenericConverter {
+
+    @Autowired
+    private ApplicationContext applicationContext;
+
+    public Set<ConvertiblePair> getConvertibleTypes() {
+        Set<ConvertiblePair> answer = new LinkedHashSet<>();
+        answer.add(new ConvertiblePair(String.class, io.fabric8.kubernetes.client.KubernetesClient.class));
+        return answer;
+    }
+
+    public Object convert(
+            Object source,
+            TypeDescriptor sourceType,
+            TypeDescriptor targetType) {
+        if (source == null) {
+            return null;
+        }
+        String ref = source.toString();
+        if (!ref.startsWith("#")) {
+            return null;
+        }
+        ref = ref.startsWith("#bean:") ? ref.substring(6) : ref.substring(1);
+        switch (targetType.getName()) {
+            case "io.fabric8.kubernetes.client.KubernetesClient": return applicationContext.getBean(ref, io.fabric8.kubernetes.client.KubernetesClient.class);
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-kubernetes-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/components-starter/camel-kubernetes-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 1d3f91a85b6..375980feed4 100644
--- a/components-starter/camel-kubernetes-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/components-starter/camel-kubernetes-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -55,4 +55,6 @@ org.apache.camel.component.kubernetes.service_accounts.springboot.KubernetesServ
 org.apache.camel.component.kubernetes.service_accounts.springboot.KubernetesServiceAccountsComponentAutoConfiguration
 org.apache.camel.component.kubernetes.springboot.cloud.KubernetesServiceDiscoveryAutoConfiguration
 org.apache.camel.component.kubernetes.springboot.cluster.KubernetesClusterServiceAutoConfiguration
-org.apache.camel.component.kubernetes.deployments.springboot.KubernetesDeploymentsComponentAutoConfiguration
\ No newline at end of file
+org.apache.camel.component.kubernetes.deployments.springboot.KubernetesDeploymentsComponentAutoConfiguration
+org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentConverter
+org.apache.camel.component.kubernetes.cronjob.springboot.KubernetesCronJobComponentAutoConfiguration