In chapter 2, you learned how GitOps can deploy applications to a run-time environment. This chapter teaches us more about those different run-time environments and how Kubernetes Namespaces can define environment boundaries. We’ll also learn about several configuration management tools (Helm, Kustomize, and Jsonnet) and how they can help manage an application’s configuration consistently in multiple environments.
In software deployment, an environment is where code is deployed and executed. Different environments serve different purposes in the life cycle of software development. For example, a local development environment (aka laptop) is where engineers can create, test, and debug new code versions. After engineers complete the code development, the next step is to commit the changes to Git and kick off a deployment to different environments for integration testing and eventual production release. This process is known as continuous integration/continuous deployment (CI/CD) and typically consists of the following environments: QA, E2E, Stage, and Prod.