Understanding GitOps: Principles and Practices
Configuration management systems such as Ansible and Puppet have long allowed DevOps specialists to configure their infrastructure using code inside virtual machines (VMs). This was a significant step forward, enabling consistent and repeatable setups. The next step in this evolution was Infrastructure as Code (IaC), which became very popular as cloud providers allowed the configuration of their resources using code. Tools such as Terraform and CloudFormation emerged, empowering DevOps specialists to set up entire infrastructures—from cloud resources to configurations inside VMs—using code.
With IaC, storing configurations in Git became a common practice. Many began applying GitOps principles to this code, using Git as the single source of truth and offering a declarative way to manage infrastructure and applications. However, the first iterations of GitOps faced limitations, particularly when applied to virtual machines...