diff --git a/kernel/kernel-config-server/README.md b/kernel/kernel-config-server/README.md
index f2ff0838f0a..ebad24c8b78 100644
--- a/kernel/kernel-config-server/README.md
+++ b/kernel/kernel-config-server/README.md
@@ -24,34 +24,52 @@ For more information look [here]( https://cloud.spring.io/spring-cloud-config/si
**How To Run**
To run the application:
-Make sure you have configured ssh keys to connect to git, because it will take ssh keys from default location (${user.home}/.ssh) .
+Make sure you have configured ssh keys to connect to git, because it will take ssh keys from default location (${user.home}/.ssh) .
+
+Set environment variables to support git repos for composite profile. Here 0,1 indicates list items.
+If any property exists in multiple repositories then repo at 0 index will have high priority and value will be referred from that repo.
+```
+export SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_URI=
+export SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_TYPE=git
+export SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_DEFAULT_LABEL=
+
+export SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_1_URI=
+export SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_1_TYPE=git
+export SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_1_DEFAULT_LABEL=
+```
Now run the jar using the following command:
-`java -jar -Dspring.cloud.config.server.git.uri=< git-repo-ssh-url > -Dspring.cloud.config.server.git.search-paths=< config-folder-location-in-git-repo > -Dencrypt.keyStore.location=file:///< file-location-of-keystore > -Dencrypt.keyStore.password=< keystore-passowrd > -Dencrypt.keyStore.alias=< keystore-alias > -Dencrypt.keyStore.secret=< keystore-secret > < jar-name >`
+`java -jar -Dencrypt.keyStore.location=file:///< file-location-of-keystore > -Dencrypt.keyStore.password=< keystore-passowrd > -Dencrypt.keyStore.alias=< keystore-alias > -Dencrypt.keyStore.secret=< keystore-secret > < jar-name >`
-To run it inside Docker container provide the follwing run time arguments:
-1. git_url_env
-The URL of your Git repo
+To run it inside Docker container provide the following run time arguments:
+1. SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_URI
+ The URL of your Git repo
-2. git_config_folder_env
-The folder inside your git repo which contains the configuration
+2. SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_TYPE
+ Repo type, which is git
-3. encrypt_keyStore_location_env
-The encrypt keystore location
+3. SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_DEFAULT_LABEL
+ branch to refer in git repo. If not provided, it will default to `main` branch
-4. encrypt_keyStore_password_env
-The encryption keystore password
+4. SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_SEARCH_PATHS
+ The folder inside your git repo which contains the configuration
-5. encrypt_keyStore_alias_env
-The encryption keystore alias
+5. encrypt_keyStore_location_env
+ The encrypt keystore location
-6. encrypt_keyStore_secret_env
-The encryption keyStore secret
+6. encrypt_keyStore_password_env
+ The encryption keystore password
+
+7. encrypt_keyStore_alias_env
+ The encryption keystore alias
+
+8. encrypt_keyStore_secret_env
+ The encryption keyStore secret
The final docker run command should look like:
-`docker run --name= -d -v /server.keystore:/server.keystore:z -v /home/madmin/:/.ssh:z -e git_url_env= -e git_config_folder_env= -e encrypt_keyStore_location_env=file:////server.keystore -e encrypt_keyStore_password_env= -e encrypt_keyStore_alias_env= -e encrypt_keyStore_secret_env= -p 51000:51000 `
+`docker run --name= -d -v /server.keystore:/server.keystore:z -v /home/madmin/:/.ssh:z -e SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_URI= -e SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_TYPE=git -e SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_DEFAULT_LABEL= -e encrypt_keyStore_location_env=file:////server.keystore -e encrypt_keyStore_password_env= -e encrypt_keyStore_alias_env= -e encrypt_keyStore_secret_env= -p 51000:51000 `
**To Encrypt any property:**
@@ -65,7 +83,7 @@ And place the encrypted value in client application properties file with the for
`curl http:////decrypt -d `
-**NOTE** There is no need to write decryption mechanism in client applications for encrypted values. They will be automatically decrypted by config server.
+**NOTE** There is no need to write decryption mechanism in client applications for encrypted values. They will be automatically decrypted by config server.
@@ -78,38 +96,39 @@ server.port = 51000
#adding context path
server.servlet.path=/config
-# Uncomment spring.cloud.config.server.git.uri and spring.cloud.config.server.git.search-paths for # connecting to git Repo for configuration.
-#################################################################
-#Git repository location where configuration files are stored
-#spring.cloud.config.server.git.uri=
+spring.profiles.active=composite
-#Path inside the GIT repo where config files are stored, in our case they are inside config directory
-#spring.cloud.config.server.git.search-paths=
+#Server would return a HTTP 404 status, if the application is not found.By default, this flag is set to true.
+spring.cloud.config.server.accept-empty=false
-# Uncomment spring.profiles.active and spring.cloud.config.server.native.search-locations for # connecting to local file system for configuration.
-#################################################################
-# spring.profiles.active=native
+## As spring.profiles.active is composite, use env variable to provide values for git configuration as below
+##########################
+##Git repository location where configuration files are stored
+# SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_URI=
-# spring.cloud.config.server.native.search-locations=file:///
+##Type of repository, possible types are git, svn, native
+# SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_TYPE=git
-#Server would return a HTTP 404 status, if the application is not found.By default, this flag is set to true.
-spring.cloud.config.server.accept-empty=false
+##Branch/label to refer for in config repository
+# SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_DEFAULT_LABEL=
-#Spring Cloud Config Server makes a clone of the remote git repository and if somehow the local copy gets
+#Spring Cloud Config Server makes a clone of the remote git repository and if somehow the local copy gets
#dirty (e.g. folder content changes by OS process) so Spring Cloud Config Server cannot update the local copy
#from remote repository. For Force-pull in such case, we are setting the flag to true.
-spring.cloud.config.server.git.force-pull=true
-
-# Disabling health endpoints to improve performance of config server while in development, can be commented out in production.
-health.config.enabled=false
+# SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_FORCE_PULL=true
-# Setting up refresh rate to 1 minute so that config server will check for updates in Git repo after every one minute,
+# Setting up refresh rate to 60 seconds so that config server will check for updates in Git repo after every 60 seconds,
#can be lowered down for production.
-spring.cloud.config.server.git.refreshRate=60
-
+# SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_REFRESH_RATE=60
# adding provision to clone on start of server instead of first request
-spring.cloud.config.server.git.cloneOnStart=true
+# SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_CLONE_ON_START=true
+
+#Path inside the GIT repo where config files are stored, in our case they are inside config directory
+#SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_SEARCH_PATHS=
+
+# To disable health endpoint to improve performance of config server while in development
+# health.config.enabled=false
#For encryption of properties
###########################################
@@ -148,7 +167,7 @@ spring.cloud.config.uri=http://:
spring.cloud.config.label=
spring.application.name=
spring.cloud.config.name=
-spring.profiles.active=
+spring.profiles.active=composite
management.endpoints.web.exposure.include=refresh
#management.security.enabled=false
@@ -157,3 +176,24 @@ management.endpoints.web.exposure.include=refresh
spring.cloud.config.server.health.enabled=false
```
+
+**cloud config supported for git type repository**
+
+```
+SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_URI=
+SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_TYPE=git
+SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_DEFAULT_LABEL=
+```
+
+```
+SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_1_URI=
+SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_1_TYPE=git
+SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_1_DEFAULT_LABEL=
+```
+
+**cloud config supported for native**
+
+```
+SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_URI=
+SPRING_CLOUD_CONFIG_SERVER_COMPOSITE_0_TYPE=native
+```
\ No newline at end of file
diff --git a/kernel/kernel-config-server/src/main/resources/bootstrap.properties b/kernel/kernel-config-server/src/main/resources/bootstrap.properties
index 088020c6c6f..d698ae118f8 100644
--- a/kernel/kernel-config-server/src/main/resources/bootstrap.properties
+++ b/kernel/kernel-config-server/src/main/resources/bootstrap.properties
@@ -22,31 +22,16 @@ server.servlet.context-path=${server.servlet.path}
#Path inside the GIT repo where config files are stored, in our case they are inside config directory
#spring.cloud.config.server.git.search-paths=
-# Uncomment spring.profiles.active and spring.cloud.config.server.native.search-locations for # connecting to local file system for configuration.
-#################################################################
-#spring.profiles.active=native
-
-#spring.cloud.config.server.native.search-locations=file:///
+#support for composite property.
+#use env variables to provide list of repos.
+spring.profiles.active=composite
#Server would return a HTTP 404 status, if the application is not found.By default, this flag is set to true.
spring.cloud.config.server.accept-empty=false
-#Spring Cloud Config Server makes a clone of the remote git repository and if somehow the local copy gets
-#dirty (e.g. folder content changes by OS process) so Spring Cloud Config Server cannot update the local copy
-#from remote repository. For Force-pull in such case, we are setting the flag to true.
-spring.cloud.config.server.git.force-pull=true
-
# Disabling health endpoints to improve performance of config server while in development, can be commented out in production.
health.config.enabled=false
-# Setting up refresh rate to 5 seconds so that config server will check for updates in Git repo after every one minute,
-#can be lowered down for production.
-spring.cloud.config.server.git.refreshRate=5
-
-
-# adding provision to clone on start of server instead of first request
-spring.cloud.config.server.git.cloneOnStart=true
-
#For encryption of properties
###########################################
#pass at runtime
@@ -55,5 +40,4 @@ spring.cloud.config.server.git.cloneOnStart=true
#encrypt.keyStore.alias=
#encrypt.keyStore.secret=
-mosip.config.dnd.services={'consul','kernel-config-service'}
-
+mosip.config.dnd.services={'consul','kernel-config-service'}
\ No newline at end of file