change under this surface • Git as the boundary • Everything should be declarative • Driving DevOps through Git • Reduced toolset, Complete extensibility • Everything as Code - Kuberentes
restricting the ability of the operators to interface with infrastructure or to enforce controls and release processes. • "Below" this stable surface operators change plumbing • "Above" this surface developers use consistent tooling
the perfect tool for creating a "stable" boundary. • Git-hooks on the client-side/server-side • Webhook integrations offered by centralised git-hosting providers (github, bitbucket etc) • Constraint: ◦ git-hooks and webhooks can only make use of information inside the git repository ◦ or the environment that the git-hook/webhook runs in • Key constraint: Everything must become declarative.
to use git for all DevOps tasks • Complete extensibility ◦ git-hooks and webhooks allow for infinite customisation and tooling to be implemented by operators without affecting the developer workflow in the slightest
the cluster • Declarative infrastructure requirements: CloudFormation, Terraform • Declarative deployment: Kubernetes DeploymentSpec • Declarative tests - run as jobs in a pipeline triggered by a webhook or git-hooks • Implement CI/CD tasks automation in git-hooks • Implement deployment of stateful tasks like database migrations • Monorepo or a config repo - configuration, integration tests for the application are stored • Store secrets/tokens as references to actual values on the Kubernetes cluster, or a vault
receive git events or webhooks: Gitkube.sh: git push to your kubernetes cluster to build and deploy docker images • Synchronising state in git repo with state on a kubernetes cluster: Flux: A controller running on a kubernetes cluster that synchronises the declarative spec in the git repo with the state of the kubernetes cluster • Setting up git-hooks for running stateful migrations: Hasura: A CLI that sets up git-hooks on the local and remote git that can apply configuration, database migrations and can build/deploy docker images via git events.