As your organization takes steps toward becoming cloud native, you’ll need to make a mindset shift. Rather than thinking in terms of virtual machines, data warehouses, waterfalls and migrations, your teams will be transitioning to a world of containers and serverless, data lakes, agile and automation.
Cloud native means adopting a smarter, faster and more scalable way of operating — one enabled bythe cloud which helps you solve business challenges and improve customer experiences fast and with a richer toolset.
Although DevOps has led to huge strides in this area for application development, infrastructure has remained mostly stagnant. Many infrastructure teams are still stuck with outdated manual service models, frameworks and processes.
This is where GitOps comes in. With GitOps, you can apply a cloud native mindset to your infrastructure to create an elastic environment that supports continuous deployments while establishing reliability and security.
What Does GitOps Look Like?
1. It’s code-based
Through tools like Kustomize, Helm, Terraform and Ansible, you can declare (define) services/platforms through configuration languages. And you’ll store your repository of templates and manifests in a Git-based source-control system, creating a single source of truth for your DevOps or SRE teams.
2. It applies effective guardrails
By declaring all services/platforms using source control, you can enforce role-based access controls (RBAC) and audit logging to address security requirements. Your service/platform repository can also be integrated into CI/CD tools, so you can enable deployments with approval through pull, push or merge requests and ensure fast recovery times when rollback is required.
3. It detects and manages drift
By integrating infrastructure tooling like Kubernetes Operators into the GitOps process, you can monitor the current state of your services/platforms and ensure that, when drift occurs, the desired state is reconciled. This keeps your services/platforms continually aligned with the repository.
4. Its deployments are automated, with continuous integration
The services/platform repository for your application can follow either a push or pull deployment model. With the pull model, you will integrate with an infrastructure tool like Kubernetes Operator to look for changes in either the application repository or the service/platform repository. If changes are detected, the tool will deploy the needed changes.
With the push model, engineers will push code to the environment repository that hosts the code for either the service or the platform. This will then trigger a build or change response in the environment using Kubernetes Operator or infrastructure tools.
The Benefits of GitOps
1. Improved customer experience
GitOps practices, processes and tools can accelerate your deployment of new features and products. And as you increase your release rates, you can gather and respond to customer feedback faster, which can lead to improved customer satisfaction.
Since your services/platforms are defined declaratively through code, you can integrate code testing into your CI/CD pipelines. Through this integration, you can enable approval, testing and rollback processes for changes, which can improve the overall reliability and mean time to recovery of your applications when you’re deploying changes.
With GitOps processes, practices and tooling, your end-to-end process for deploying or changing services/platforms becomes standardized and consistent. And since the service/platform configuration is managed through code, your engineers can review current and past states through access to the repository branch logs.
GitOps can help you address your SOC 2 compliance requirements as deployments and changes are tracked through the git log, thereby creating an audit trail of who did what — and when. In addition, through the enforcement of encryption and approval processes, and the implementation of role-based access controls across repositories, you can decrease the attack surface for your services/platforms.
Building a Strong Foundation
By integrating GitOps processes, practices and tools, you create a strong foundation for your cloud native applications. GitOps helps ensure that you move toward cloud native architectures in a controlled fashion, and continue to deliver new features faster, while maintaining reliability for your applications.
DevOps in a Cloud Native World: Two of Tech’s Hottest Terms Collide
About the Authors
Lead Cloud Architect, Elastic Engineering
Oliver has been working with a great team at Rackspace Technology to help build out the Elastic Engineering capability across APJ. Oliver has worn many hats during this time of growth, which has included pre-sales, leadership, architecture and engineering. For the last 8 years, Oliver has spent time helping organizations on their journey to the cloud. This included working with top-tier financial services and telecommunications organizations to define their cloud strategies, and also designing and delivering complex architectures across multiple public and private cloud platforms. Prior to Rackspace Technology Oliver led strategy, delivery and operations teams at both Accenture and EY. Having come from a development and operations background, Oliver understands the importance of building resilient distributed systems that not only deliver business outcomes but allow engineers to sleep at night.Read more about Oliver Fletcher