Continuous Deployment - Pull or Push?

By Robert Foerster
Picture of the author
Published on
gitops

Pipelines: The Push Approach

  • How it Works: Pipelines (think GitLab CI, Jenkins, ...) use a "push" model. Code changes trigger a series of sequential steps (build, test, deploy) to move your application through environments.
  • Pros:
    • Familiar to many teams
    • Highly customizable
  • Cons:
    • Secret Management: Can be tricky to securely handle credentials and sensitive information.
    • Security
      • Often requires additional tools and practices to ensure a secure pipeline.
      • Shared Environments: Pipelines often run in the same environment as your application, which can be a security risk. Separating production and test pipelines is often necessary to avoid unintended consequences.
    • Custom Code: Pipelines often require writing a significant amount of custom code, which can increase maintenance overhead and introduce potential errors.

GitOps: The Pull Approach with ArgoCD or Flux

  • How it Works: GitOps, often implemented with tools like ArgoCD, uses a "pull" model. Your application's desired state is defined in a Git repository. ArgoCD or Flux continuously monitors this repo and automatically syncs your live environment to match it.
  • Pros:
    • Security: Secrets are typically managed within your Git infrastructure or the cluster, simplifying security.
    • Easier Staging: Creating and managing different environments (dev, staging, prod) is smoother, since all have designated own instances.
    • Auditing: Git's version control provides a built-in audit trail of changes.
  • Cons:
    • Learning Curve: Requires understanding Git workflows and the specific GitOps tool.
    • Changes: Changes take longer, since it need to be deployed on all stages.

Which I would Choose?

There's no one-size-fits-all answer. Consider these factors:

  • Team Experience: If your team is already comfortable with pipelines, transitioning to GitOps might take some time.
  • Security Needs: If security is a top priority, GitOps' pull model might be more appealing.

Choosing Your GitOps Tool: ArgoCD or Flux?

Both ArgoCD and Flux are excellent choices for implementing GitOps. They both excel at handling Helm charts and various plugins.

  • ArgoCD: If having a dedicated user interface (UI) for managing your GitOps deployments is important, ArgoCD is a great option.
  • Flux: If you're already using GitLab as your primary platform, Flux might be a good fit due to its potential for closer integration. However, be aware of the recent uncertainty regarding Flux's maintenance.