Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitOps Where You Least Expect It: Continuous Re...

GitOps Where You Least Expect It: Continuous Release Strategies in Complex Environments

Adopting GitOps in large companies can involve a complex array of challenges and considerations.

Monica Colangelo

November 13, 2023
Tweet

More Decks by Monica Colangelo

Other Decks in Technology

Transcript

  1. CLOUD DAY 2023 Monica Colangelo Principal Cloud Architect @ NTT

    DATA AWS DevTools Hero GitOps dove non te lo aspetti: strategie di rilascio continuo in ambienti complessi
  2. GitOps refers to a set of practices and tools that

    rely on Git as the central source of truth for managing software applications and infrastructure GitOps definition
  3. GitOps in a nutshell Infrastructure as Code Configuration Management Application

    Code «source of truth» for declarative code update to code source triggers a pipeline a process runs a series of tasks, resulting in the update of the runtime environment to match the source
  4. • Multiple Teams Coordination • Compliance and Regulatory Adherence •

    Multi-Environment Management • Training and Skill Development • Infrastructure as Code Maturity • Change Management • Release Windows • Acceptance Tests performed separately All the dark you cannot ignore Still, we don't want to give up the benefits of automation
  5. • Automated Compliance Checks and Auditing Mechanisms • Tools for

    Managing and Synchronizing Configurations Across Multiple Environments • Simple Tools and Processes for Implementing and Managing IaC • Clear Procedures and Tools for Effective Change Management • Flexible and Automated Scheduling of Release Windows From challenges to requirements
  6. GitOps workflow for Kubernetes Code Repo + source code -

    Dockerfile - buildspec.yml Manifest Repo + helm + templates - chart.yaml - values.yaml CI Pipeline - build_image - tag_latest_image - update_manifest Argo CD Registry Kubernetes Commit changes Push images Update values Sync manifests Deploy changes
  7. Image tagging != release version DEV PROD ms1 v1.0 ms2

    v1.2 ms3 v1.3 ms1 v1.0 ms2 v1.2 ms3 v1.3
  8. Image tagging != release version DEV PROD ms1 v1.0 ms2

    v1.2 ms3 v1.3 v1.0.0 ms3 v1.3 ms1 v1.0 ms1 v1.0 ms2 v1.2
  9. Ready to deploy 1. A tag is created in the

    Kubernetes manifests repository 2. Staging environment config is edited in Argo CD with new tag 3. Automated pipeline deploys tagged release 4. Release aligns certified microservices for production 5. Rollback process is quick and secure
  10. Kustomize Kustomize is a tool for customizing Kubernetes configuration files

    without modifying the underlying resource definitions. It allows users to create overlays on top of existing Kubernetes resource files, which can be used to customize the configuration for specific environments. Main advantage: it allows users to reuse common configuration across different environments, while still allowing for customization in specific cases.