Skip to content

Commit 20fbdf9

Browse files
Merge pull request #4 from scottrigby/principles
For initial pre-release of GitOps Principles revised by the GitOps Working Group
2 parents 0065bfc + efff2de commit 20fbdf9

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

PRINCIPLES.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# GitOps Principles v0.1.0
2+
3+
## Summary
4+
5+
GitOps is a set of principles for operating and managing software systems.
6+
7+
When using GitOps, the _Desired State_ of a system or subsystem is defined declaratively as versioned, immutable data, and the running system's configuration is continuously derived from this data.
8+
9+
These principles were derived from modern software operations but are rooted in pre-existing and widely adopted best practices.
10+
11+
## Principles
12+
13+
1. **The principle of declarative desired state**
14+
15+
A system managed by GitOps must have its _Desired State_ expressed declaratively as data in a format writable and readable by both humans and machines.
16+
17+
2. **The principle of immutable desired state versions**
18+
19+
_Desired State_ is stored in a way that supports versioning, immutability of versions, and retains a complete version history.
20+
21+
3. **The principle of continuous state reconciliation**
22+
23+
Software agents continuously, and automatically, compare a system's _Actual State_ to its _Desired State_.
24+
If the actual and desired states differ for any reason, automated actions to reconcile them are initiated.
25+
26+
4. **The principle of operations through declaration**
27+
28+
The only mechanism through which the system is intentionally operated on is through these principles.
29+
30+
## Notes
31+
32+
### Principle 3 Notes
33+
34+
- These differences could be due to the actual state drifting from the desired state, or the desired state changing intentionally.
35+
- The source of drift doesn't matter. Contrary to CIops, _any_ drift will trigger a reconciliation
36+
37+
### Principle 4 Notes
38+
39+
- We talk here about "regular operations." In an emergency, other modes of operations, e.g. manual intervention, should be considered - followed by a reconciliation of the "tainted" system with the declared state. → resolve the conflict between "GitOps principle" and "I need to deal with problems that GitOps doesn't cover"
40+
41+
## Glossary
42+
43+
- ### Continuous
44+
45+
By "continuous" we adopt the industry standard term to mean reconciliation continues to happen, not that it must be instantaneous.
46+
47+
- ### Declarative Description
48+
49+
Describing the desired state or behavior of a system without specifying how that state will be achieved, thereby separating between configuration - the desired state - and implementation - the commands, API calls, scripts ... that actually achieve the desired state described in the declarative description.
50+
51+
- ### Desired State
52+
53+
The aggregate of all configuration data for a system form its _Desired State_ which is defined as data sufficient to recreate the system so that instances of the system are behaviourally indistinguishable.
54+
55+
- ### Software System
56+
57+
One or more Runtime environments consisting of resources under management.
58+
In each Runtime, management Agents to act on resources according to security policies.
59+
One or more software Repositories for storing deployable artifacts that may be loaded into the runtime environments, eg. configuration files, code, binaries and packages.
60+
One or more Administrators who are responsible for operating the runtime environments ie. installing, starting, stopping and updating software, code, configuration, etc.
61+
A set of policies controlling access and management of repositories, deployments, runtimes.
62+
63+
- #### State Store
64+
65+
A system for storing versioned, immutable Desired States that provides access control and auditing on the changes to the Desired State. Git may be configured as a State Store, but [special precautions must be taken](recipes/SETTING_UP_GIT.md).

0 commit comments

Comments
 (0)