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.

0913331bcf360849ca2acec0612081b2?s=128

Shahidh K Muhammed

March 29, 2018
Tweet

Transcript

  1. 3.

    Git • Distributed version control system • Manage source code

    • Any text files can be tracked • Collaboration
  2. 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
  3. 6.

    Ops • Configure, build, test, deploy • CI/CD • Monitor,

    fix • Upgrades • Rollbacks • Automation
  4. 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
  5. 8.

    GitOps - Patterns • CI builds artifacts • Updates config

    (in a git repo) • Trigger rollout (PR merge/commit) • Observe • Control
  6. 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