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 2024/11/14 15:54:05 UTC

(camel) branch CAMEL-21166 created (now ad7764edd2a)

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

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


      at ad7764edd2a CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update

This branch includes the following new commits:

     new e2ada283adb CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update
     new 019b8d23a08 CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update
     new ad7764edd2a CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update

The 3 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) 03/03: CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update

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

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

commit ad7764edd2adf405bd3b087d5420aaa8af395bad
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 14 16:53:49 2024 +0100

    CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../kubernetes/config_maps/vault/ConfigmapsReloadTriggerTask.java     | 4 +++-
 .../java/org/apache/camel/main/download/ExportPeriodTaskResolver.java | 2 +-
 .../java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java   | 2 +-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/vault/ConfigmapsReloadTriggerTask.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/vault/ConfigmapsReloadTriggerTask.java
index 370383e2788..05437ba5711 100644
--- a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/vault/ConfigmapsReloadTriggerTask.java
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/vault/ConfigmapsReloadTriggerTask.java
@@ -85,13 +85,14 @@ public class ConfigmapsReloadTriggerTask extends ServiceSupport implements Camel
     @Override
     protected void doStart() throws Exception {
         super.doStart();
+        System.err.println("Starting!");
 
         // auto-detect secrets in-use
         PropertiesComponent pc = camelContext.getPropertiesComponent();
         PropertiesFunction pf = pc.getPropertiesFunction("configmap");
         if (pf instanceof ConfigMapPropertiesFunction) {
             propertiesFunction = (ConfigMapPropertiesFunction) pf;
-            LOG.debug("Auto-detecting configmaps from properties-function: {}", pf.getName());
+            LOG.info("Auto-detecting configmaps from properties-function: {}", pf.getName());
         }
         // specific secrets
         configmaps = camelContext.getVaultConfiguration().kubernetesConfigmaps().getConfigmaps();
@@ -118,6 +119,7 @@ public class ConfigmapsReloadTriggerTask extends ServiceSupport implements Camel
 
     @Override
     public void run() {
+        System.err.println("RUNNING!");
         startingTime = Instant.now();
         final CountDownLatch isWatchClosed = new CountDownLatch(1);
         Watch watch = kubernetesClient.configMaps().inNamespace(kubernetesClient.getNamespace()).watch(new Watcher<>() {
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/ExportPeriodTaskResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/ExportPeriodTaskResolver.java
index 5e083593875..8fbc2e8ec93 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/ExportPeriodTaskResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/ExportPeriodTaskResolver.java
@@ -46,6 +46,6 @@ public class ExportPeriodTaskResolver extends DefaultPeriodTaskResolver {
     private boolean skip(String key) {
         // skip all vault refresh during export as they will attempt to connect to remote system
         return "aws-secret-refresh".equals(key) || "gcp-secret-refresh".equals(key) || "azure-secret-refresh".equals(key)
-                || "kubernetes-secret-refresh".equals(key);
+                || "kubernetes-secret-refresh".equals(key) || "kubernetes-configmaps-refresh".equals(key);
     }
 }
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
index 3a330db9be7..3c94d764940 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
@@ -208,7 +208,7 @@ public class PrepareCamelMainMojo extends AbstractGeneratorMojo {
                 } else if (file.getName().contains("KubernetesVault")) {
                     prefix = "camel.vault.kubernetes.";
                 } else if (file.getName().contains("KubernetesConfigMapVault")) {
-                    prefix = "camel.vault.kubernetes.cm.";
+                    prefix = "camel.vault.kubernetescm.";
                 } else if (file.getName().contains("HashicorpVault")) {
                     prefix = "camel.vault.hashicorp.";
                 } else if (file.getName().contains("Health")) {


(camel) 01/03: CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update

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

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

commit e2ada283adbd28e6a0473d284bbddafbf6755b2d
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 14 10:29:30 2024 +0100

    CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../main/camel-main-configuration-metadata.json    |  4 +-
 .../KubernetesConfigMapVaultConfiguration.java     | 52 ++++++++++++++++
 .../org/apache/camel/vault/VaultConfiguration.java | 19 ++++++
 .../main/AwsVaultConfigurationConfigurer.java      |  6 ++
 .../AwsVaultConfigurationPropertiesConfigurer.java |  7 +++
 .../main/AzureVaultConfigurationConfigurer.java    |  6 ++
 ...zureVaultConfigurationPropertiesConfigurer.java |  7 +++
 .../main/GcpVaultConfigurationConfigurer.java      |  6 ++
 .../GcpVaultConfigurationPropertiesConfigurer.java |  7 +++
 .../HashicorpVaultConfigurationConfigurer.java     |  6 ++
 ...corpVaultConfigurationPropertiesConfigurer.java |  7 +++
 ...apsVaultConfigurationPropertiesConfigurer.java} | 25 +++++---
 ...etesVaultConfigurationPropertiesConfigurer.java |  7 +++
 .../camel-main-configuration-metadata.json         |  4 +-
 ...ubernetesConfigmapsVaultConfigurationProperties |  2 +
 core/camel-main/src/main/docs/main.adoc            |  4 +-
 .../org/apache/camel/main/BaseMainSupport.java     |  3 +
 .../camel/main/DefaultConfigurationConfigurer.java |  6 ++
 ...etesConfigmapsVaultConfigurationProperties.java | 69 ++++++++++++++++++++++
 .../camel/main/VaultConfigurationProperties.java   | 12 ++++
 .../java/org/apache/camel/main/MainVaultTest.java  | 41 +++++++++++++
 .../maven/packaging/PrepareCamelMainMojo.java      | 13 ++++
 22 files changed, 301 insertions(+), 12 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
index e3ebb429b24..885bac2e54a 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
@@ -371,6 +371,8 @@
     { "name": "camel.vault.hashicorp.scheme", "description": "Scheme to access hashicorp vault", "sourceType": "org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.token", "description": "Token to access hashicorp vault", "sourceType": "org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetes.refreshEnabled", "description": "Whether to automatically reload Camel upon secrets being updated in Kubernetes Cluster.", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
-    { "name": "camel.vault.kubernetes.secrets", "description": "Specify the secret names (or pattern) to check for updates. Multiple secrets can be separated by comma.", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration", "type": "string", "javaType": "java.lang.String" }
+    { "name": "camel.vault.kubernetes.secrets", "description": "Specify the secret names (or pattern) to check for updates. Multiple secrets can be separated by comma.", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration", "type": "string", "javaType": "java.lang.String" },
+    { "name": "camel.vault.kubernetescm.configmaps", "description": "Specify the configmap names (or pattern) to check for updates. Multiple configmaps can be separated by comma.", "sourceType": "org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": "string", "javaType": "java.lang.String" },
+    { "name": "camel.vault.kubernetescm.refreshEnabled", "description": "Whether to automatically reload Camel upon configmaps being updated in Kubernetes Cluster.", "sourceType": "org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }
   ]
 }
diff --git a/core/camel-api/src/main/java/org/apache/camel/vault/KubernetesConfigMapVaultConfiguration.java b/core/camel-api/src/main/java/org/apache/camel/vault/KubernetesConfigMapVaultConfiguration.java
new file mode 100644
index 00000000000..fb89a7418f4
--- /dev/null
+++ b/core/camel-api/src/main/java/org/apache/camel/vault/KubernetesConfigMapVaultConfiguration.java
@@ -0,0 +1,52 @@
+/*
+ * 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.vault;
+
+import org.apache.camel.spi.Metadata;
+
+/**
+ * Configuration for access to Kubernetes Confimaps
+ */
+public class KubernetesConfigMapVaultConfiguration extends VaultConfiguration {
+
+    @Metadata
+    private boolean refreshEnabled;
+    @Metadata
+    private String configmaps;
+
+    public boolean isRefreshEnabled() {
+        return refreshEnabled;
+    }
+
+    /**
+     * Whether to automatically reload Camel upon configmaps being updated in Kubernetes Cluster.
+     */
+    public void setRefreshEnabled(boolean refreshEnabled) {
+        this.refreshEnabled = refreshEnabled;
+    }
+
+    public String getConfigmaps() {
+        return configmaps;
+    }
+
+    /**
+     * Specify the configmap names (or pattern) to check for updates. Multiple configmaps can be separated by comma.
+     */
+    public void setConfigmaps(String configmaps) {
+        this.configmaps = configmaps;
+    }
+}
diff --git a/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java b/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java
index 9a111e82baf..c34bae04a55 100644
--- a/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java
+++ b/core/camel-api/src/main/java/org/apache/camel/vault/VaultConfiguration.java
@@ -26,6 +26,7 @@ public class VaultConfiguration {
     private AzureVaultConfiguration azure;
     private HashicorpVaultConfiguration hashicorp;
     private KubernetesVaultConfiguration kubernetes;
+    private KubernetesConfigMapVaultConfiguration kubernetesConfigmaps;
 
     /**
      * AWS Vault Configuration
@@ -77,6 +78,16 @@ public class VaultConfiguration {
         return kubernetes;
     }
 
+    /**
+     * Kubernetes Configmaps Vault Configuration
+     */
+    public KubernetesConfigMapVaultConfiguration kubernetesConfigmaps() {
+        if (kubernetesConfigmaps == null) {
+            kubernetesConfigmaps = new KubernetesConfigMapVaultConfiguration();
+        }
+        return kubernetesConfigmaps;
+    }
+
     public AwsVaultConfiguration getAwsVaultConfiguration() {
         return aws;
     }
@@ -116,4 +127,12 @@ public class VaultConfiguration {
     public void setKubernetesVaultConfiguration(KubernetesVaultConfiguration kubernetes) {
         this.kubernetes = kubernetes;
     }
+
+    public KubernetesConfigMapVaultConfiguration getKubernetesConfigMapVaultConfiguration() {
+        return kubernetesConfigmaps;
+    }
+
+    public void setKubernetesConfigMapVaultConfiguration(KubernetesConfigMapVaultConfiguration kubernetesConfigmaps) {
+        this.kubernetesConfigmaps = kubernetesConfigmaps;
+    }
 }
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationConfigurer.java
index 3bd64e971d6..a75a2715585 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationConfigurer.java
@@ -35,6 +35,8 @@ public class AwsVaultConfigurationConfigurer extends org.apache.camel.support.co
         case "gcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "overrideendpoint":
@@ -76,6 +78,8 @@ public class AwsVaultConfigurationConfigurer extends org.apache.camel.support.co
         case "gcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "overrideendpoint":
@@ -118,6 +122,8 @@ public class AwsVaultConfigurationConfigurer extends org.apache.camel.support.co
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "overrideendpoint":
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
index 82b5eb73123..c1119628250 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
@@ -28,6 +28,7 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel.
         map.put("DefaultCredentialsProvider", boolean.class);
         map.put("GcpVaultConfiguration", org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("KubernetesConfigMapVaultConfiguration", org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("OverrideEndpoint", boolean.class);
         map.put("ProfileCredentialsProvider", boolean.class);
@@ -60,6 +61,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel.
         case "gcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "overrideendpoint":
@@ -110,6 +113,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel.
         case "gcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "overrideendpoint":
@@ -152,6 +157,8 @@ public class AwsVaultConfigurationPropertiesConfigurer extends org.apache.camel.
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "overrideendpoint":
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationConfigurer.java
index 44d055274cd..ea9daf5791e 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationConfigurer.java
@@ -45,6 +45,8 @@ public class AzureVaultConfigurationConfigurer extends org.apache.camel.support.
         case "gcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "refreshenabled":
@@ -85,6 +87,8 @@ public class AzureVaultConfigurationConfigurer extends org.apache.camel.support.
         case "gcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "refreshenabled":
@@ -126,6 +130,8 @@ public class AzureVaultConfigurationConfigurer extends org.apache.camel.support.
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "refreshenabled":
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
index 2a1c27fffc6..7c1cd4a8473 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
@@ -33,6 +33,7 @@ public class AzureVaultConfigurationPropertiesConfigurer extends org.apache.came
         map.put("EventhubConnectionString", java.lang.String.class);
         map.put("GcpVaultConfiguration", org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("KubernetesConfigMapVaultConfiguration", org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("RefreshEnabled", boolean.class);
         map.put("RefreshPeriod", long.class);
@@ -69,6 +70,8 @@ public class AzureVaultConfigurationPropertiesConfigurer extends org.apache.came
         case "gcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "refreshenabled":
@@ -118,6 +121,8 @@ public class AzureVaultConfigurationPropertiesConfigurer extends org.apache.came
         case "gcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "refreshenabled":
@@ -159,6 +164,8 @@ public class AzureVaultConfigurationPropertiesConfigurer extends org.apache.came
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "refreshenabled":
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationConfigurer.java
index 5da7d981e03..8608a4157df 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationConfigurer.java
@@ -31,6 +31,8 @@ public class GcpVaultConfigurationConfigurer extends org.apache.camel.support.co
         case "gcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "projectid":
@@ -61,6 +63,8 @@ public class GcpVaultConfigurationConfigurer extends org.apache.camel.support.co
         case "gcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "projectid":
@@ -92,6 +96,8 @@ public class GcpVaultConfigurationConfigurer extends org.apache.camel.support.co
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "projectid":
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
index 5084f68d9c4..ba60380f0cb 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
@@ -26,6 +26,7 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel.
         map.put("AzureVaultConfiguration", org.apache.camel.vault.AzureVaultConfiguration.class);
         map.put("GcpVaultConfiguration", org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("KubernetesConfigMapVaultConfiguration", org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("ProjectId", java.lang.String.class);
         map.put("RefreshEnabled", boolean.class);
@@ -50,6 +51,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel.
         case "gcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "projectid":
@@ -89,6 +92,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel.
         case "gcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "projectid":
@@ -120,6 +125,8 @@ public class GcpVaultConfigurationPropertiesConfigurer extends org.apache.camel.
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "projectid":
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
index 7a5b962c37f..92ff13367a3 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationConfigurer.java
@@ -32,6 +32,8 @@ public class HashicorpVaultConfigurationConfigurer extends org.apache.camel.supp
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
         case "host": target.setHost(property(camelContext, java.lang.String.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "port": target.setPort(property(camelContext, java.lang.String.class, value)); return true;
@@ -53,6 +55,8 @@ public class HashicorpVaultConfigurationConfigurer extends org.apache.camel.supp
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
         case "host": return java.lang.String.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "port": return java.lang.String.class;
@@ -75,6 +79,8 @@ public class HashicorpVaultConfigurationConfigurer extends org.apache.camel.supp
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
         case "host": return target.getHost();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "port": return target.getPort();
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
index a26ad5bef73..95ca9d537f2 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/HashicorpVaultConfigurationPropertiesConfigurer.java
@@ -27,6 +27,7 @@ public class HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
         map.put("GcpVaultConfiguration", org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", org.apache.camel.vault.HashicorpVaultConfiguration.class);
         map.put("Host", java.lang.String.class);
+        map.put("KubernetesConfigMapVaultConfiguration", org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("Port", java.lang.String.class);
         map.put("Scheme", java.lang.String.class);
@@ -48,6 +49,8 @@ public class HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
         case "host": target.setHost(property(camelContext, java.lang.String.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "port": target.setPort(property(camelContext, java.lang.String.class, value)); return true;
@@ -78,6 +81,8 @@ public class HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
         case "host": return java.lang.String.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "port": return java.lang.String.class;
@@ -100,6 +105,8 @@ public class HashicorpVaultConfigurationPropertiesConfigurer extends org.apache.
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
         case "host": return target.getHost();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "port": return target.getPort();
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationPropertiesConfigurer.java
similarity index 74%
copy from core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
copy to core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationPropertiesConfigurer.java
index 7c22dba6433..790cac8b53a 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationPropertiesConfigurer.java
@@ -10,46 +10,49 @@ import org.apache.camel.spi.PropertyConfigurerGetter;
 import org.apache.camel.spi.ConfigurerStrategy;
 import org.apache.camel.spi.GeneratedPropertyConfigurer;
 import org.apache.camel.util.CaseInsensitiveMap;
-import org.apache.camel.main.KubernetesVaultConfigurationProperties;
+import org.apache.camel.main.KubernetesConfigmapsVaultConfigurationProperties;
 
 /**
  * Generated by camel build tools - do NOT edit this file!
  */
 @Generated("org.apache.camel.maven.packaging.GenerateConfigurerMojo")
 @SuppressWarnings("unchecked")
-public class KubernetesVaultConfigurationPropertiesConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+public class KubernetesConfigmapsVaultConfigurationPropertiesConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
 
     private static final Map<String, Object> ALL_OPTIONS;
     static {
         Map<String, Object> map = new CaseInsensitiveMap();
         map.put("AwsVaultConfiguration", org.apache.camel.vault.AwsVaultConfiguration.class);
         map.put("AzureVaultConfiguration", org.apache.camel.vault.AzureVaultConfiguration.class);
+        map.put("Configmaps", java.lang.String.class);
         map.put("GcpVaultConfiguration", org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("KubernetesConfigMapVaultConfiguration", org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("RefreshEnabled", boolean.class);
-        map.put("Secrets", java.lang.String.class);
         ALL_OPTIONS = map;
-        ConfigurerStrategy.addBootstrapConfigurerClearer(KubernetesVaultConfigurationPropertiesConfigurer::clearBootstrapConfigurers);
+        ConfigurerStrategy.addBootstrapConfigurerClearer(KubernetesConfigmapsVaultConfigurationPropertiesConfigurer::clearBootstrapConfigurers);
     }
 
     @Override
     public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
-        org.apache.camel.main.KubernetesVaultConfigurationProperties target = (org.apache.camel.main.KubernetesVaultConfigurationProperties) obj;
+        org.apache.camel.main.KubernetesConfigmapsVaultConfigurationProperties target = (org.apache.camel.main.KubernetesConfigmapsVaultConfigurationProperties) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "awsVaultConfiguration": target.setAwsVaultConfiguration(property(camelContext, org.apache.camel.vault.AwsVaultConfiguration.class, value)); return true;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": target.setAzureVaultConfiguration(property(camelContext, org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
+        case "configmaps": target.setConfigmaps(property(camelContext, java.lang.String.class, value)); return true;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "refreshenabled":
         case "refreshEnabled": target.setRefreshEnabled(property(camelContext, boolean.class, value)); return true;
-        case "secrets": target.setSecrets(property(camelContext, java.lang.String.class, value)); return true;
         default: return false;
         }
     }
@@ -70,36 +73,40 @@ public class KubernetesVaultConfigurationPropertiesConfigurer extends org.apache
         case "awsVaultConfiguration": return org.apache.camel.vault.AwsVaultConfiguration.class;
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return org.apache.camel.vault.AzureVaultConfiguration.class;
+        case "configmaps": return java.lang.String.class;
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "refreshenabled":
         case "refreshEnabled": return boolean.class;
-        case "secrets": return java.lang.String.class;
         default: return null;
         }
     }
 
     @Override
     public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
-        org.apache.camel.main.KubernetesVaultConfigurationProperties target = (org.apache.camel.main.KubernetesVaultConfigurationProperties) obj;
+        org.apache.camel.main.KubernetesConfigmapsVaultConfigurationProperties target = (org.apache.camel.main.KubernetesConfigmapsVaultConfigurationProperties) obj;
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "awsVaultConfiguration": return target.getAwsVaultConfiguration();
         case "azurevaultconfiguration":
         case "azureVaultConfiguration": return target.getAzureVaultConfiguration();
+        case "configmaps": return target.getConfigmaps();
         case "gcpvaultconfiguration":
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "refreshenabled":
         case "refreshEnabled": return target.isRefreshEnabled();
-        case "secrets": return target.getSecrets();
         default: return null;
         }
     }
diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
index 7c22dba6433..5733f1c41ff 100644
--- a/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
+++ b/core/camel-main/src/generated/java/org/apache/camel/main/KubernetesVaultConfigurationPropertiesConfigurer.java
@@ -26,6 +26,7 @@ public class KubernetesVaultConfigurationPropertiesConfigurer extends org.apache
         map.put("AzureVaultConfiguration", org.apache.camel.vault.AzureVaultConfiguration.class);
         map.put("GcpVaultConfiguration", org.apache.camel.vault.GcpVaultConfiguration.class);
         map.put("HashicorpVaultConfiguration", org.apache.camel.vault.HashicorpVaultConfiguration.class);
+        map.put("KubernetesConfigMapVaultConfiguration", org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class);
         map.put("KubernetesVaultConfiguration", org.apache.camel.vault.KubernetesVaultConfiguration.class);
         map.put("RefreshEnabled", boolean.class);
         map.put("Secrets", java.lang.String.class);
@@ -45,6 +46,8 @@ public class KubernetesVaultConfigurationPropertiesConfigurer extends org.apache
         case "gcpVaultConfiguration": target.setGcpVaultConfiguration(property(camelContext, org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": target.setHashicorpVaultConfiguration(property(camelContext, org.apache.camel.vault.HashicorpVaultConfiguration.class, value)); return true;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": target.setKubernetesConfigMapVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class, value)); return true;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": target.setKubernetesVaultConfiguration(property(camelContext, org.apache.camel.vault.KubernetesVaultConfiguration.class, value)); return true;
         case "refreshenabled":
@@ -74,6 +77,8 @@ public class KubernetesVaultConfigurationPropertiesConfigurer extends org.apache
         case "gcpVaultConfiguration": return org.apache.camel.vault.GcpVaultConfiguration.class;
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return org.apache.camel.vault.HashicorpVaultConfiguration.class;
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return org.apache.camel.vault.KubernetesConfigMapVaultConfiguration.class;
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return org.apache.camel.vault.KubernetesVaultConfiguration.class;
         case "refreshenabled":
@@ -95,6 +100,8 @@ public class KubernetesVaultConfigurationPropertiesConfigurer extends org.apache
         case "gcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "hashicorpvaultconfiguration":
         case "hashicorpVaultConfiguration": return target.getHashicorpVaultConfiguration();
+        case "kubernetesconfigmapvaultconfiguration":
+        case "kubernetesConfigMapVaultConfiguration": return target.getKubernetesConfigMapVaultConfiguration();
         case "kubernetesvaultconfiguration":
         case "kubernetesVaultConfiguration": return target.getKubernetesVaultConfiguration();
         case "refreshenabled":
diff --git a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index e3ebb429b24..885bac2e54a 100644
--- a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++ b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -371,6 +371,8 @@
     { "name": "camel.vault.hashicorp.scheme", "description": "Scheme to access hashicorp vault", "sourceType": "org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.vault.hashicorp.token", "description": "Token to access hashicorp vault", "sourceType": "org.apache.camel.vault.HashicorpVaultConfiguration", "type": "string", "javaType": "java.lang.String" },
     { "name": "camel.vault.kubernetes.refreshEnabled", "description": "Whether to automatically reload Camel upon secrets being updated in Kubernetes Cluster.", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration", "type": "boolean", "javaType": "boolean", "defaultValue": "false" },
-    { "name": "camel.vault.kubernetes.secrets", "description": "Specify the secret names (or pattern) to check for updates. Multiple secrets can be separated by comma.", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration", "type": "string", "javaType": "java.lang.String" }
+    { "name": "camel.vault.kubernetes.secrets", "description": "Specify the secret names (or pattern) to check for updates. Multiple secrets can be separated by comma.", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration", "type": "string", "javaType": "java.lang.String" },
+    { "name": "camel.vault.kubernetescm.configmaps", "description": "Specify the configmap names (or pattern) to check for updates. Multiple configmaps can be separated by comma.", "sourceType": "org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": "string", "javaType": "java.lang.String" },
+    { "name": "camel.vault.kubernetescm.refreshEnabled", "description": "Whether to automatically reload Camel upon configmaps being updated in Kubernetes Cluster.", "sourceType": "org.apache.camel.vault.KubernetesConfigMapVaultConfiguration", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }
   ]
 }
diff --git a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.KubernetesConfigmapsVaultConfigurationProperties b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.KubernetesConfigmapsVaultConfigurationProperties
new file mode 100644
index 00000000000..7ed85c91b4f
--- /dev/null
+++ b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.KubernetesConfigmapsVaultConfigurationProperties
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.main.KubernetesConfigmapsVaultConfigurationPropertiesConfigurer
diff --git a/core/camel-main/src/main/docs/main.adoc b/core/camel-main/src/main/docs/main.adoc
index 4dc2f4f3688..c998c397dc6 100644
--- a/core/camel-main/src/main/docs/main.adoc
+++ b/core/camel-main/src/main/docs/main.adoc
@@ -426,13 +426,15 @@ The camel.vault.azure supports 12 options, which are listed below.
 
 
 === Camel Kubernetes Vault configurations
-The camel.vault.kubernetes supports 2 options, which are listed below.
+The camel.vault.kubernetes supports 4 options, which are listed below.
 
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
 | *camel.vault.kubernetes.refresh{zwsp}Enabled* | Whether to automatically reload Camel upon secrets being updated in Kubernetes Cluster. | false | boolean
 | *camel.vault.kubernetes.secrets* | Specify the secret names (or pattern) to check for updates. Multiple secrets can be separated by comma. |  | String
+| *camel.vault.kubernetescm.configmaps* | Specify the configmap names (or pattern) to check for updates. Multiple configmaps can be separated by comma. |  | String
+| *camel.vault.kubernetescm.refresh{zwsp}Enabled* | Whether to automatically reload Camel upon configmaps being updated in Kubernetes Cluster. | false | boolean
 |===
 
 
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
index 109877699da..70f59079ef1 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/BaseMainSupport.java
@@ -1768,6 +1768,9 @@ public abstract class BaseMainSupport extends BaseService {
             if ("kubernetes".equalsIgnoreCase(name)) {
                 target = target.kubernetes();
             }
+            if ("kubernetescm".equalsIgnoreCase(name)) {
+                target = target.kubernetesConfigmaps();
+            }
             // configure all the properties on the vault at once (to ensure they are configured in right order)
             OrderedLocationProperties config = MainHelper.extractProperties(properties, name + ".");
             setPropertiesOnTarget(camelContext, target, config, "camel.vault." + name + ".", failIfNotSet, true,
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index fcafc96f3d9..fdd569b2c30 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -623,6 +623,12 @@ public final class DefaultConfigurationConfigurer {
             VaultConfiguration vault = camelContext.getVaultConfiguration();
             vault.setKubernetesVaultConfiguration(kubernetes);
         }
+        KubernetesConfigMapVaultConfiguration kubernetesConfigmaps
+                = getSingleBeanOfType(registry, KubernetesConfigMapVaultConfiguration.class);
+        if (kubernetesConfigmaps != null) {
+            VaultConfiguration vault = camelContext.getVaultConfiguration();
+            vault.setKubernetesConfigMapVaultConfiguration(kubernetesConfigmaps);
+        }
         configureVault(camelContext);
 
         // apply custom configurations if any
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationProperties.java
new file mode 100644
index 00000000000..9d5bb0251c4
--- /dev/null
+++ b/core/camel-main/src/main/java/org/apache/camel/main/KubernetesConfigmapsVaultConfigurationProperties.java
@@ -0,0 +1,69 @@
+/*
+ * 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.main;
+
+import org.apache.camel.spi.BootstrapCloseable;
+import org.apache.camel.spi.Configurer;
+import org.apache.camel.vault.KubernetesConfigMapVaultConfiguration;
+
+/**
+ * Configuration for access to Kubernetes Configmaps.
+ */
+@Configurer(bootstrap = true, extended = true)
+public class KubernetesConfigmapsVaultConfigurationProperties extends KubernetesConfigMapVaultConfiguration
+        implements BootstrapCloseable {
+
+    private MainConfigurationProperties parent;
+
+    public KubernetesConfigmapsVaultConfigurationProperties(MainConfigurationProperties parent) {
+        this.parent = parent;
+    }
+
+    public MainConfigurationProperties end() {
+        return parent;
+    }
+
+    @Override
+    public void close() {
+        parent = null;
+    }
+
+    // getter and setters
+    // --------------------------------------------------------------
+
+    // these are inherited from the parent class
+
+    // fluent builders
+    // --------------------------------------------------------------
+
+    /**
+     * Whether to automatically reload Camel upon Configmaps being updated in Kubernetes Cluster.
+     */
+    public KubernetesConfigmapsVaultConfigurationProperties withRefreshEnabled(boolean refreshEnabled) {
+        setRefreshEnabled(refreshEnabled);
+        return this;
+    }
+
+    /**
+     * Specify the configmaps names (or pattern) to check for updates. Multiple configmaps can be separated by comma.
+     */
+    public KubernetesConfigmapsVaultConfigurationProperties withConfigmaps(String configmaps) {
+        setConfigmaps(configmaps);
+        return this;
+    }
+
+}
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
index 823a7635068..837ea6cf1eb 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
@@ -27,6 +27,7 @@ public class VaultConfigurationProperties extends VaultConfiguration implements
     private AzureVaultConfigurationProperties azure;
     private HashicorpVaultConfigurationProperties hashicorp;
     private KubernetesVaultConfigurationProperties kubernetes;
+    private KubernetesConfigmapsVaultConfigurationProperties kubernetesConfigmaps;
 
     public VaultConfigurationProperties(MainConfigurationProperties parent) {
         this.parent = parent;
@@ -54,6 +55,9 @@ public class VaultConfigurationProperties extends VaultConfiguration implements
         if (kubernetes != null) {
             kubernetes.close();
         }
+        if (kubernetesConfigmaps != null) {
+            kubernetesConfigmaps.close();
+        }
     }
 
     // getter and setters
@@ -103,4 +107,12 @@ public class VaultConfigurationProperties extends VaultConfiguration implements
         }
         return kubernetes;
     }
+
+    @Override
+    public KubernetesConfigmapsVaultConfigurationProperties kubernetesConfigmaps() {
+        if (kubernetesConfigmaps == null) {
+            kubernetesConfigmaps = new KubernetesConfigmapsVaultConfigurationProperties(parent);
+        }
+        return kubernetesConfigmaps;
+    }
 }
diff --git a/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java b/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
index 9105e9fba78..9263fe788cc 100644
--- a/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
+++ b/core/camel-main/src/test/java/org/apache/camel/main/MainVaultTest.java
@@ -378,4 +378,45 @@ public class MainVaultTest {
         Assertions.assertEquals("xxxx", cfg.getSecrets());
         main.stop();
     }
+
+    @Test
+    public void testMainKubernetesConfigmaps() {
+        Main main = new Main();
+
+        main.addInitialProperty("camel.vault.kubernetescm.refreshEnabled", "true");
+        main.addInitialProperty("camel.vault.kubernetescm.configmaps", "xxxx");
+
+        main.start();
+
+        CamelContext context = main.getCamelContext();
+        assertNotNull(context);
+
+        KubernetesConfigMapVaultConfiguration cfg = context.getVaultConfiguration().kubernetesConfigmaps();
+        assertNotNull(cfg);
+
+        Assertions.assertTrue(cfg.isRefreshEnabled());
+        Assertions.assertEquals("xxxx", cfg.getConfigmaps());
+        main.stop();
+    }
+
+    @Test
+    public void testMainKubernetesConfigmapsFluent() {
+        Main main = new Main();
+        main.configure().vault().kubernetesConfigmaps()
+                .withRefreshEnabled(true)
+                .withConfigmaps("xxxx")
+                .end();
+
+        main.start();
+
+        CamelContext context = main.getCamelContext();
+        assertNotNull(context);
+
+        KubernetesConfigMapVaultConfiguration cfg = context.getVaultConfiguration().kubernetesConfigmaps();
+        assertNotNull(cfg);
+
+        Assertions.assertTrue(cfg.isRefreshEnabled());
+        Assertions.assertEquals("xxxx", cfg.getConfigmaps());
+        main.stop();
+    }
 }
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
index d27e4030f31..8db2dab8fa4 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
@@ -207,6 +207,8 @@ public class PrepareCamelMainMojo extends AbstractGeneratorMojo {
                     prefix = "camel.vault.azure.";
                 } else if (file.getName().contains("KubernetesVault")) {
                     prefix = "camel.vault.kubernetes.";
+                } else if (file.getName().contains("KubernetesConfigMapVault")) {
+                    prefix = "camel.vault.kubernetes.cm.";
                 } else if (file.getName().contains("HashicorpVault")) {
                     prefix = "camel.vault.hashicorp.";
                 } else if (file.getName().contains("Health")) {
@@ -294,6 +296,17 @@ public class PrepareCamelMainMojo extends AbstractGeneratorMojo {
             throw new MojoFailureException("Error parsing file " + kubernetesVaultConfig + " due " + e.getMessage(), e);
         }
 
+        File kubernetesConfigmapsVaultConfig
+                = new File(camelApiDir, "src/main/java/org/apache/camel/vault/KubernetesConfigMapVaultConfiguration.java");
+        try {
+            List<MainModel.MainOptionModel> model = parseConfigurationSource(kubernetesConfigmapsVaultConfig);
+            model.forEach(m -> m.setName("camel.vault.kubernetescm." + m.getName()));
+            data.addAll(model);
+        } catch (Exception e) {
+            throw new MojoFailureException(
+                    "Error parsing file " + kubernetesConfigmapsVaultConfig + " due " + e.getMessage(), e);
+        }
+
         File hashicorpVaultConfig
                 = new File(camelApiDir, "src/main/java/org/apache/camel/vault/HashicorpVaultConfiguration.java");
         try {


(camel) 02/03: CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update

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

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

commit 019b8d23a08303de0efcaf69bc14895ae51d7150
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Thu Nov 14 15:52:17 2024 +0100

    CAMEL-21166 - Kubernetes Configmaps: Trigger context reloading on update
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../main/camel-main-configuration-metadata.json    |   1 +
 .../periodic-task/kubernetes-configmaps-refresh    |   2 +
 .../vault/ConfigmapsReloadTriggerTask.java         | 177 +++++++++++++++++++++
 .../camel-main-configuration-metadata.json         |   1 +
 core/camel-main/src/main/docs/main.adoc            |  11 ++
 .../camel/main/DefaultConfigurationConfigurer.java |  18 +++
 .../maven/packaging/PrepareCamelMainMojo.java      |   4 +
 7 files changed, 214 insertions(+)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
index 885bac2e54a..1b365a8bcc5 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json
@@ -14,6 +14,7 @@
     { "name": "camel.vault.gcp", "description": "Camel GCP Vault configurations", "sourceType": "org.apache.camel.vault.GcpVaultConfiguration" },
     { "name": "camel.vault.azure", "description": "Camel Azure Key Vault configurations", "sourceType": "org.apache.camel.vault.AzureVaultConfiguration" },
     { "name": "camel.vault.kubernetes", "description": "Camel Kubernetes Vault configurations", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration" },
+    { "name": "camel.vault.kubernetescm", "description": "Camel Kubernetes Configmaps Vault configurations", "sourceType": "org.apache.camel.vault.KubernetesConfigMapVaultConfiguration" },
     { "name": "camel.vault.hashicorp", "description": "Camel Hashicorp Vault configurations", "sourceType": "org.apache.camel.vault.HashicorpVaultConfiguration" },
     { "name": "camel.opentelemetry", "description": "Camel OpenTelemetry configurations", "sourceType": "org.apache.camel.main.OtelConfigurationProperties" },
     { "name": "camel.metrics", "description": "Camel Micrometer Metrics configurations", "sourceType": "org.apache.camel.main.MetricsConfigurationProperties" },
diff --git a/components/camel-kubernetes/src/generated/resources/META-INF/services/org/apache/camel/periodic-task/kubernetes-configmaps-refresh b/components/camel-kubernetes/src/generated/resources/META-INF/services/org/apache/camel/periodic-task/kubernetes-configmaps-refresh
new file mode 100644
index 00000000000..0a883c84b78
--- /dev/null
+++ b/components/camel-kubernetes/src/generated/resources/META-INF/services/org/apache/camel/periodic-task/kubernetes-configmaps-refresh
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.kubernetes.config_maps.vault.ConfigmapsReloadTriggerTask
diff --git a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/vault/ConfigmapsReloadTriggerTask.java b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/vault/ConfigmapsReloadTriggerTask.java
new file mode 100644
index 00000000000..370383e2788
--- /dev/null
+++ b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/config_maps/vault/ConfigmapsReloadTriggerTask.java
@@ -0,0 +1,177 @@
+/*
+ * 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.config_maps.vault;
+
+import java.time.Instant;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+
+import io.fabric8.kubernetes.api.model.ConfigMap;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.Watch;
+import io.fabric8.kubernetes.client.Watcher;
+import io.fabric8.kubernetes.client.WatcherException;
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.component.kubernetes.properties.ConfigMapPropertiesFunction;
+import org.apache.camel.spi.ContextReloadStrategy;
+import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.PropertiesComponent;
+import org.apache.camel.spi.PropertiesFunction;
+import org.apache.camel.spi.annotations.PeriodicTask;
+import org.apache.camel.support.PatternHelper;
+import org.apache.camel.support.service.ServiceSupport;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@PeriodicTask("kubernetes-configmaps-refresh")
+public class ConfigmapsReloadTriggerTask extends ServiceSupport implements CamelContextAware, Runnable {
+
+    private CamelContext camelContext;
+    @Metadata(defaultValue = "true")
+    private boolean reloadEnabled = true;
+    private String configmaps;
+    private KubernetesClient kubernetesClient;
+    private ConfigMapPropertiesFunction propertiesFunction;
+    private volatile Instant startingTime;
+
+    private static final Logger LOG = LoggerFactory.getLogger(ConfigmapsReloadTriggerTask.class);
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    public boolean isReloadEnabled() {
+        return reloadEnabled;
+    }
+
+    /**
+     * Whether Camel should be reloaded on Secrets updated
+     */
+    public void setReloadEnabled(boolean reloadEnabled) {
+        this.reloadEnabled = reloadEnabled;
+    }
+
+    /**
+     * Starting Time Kubernetes secrets watcher
+     */
+    public Instant getStartingTime() {
+        return startingTime;
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+
+        // auto-detect secrets in-use
+        PropertiesComponent pc = camelContext.getPropertiesComponent();
+        PropertiesFunction pf = pc.getPropertiesFunction("configmap");
+        if (pf instanceof ConfigMapPropertiesFunction) {
+            propertiesFunction = (ConfigMapPropertiesFunction) pf;
+            LOG.debug("Auto-detecting configmaps from properties-function: {}", pf.getName());
+        }
+        // specific secrets
+        configmaps = camelContext.getVaultConfiguration().kubernetesConfigmaps().getConfigmaps();
+        if (ObjectHelper.isEmpty(configmaps) && propertiesFunction == null) {
+            throw new IllegalArgumentException("Configmaps must be configured on Kubernetes configmaps vault configuration");
+        }
+
+        kubernetesClient = propertiesFunction.getClient();
+    }
+
+    @Override
+    protected void doShutdown() throws Exception {
+        super.doShutdown();
+
+        if (kubernetesClient != null) {
+            try {
+                kubernetesClient.close();
+            } catch (Exception e) {
+                // ignore
+            }
+            kubernetesClient = null;
+        }
+    }
+
+    @Override
+    public void run() {
+        startingTime = Instant.now();
+        final CountDownLatch isWatchClosed = new CountDownLatch(1);
+        Watch watch = kubernetesClient.configMaps().inNamespace(kubernetesClient.getNamespace()).watch(new Watcher<>() {
+            @Override
+            public void eventReceived(Action action, ConfigMap configMap) {
+                switch (action.name()) {
+                    case "MODIFIED":
+                        if (isReloadEnabled()) {
+                            if (matchSecret(configMap.getMetadata().getName())) {
+                                LOG.info("Update for Kubernetes Configmaps: {} detected, triggering CamelContext reload",
+                                        configMap.getMetadata().getName());
+                                ContextReloadStrategy reload = camelContext.hasService(ContextReloadStrategy.class);
+                                if (reload != null) {
+                                    // trigger reload
+                                    reload.onReload(this);
+                                }
+                            }
+                        }
+                        break;
+                    default:
+                        LOG.debug("Not watched event {}", action.name());
+                }
+            }
+
+            @Override
+            public void onClose(WatcherException e) {
+                isWatchClosed.countDown();
+            }
+        });
+
+        // Wait till watch gets closed
+        try {
+            isWatchClosed.await();
+        } catch (InterruptedException e) {
+            LOG.debug("Interrupted while waiting for the watch to close: {}", e.getMessage());
+            Thread.currentThread().interrupt();
+        }
+        watch.close();
+    }
+
+    protected boolean matchSecret(String name) {
+        Set<String> set = new HashSet<>();
+        if (configmaps != null) {
+            Collections.addAll(set, configmaps.split(","));
+        }
+
+        for (String part : set) {
+            boolean result = name.contains(part) || PatternHelper.matchPattern(name, part);
+            LOG.trace("Matching configmap id: {}={} -> {}", name, part, result);
+            if (result) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+}
diff --git a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
index 885bac2e54a..1b365a8bcc5 100644
--- a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
+++ b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json
@@ -14,6 +14,7 @@
     { "name": "camel.vault.gcp", "description": "Camel GCP Vault configurations", "sourceType": "org.apache.camel.vault.GcpVaultConfiguration" },
     { "name": "camel.vault.azure", "description": "Camel Azure Key Vault configurations", "sourceType": "org.apache.camel.vault.AzureVaultConfiguration" },
     { "name": "camel.vault.kubernetes", "description": "Camel Kubernetes Vault configurations", "sourceType": "org.apache.camel.vault.KubernetesVaultConfiguration" },
+    { "name": "camel.vault.kubernetescm", "description": "Camel Kubernetes Configmaps Vault configurations", "sourceType": "org.apache.camel.vault.KubernetesConfigMapVaultConfiguration" },
     { "name": "camel.vault.hashicorp", "description": "Camel Hashicorp Vault configurations", "sourceType": "org.apache.camel.vault.HashicorpVaultConfiguration" },
     { "name": "camel.opentelemetry", "description": "Camel OpenTelemetry configurations", "sourceType": "org.apache.camel.main.OtelConfigurationProperties" },
     { "name": "camel.metrics", "description": "Camel Micrometer Metrics configurations", "sourceType": "org.apache.camel.main.MetricsConfigurationProperties" },
diff --git a/core/camel-main/src/main/docs/main.adoc b/core/camel-main/src/main/docs/main.adoc
index c998c397dc6..baa518b410f 100644
--- a/core/camel-main/src/main/docs/main.adoc
+++ b/core/camel-main/src/main/docs/main.adoc
@@ -438,6 +438,17 @@ The camel.vault.kubernetes supports 4 options, which are listed below.
 |===
 
 
+=== Camel Kubernetes Configmaps Vault configurations
+The camel.vault.kubernetescm supports 2 options, which are listed below.
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.vault.kubernetescm.configmaps* | Specify the configmap names (or pattern) to check for updates. Multiple configmaps can be separated by comma. |  | String
+| *camel.vault.kubernetescm.refresh{zwsp}Enabled* | Whether to automatically reload Camel upon configmaps being updated in Kubernetes Cluster. | false | boolean
+|===
+
+
 === Camel Hashicorp Vault configurations
 The camel.vault.hashicorp supports 4 options, which are listed below.
 
diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
index fdd569b2c30..307dce149a1 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java
@@ -723,6 +723,24 @@ public final class DefaultConfigurationConfigurer {
                 scheduler.scheduledTask(r);
             }
         }
+
+        if (vc.kubernetesConfigmaps().isRefreshEnabled()) {
+            Optional<Runnable> task = PluginHelper.getPeriodTaskResolver(camelContext)
+                    .newInstance("kubernetes-configmaps-refresh", Runnable.class);
+            if (task.isPresent()) {
+                Runnable r = task.get();
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Scheduling: {} ", r);
+                }
+                if (camelContext.hasService(ContextReloadStrategy.class) == null) {
+                    // refresh is enabled then we need to automatically enable context-reload as well
+                    ContextReloadStrategy reloader = new DefaultContextReloadStrategy();
+                    camelContext.addService(reloader);
+                }
+                PeriodTaskScheduler scheduler = PluginHelper.getPeriodTaskScheduler(camelContext);
+                scheduler.scheduledTask(r);
+            }
+        }
     }
 
     public static void afterPropertiesSet(final CamelContext camelContext) throws Exception {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
index 8db2dab8fa4..3a330db9be7 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelMainMojo.java
@@ -382,6 +382,10 @@ public class PrepareCamelMainMojo extends AbstractGeneratorMojo {
                     new MainGroupModel(
                             "camel.vault.kubernetes", "Camel Kubernetes Vault configurations",
                             "org.apache.camel.vault.KubernetesVaultConfiguration"));
+            model.getGroups().add(
+                    new MainGroupModel(
+                            "camel.vault.kubernetescm", "Camel Kubernetes Configmaps Vault configurations",
+                            "org.apache.camel.vault.KubernetesConfigMapVaultConfiguration"));
             model.getGroups().add(
                     new MainGroupModel(
                             "camel.vault.hashicorp", "Camel Hashicorp Vault configurations",