Configuration management
Configuration management provides a flexible approach for overseeing application deployment, enabling seamless versioning and expediting fast delivery.
Parts of Deployment Configuration
- Configuration files - files that specify configuration parameters used by the application
- Runtime configuration - configuration of resource limits and number of replicas
- Connected services - configuration of connections to Managed or External services used by the application
Deployment Configuration Types
All mentioned types of deployment configurations encompass all three previously mentioned Parts of Deployment Configuration. However, their distinction lies in the scenario and scope in which they are used.
The Default and Preview configurations are primarily utilized for the development of a single component.
The Manually Created Deployment Configuration are designed for the holistic development of the entire application, spanning multiple components and enabling centralized management of configurations across the entire system.
Default Configuration
Furthermore, we can distinguish the default configuration for
- specific branches
- release build versions
Branch configuration
Each component maintains an individual default configuration, stored within its respective Git repository. Specifically, this implies that each branch possesses its unique configuration.
- Configuration files can be found in
codenow/config
- Runtime configuration and Connected services can be found in
.codenow.config.yaml
Release build configuration
It is derived from the configuration stored in the branch used for creating the release build. Therefore, to modify the configuration for a specific release build version, adjustments must be made in the corresponding branch, followed by the creation of a new release build from that updated branch.
Preview Configuration
When creating a new preview build, the first step is to select the target environment for deploying the newly built component. Once the deployment target environment is chosen, a configuration comparison is displayed. This comparison is between the last-used configuration for the deployment target environment and the default branch configuration.
If this is the first time deploying to the selected environment, the configuration template your scaffolder will be compared against the default branch configuration.
The configuration can be edited by clicking on the parts shown in the configuration comparison. For more information check this create/edit preview configuration manual.
Manually Created Deployment Configuration
Deployment configurations apply to multiple components that can be encapsulated into application packages. This implies that deployment configurations are not only environment-specific but also specific to the version of the application package.
When creating a new deployment configuration, the template used is the previous deployment configuration (for earlier versions of the application package for a specific environment). Alternatively, if no configuration exists for a specific environment, the default release build configurations of individual components are utilized.
Mapping Deployment Configurations to Application Package Versions
Mapping deployment configurations to application packages operates in closed intervals. This means that each deployment configuration for a specified application package version will also be applied to all application package versions greater than this one until a different deployment configuration with a higher application package version is encountered.
If we have application packages 1.0.0 and 2.0.0, we can create deployment configurations either for the range from 1.0.0 to 2.0.0 inclusively or solely for the specific application package version 2.0.0. If a new application package with a higher version number is created, the deployment configuration designed for the specified range will automatically be applied to it.
For example, if a new application package 3.0.0 is introduced, the new range of previously created deployment configuration will now be either 1.0.0 - 3.0.0 or 2.0.0 - 3.0.0.