Application Configuration Service overview
Application Configuration Service for VMware Tanzu (ACS) is one of the commercial VMware Tanzu components. It enables the management of Kubernetes-native ConfigMap
resources that are populated from properties defined in one or more Git repositories.
Application Configuration Service is offered in two versions: Gen1 and Gen2. The Gen1 version mainly serves existing customers for backward compatibility purposes and is supported only until April 30, 2024. New service instances should use Gen2. The Gen2 version uses flux as the backend to communicate with Git repositories and provides better performance compared to Gen1.
You can check the generation information via Azure Portal
The below article will introduce the troubleshooting guide for both generations.
Case 1: Application fails to start due to configuration not available
1. Make sure your Application Configuration Service setting is correct.
There are several checkpoints in the Application Configuration Service settings.
- The Git URI and label are correct. E.g. we have met several cases that use `master` branch but the default branch in GitHub has been changed to `main`.
- The credentials are correct. If you are using a private Git repo, it is recommended to use `SSH` auth for security considerations. `HTTP basic` auth also works but be cautioned that the token usually has an expiration date. Please remember to update the token before it expires. Please check Authentication section in our docs.
To verify the above things, you may take a look at Application Configuration Service's logs through Azure Log analysis. The log will hint reason if it is not able to access to your Git repository.
// Both works for Application Configuration Service Gen1 and Gen2
AppPlatformSystemLogs
| where LogType == "ApplicationConfigurationService"
| project TimeGenerated , ServiceName , Log , _ResourceId
| limit 100
If you are using Application Configuration Service Gen2, it is also worth a while to take a look at `Flux` logs.
// Only available in Application Configuration Service Gen2
AppPlatformSystemLogs
| where LogType == "Flux"
| project TimeGenerated , ServiceName , Log , _ResourceId
| limit 100
2. Make sure the app is bonded to ACS.
To explicitly use Application Configuration Service feature in an app, you have to bind the app through Azure Portal or Azure command line. It is unbound by default.
# Azure Command line to bind app
az spring application-configuration-service bind --app <app-name>
3. Make sure the deployment is configured with the corrected pattern.
A pattern is a combination of {application}/{profile}. To explicitly tell Azure Spring Apps which pattern your deployment wants to use, you can do that through Azure Portal or Azure command line.
// Bind config file pattern to your deployment
az spring app deploy \
--name <app-name> \
--artifact-path <path-to-your-JAR-file> \
--config-file-pattern <config-file-pattern>
4. Restart the app
You have to restart the application after the bind operation. Note that restart is not mandatory if you do an app deploy instead.
Case 2: Configuration not refreshed in application
The refresh strategies provides some code examples about the end to end workflow to refresh your Java Spring Boot application configuration after you update the configuration file in the Git repository. The refresh frequency is 60 seconds in Azure Spring Apps but please allow another 60 seconds to reflect the change to the configmap.
If you still hit any issue, you can also follow the below troubleshooting guide.
1. Make sure the Application Configuration Service setting still uses the correct credentials.
Credentials may be expired and not been updated in Application Configuration Service settings. You can verify it through the same step in Case 1 via logs in Azure Log analysis.
2. Restart the app
Another possible reason that the refresh doesn't work in your app is that the Spring context is not refreshed. It could be a code issue in the app. You may restart the app to check the result.
Hope the troubleshooting guide is helpful to you!
To help you get started, we have monthly FREE grants on all tiers – 50 vCPU Hours and 100 memory GB Hours per tier.
Additional Resources
- Learn using an MS Learn module or self-paced workshop on GitHub
- Deploy your first Spring app to Azure!
- Deploy the demo Fitness Store Spring Boot app to Azure
- Deploy the demo Animal Rescue Spring Boot app to Azure
- Learn more about implementing solutions on Azure Spring Apps
- Deploy Spring Boot apps by leveraging enterprise best practices –Azure Spring Apps Reference Architecture
- Migrate your Spring Boot, Spring Cloud, and Tomcat applications to Azure Spring Apps
- Wire Spring applications to interact with Azure services
- For feedback and questions, please raise your issues on our GitHub.
To learn more about Spring Cloud Azure, we invite you to visit the following links:
- Reach out to us on StackOverflow or GitHub.
- Reference Documentation
- Conceptual Documentation
- Code Samples
- Spring Version Mapping