One Year of Weave GitOps Terraform Controller: Bringing True GitOps to Infrastructure as Code
It’s the first anniversary of Weave GitOps Terraform Controller. In this post, we take a look back at how the controller came to be, some of its benefits, and more.
By: Chanwit Kaewkasi, Weaveworks Senior Software Engineer
It's hard to believe, but this month marks the one-year anniversary of the Weave GitOps Terraform Controller. In just one short year, this tool has revolutionized how we manage Infrastructure as Code (IaC) and has brought the true principles of GitOps to the world of Terraform.
For those who are new to GitOps, it's a practice that uses Git as a single source of truth for declarative infrastructure and application code. This means that all changes to infrastructure and applications are made using pull requests, just like code changes. This allows teams to use the same collaboration, review, and deployment processes for infrastructure and applications - making it easier to manage and maintain complex systems.
GitOps is based on several key principles:
- Declarative: The desired state of the infrastructure and applications must be expressed declaratively.
- Versioned and Immutable: The desired state is stored in a way that enforces immutability, versioning, and retains a complete version history.
- Pulled Automatically: Software agents automatically pull the desired state declarations from the source.
- Continuously Reconciled: Software agents continuously observe the actual system state and attempt to apply the desired state.
These principles have been applied to Kubernetes for some time, but the Weave GitOps Terraform Controller has brought them to the world of Terraform. This means that teams can now use GitOps principles to manage their infrastructure and applications, regardless of whether they're running on Kubernetes or not.
Case Study: AppsFlyer Improves Developer Productivity With GitOps & Terraform IaC
In our most recent case study learn how AppsFlyer leverages GitOps to improve developer productivity by 50%.Read the case study
What is the Terraform Controller?
Weave GitOps Terraform Controller, also known as Weave TF-controller, is a tool for managing infrastructure and application resources using the GitOps approach. One of the key benefits of the Weave GitOps Terraform Controller is that it's compatible with existing Terraform workflows. This means that teams can continue to use the same tools and processes they're already familiar with while gaining the benefits of GitOps.
The Weave TF-controller started off as my personal project, with the first version, V0.1.0, released in December 2021. Shortly after it was released to the Weaveworks team, several team members joined as contributors (Piaras Hoban, Tom Huang, and Luke Mallon).
In January 2022, the project moved from being a personal project to being part of Weaveworks, and v0.8.0 was released as the first version under the Weaveworks umbrella. In August, a breakthrough was made to support reconciling 1,500 Terraform modules concurrently. In September, an article on "How to GitOps your Terraform" was published by Priyanka Ravi and Daniel Holbach.
The most recent version of the Weave GitOps Terraform Controller introduced a new component model based on Flux's OCI support. It began bundling alpha versions of the AWS package with the controller.
The Weave GitOps Terraform Controller also helps teams integrate both their applications and infrastructure into a single GitOps pipeline. This allows them to manage all aspects of their systems in a consistent and predictable way, using the same collaboration, review, and deployment processes for both applications and infrastructure.
Terraform Controller now part of Weave GitOps Enterprise
In addition to its powerful features and compatibility with existing Terraform workflows, the Weave GitOps Terraform Controller is also part of the Weave GitOps Enterprise offering. This means that teams can use the Weave GitOps Terraform Controller with the confidence of knowing that they have access to expert support and assistance whenever they need it.
The Weave GitOps Enterprise offering also includes additional features and tools that are designed to help teams manage their infrastructure and applications more effectively. This includes features such as GitOps templates, policy as code integration, advanced auditing and compliance, role-based access control, and integrated metrics and monitoring.
As we celebrate the one-year anniversary of the Weave GitOps Terraform Controller, the future looks bright for GitOps. With the official graduation of Flux to become a mature project with the Cloud Native Computing Foundation, the adoption of GitOps best practices is expected to accelerate. The next frontier for GitOps is integrating controllers within platforms such as Flux with other controllers, making it easier to use the same platform and processes to deploy software and IaC on platforms other than Kubernetes.
Weaveworks is already working towards this goal, integrating Flux with Terraform and other IaC tools. We're excited to see what the future holds for GitOps and the Weave GitOps Terraform Controller.