3 Environment management

 

This chapter covers

  • Understanding environments
  • Designing the right environment using Namespaces
  • Organizing your Git repo/branching strategy to support your environment
  • Implementing config management for your environment

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.

We recommend you read chapters 1 and 2 before reading this chapter.

3.1 Introduction to environment management

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.

3.1.1 Components of an environment

3.1.2 Namespace management

3.1.3 Network isolation

3.1.4 Preprod and prod clusters

3.2 Git strategies

3.2.1 Single branch (multiple directories)

3.2.2 Multiple branches

3.2.3 Multirepo vs. monorepo

3.3 Configuration management

3.3.1 Helm

3.3.2 Kustomize

3.3.3 Jsonnet

3.3.4 Configuration management summary

Summary

sitemap