Jump to section

What is multi-cloud GitOps?

Copy URL

GitOps is a set of principles that guides your workflow and enables you to implement continuous deployment (CD) for cloud native applications. It helps you manage your cluster configuration and application deployments by introducing automation to a previously manual process. For example, GitOps can help you manage Red Hat® OpenShift® Container Platform clusters across multi-cluster Kubernetes environments. GitOps automates deployments, no matter how simple or complex, making application workflows more efficient.

GitOps can help deploy a new application or update an existing one. You update the repository, and a GitOps workflow can automate everything else. 

Specifically, GitOps can enable:

  • Management of hybrid and multi-cloud deployments across both public and private clouds
  • Cross-cluster governance and application lifecycle management
  • Secure management of secrets across the deployment

These functions help alleviate the challenges that come with a multi-cloud approach, such as the need for consistency, security, and collaboration as workloads move across public cloud, private cloud, and even on-premises environments. 

In GitOps, the Git repository is the sole source of truth for system and application configuration. It consists of a declarative description of the infrastructure for your environment and works in tandem with automated processes handled by GitOps tooling like Argo CD. This automation makes the actual state of your environment conform to the described state. You can also use the repository to view the list of changes to the system state, because the Git history provides change tracking. 

Additionally, storing your infrastructure and configuration as code can help you reduce sprawl. You can store the configuration of clusters and applications as code within Git repositories. 

Organizations need to develop, deploy, and operate applications on an open hybrid cloud in a stable, simple, and secure way. To do so, they need a hybrid strategy that includes multi-cloud deployments. 

There are significant challenges to the multi-cloud approach. For instance, different cloud vendors provide different tools that may not work well with other vendors’ offerings. As a result, workload migration can be costly and difficult. That lack of portability also leads to higher security risks and data privacy concerns. 

However, Kubernetes has addressed many of those challenges. With Kubernetes, multiple clusters can run on different cloud environments, including on-premises. Workloads can seamlessly move across the environments without incurring those same migration and security difficulties. 

Workloads in such a deployment might be running on multiple clusters and on multiple clouds—private or public. This strategy alleviates the previous challenges, but also requires an infrastructure-as-code approach. In other words, a modern multi-cloud strategy requires GitOps. 

As explained above, GitOps uses Git repositories as a single source of truth to deliver infrastructure-as-code. Submitted code first goes through the continuous integration (CI) process, while the continuous delivery (CD) process checks and applies requirements. All changes to code are tracked, providing familiar version control and revision functionality. 

GitOps thereby enables collaboration between infrastructure teams, in order to accelerate the development process. It brings consistency to the multi-cloud approach, and does so through automated processes, as opposed to manual processes, which can be costly and risk human error. 

As such, organizations implementing a multi-cloud approach need consistency and security across their environments. They need a GitOps solution, such as Red Hat OpenShift GitOps.

Red Hat OpenShift GitOps is an operator that installs and configures an Argo CD instance for you. It manages your infrastructure configuration and application deployments, organizing the deployment process around these configuration repositories. At least two repositories are always central to the process:

  • Application repository with the source code
  • Environment configuration repository that defines the desired state of the application

To maintain cluster resources, Red Hat OpenShift GitOps uses Argo CD, an open-source tool for the continuous deployment portion of the continuous integration and continuous deployment (CI/CD) of applications. Namely, Argo CD acts as a controller for Red Hat OpenShift GitOps by monitoring application state descriptions and configurations, as defined in a Git repository. It compares the defined state to the actual state, and then reports any configurations that deviate from the specified description. 

Administrators can resync configurations to the defined state based on these reports. That resyncing can be manual or automated. In the case of automation, the configuration is essentially “self-healing.”

As such, Red Hat OpenShift GitOps and its automated processes allow you to:

  • Ensure that clusters have similar states for configuration, monitoring, and storage
  • Apply or revert configuration changes to multiple clusters
  • Associate templated configuration with different environments
  • Deploy applications across clusters, from staging to production

Operators are the preferred method of packaging, deploying, and managing services on the OpenShift Container Platform control plane. For example, GitOps Primer is an operator that exports Kubernetes objects, allowing them to be shared across clusters, teams, and environments. It is part of how GitOps helps bring consistency, security, and collaboration to a multi-cloud approach. 

They integrate with Kubernetes APIs and command line interface (CLI) tools to provide the means of monitoring applications, performing health checks, managing over-the-air (OTA) updates, and ensuring that applications remain in your specified state.

Two different systems manage operators in OpenShift Container Platform, depending on their purpose:

Operators help you create applications to monitor the running services in your cluster. They implement and automate installation and configuration operations, as well as autoscaling up and down and creating backups. All these activities are in a piece of software that runs inside your cluster.

Operators provide:

  • Repeatability of installation and upgrade
  • Constant health checks of every system component
  • Over-the-air (OTA) updates for OpenShift components 
  • A place to encapsulate knowledge from field engineers and spread it to all users, not just one or two

GitOps Primer is an operator that runs in your OpenShift cluster that gives the ability for developers to export all Kubernetes objects within a namespace. It produces a portable .zip file so that you can: 

GitOps Primer helps facilitate the infrastructure-as-code approach that GitOps brings to multi-cloud.

Git serves as the single source of truth for infrastructure and application configuration. Both infrastructure configuration and application configurations require access to sensitive assets, most commonly called secrets (e.g. authentication tokens, private keys, etc), in order for GitOps tooling to perform that function.

However, storing secrets in your Git repository represents a security vulnerability and should not be allowed, even when the repository is considered private and contains access controls to limit the audience. Once a secret has been pushed in clear-text (or in an easily reversible state) to Git, it must be considered compromised and should be revoked immediately.

To overcome this challenge, there are two main architectural approaches for secrets management in GitOps:

  • Encrypted Secrets
    • Stored within Git repositories
    • Automated processes decrypt and render them as Kubernetes Secrets
  • Reference to secrets are stored in Git repositories
    • Automated processes retrieve the secrets based on these references
    • The retrieved secrets render as Kubernetes Secrets 

For an in-depth look at these two approaches, read A Guide to Secrets Management with GitOps and Kubernetes.

Now that you have a conceptual understanding of multi-cloud GitOps, you’re ready to learn how to develop with GitOps, including:

You can also keep browsing articles related to OpenShift GitOps, including:

Keep reading

Article

What is DevSecOps?

If you want to take full advantage of the agility and responsiveness of DevOps, IT security must play a role in the full life cycle of your apps.

Article

What is CI/CD?

CI/CD introduces ongoing automation and continuous monitoring throughout the lifecycle of apps, from integration and testing phases to delivery and deployment.

Article

Who is a DevOps engineer?

A DevOps engineer has a unique combination of skills and expertise that enables collaboration, innovation, and cultural shifts within an organization.  

More about DevOps

Products

An intensive, highly focused residency with Red Hat experts where you learn to use an agile methodology and open source tools to work on your enterprise’s business problems.

Engagements with our strategic advisers who take a big-picture view of your organization, analyze your challenges, and help you overcome them with comprehensive, cost-effective solutions.

Resources

Podcast

Command Line Heroes Season 1, Episode 4:

"DevOps: Tear down that wall"

Checklist

Enterprise automation with a DevOps methodology

Whitepaper

Streamline CI/CD pipelines with Red Hat Ansible Automation Platform

Operator

Manage infrastructure and application configurations with Red Hat® OpenShift® GitOps