CHAPTER 20 Immutable Configuration Solution To address the preceding concerns, we can put all environment-specific configuration data into a single, passive data image that we can distribute as a regular container image. During runtime, the application and the data image are linked together so that the application can extract the configuration from the data image. With this approach, it is easy to craft different configuration data images for various environ‐ The  Immutable Configuration  pattern packages configuration data into an immutable container image and links the configuration container to the application at runtime. With this pattern, we are able to not only use immutable and versioned configuration data, but also overcome the size limitation of configuration data stored in environ‐ ment variables or ConfigMaps. As you saw in Chapter 18,  EnvVar Configuration , environment variables provide a simple way to configure container-based applications. And although they are easy to use and universally supported, as soon as the number of environment variables exceeds a certain threshold, managing them becomes hard. This complexity can be handled to some degree by using  Configuration Resources . However, all of these patterns do not enforce  immutability  of the configuration data itself. Immutability here means that we can’t change the configuration after the appli‐ cation has started, in order to ensure that we always have a well-defined state for our configuration data. In addition,  Immutable Configuration  can be put under version control, and follow a change control process. Problem 157