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

Git based application deployment patterns for Kubernetes

Git based application deployment patterns for Kubernetes

Shahidh talks about various patterns revolving around GitOps (Git + Devops) for applications deployment onto Kubernetes.

Shahidh K Muhammed

March 29, 2018
Tweet

More Decks by Shahidh K Muhammed

Other Decks in Technology

Transcript

  1. Git based application
    deployment patterns for
    Kubernetes
    Git ❤ K8s

    View Slide

  2. Shahidh K
    Muhammed
    @shahidh_k

    View Slide

  3. Git
    ● Distributed version control system
    ● Manage source code
    ● Any text files can be tracked
    ● Collaboration

    View Slide

  4. Git - Source of Truth
    ● Infrastructure as Code
    ○ Terraform, CloudFormation
    ● System Configuration as Code
    ○ Ansible
    ○ Chef
    ○ Puppet
    ● Application Configuration as Code
    ○ Kubernetes
    ○ Hasura
    ● Application Source Code

    View Slide

  5. Declarative tools ❤ Git

    View Slide

  6. Ops
    ● Configure, build, test, deploy
    ● CI/CD
    ● Monitor, fix
    ● Upgrades
    ● Rollbacks
    ● Automation

    View Slide

  7. GitOps
    ● Ops practices using Git
    ● Use Git as source of truth
    ● Drive operations through git repo
    ● Get version control, history, peer review, and rollback
    ● Continuous delivery - Automated pipelines
    ● Webhooks: push to trigger build/test
    ● PRs & merge branch to deploy

    View Slide

  8. GitOps - Patterns
    ● CI builds artifacts
    ● Updates config (in a git repo)
    ● Trigger rollout (PR merge/commit)
    ● Observe
    ● Control

    View Slide

  9. GitOps - Patterns
    Source: Weave Works

    View Slide

  10. GitOps - Patterns
    ● Use declarative configuration to define
    application and services
    ● All changes go through git review process,
    none using kubectl
    ● Use an operator in the cluster to drive
    observed state to desired state, as declared
    by the configuration in git
    ● pre-push hook to create manifests
    ○ Render templates for correct env
    ○ Secrets
    ● pre-receive hook or webhooks to build
    artifacts and do kubectl set-image
    ● Power to developer
    ● Own tooling

    View Slide

  11. Shahidh K
    Muhammed
    @shahidh_k
    Thanks for listening! Questions?

    View Slide