GitOps terminology clarification: Use Git as a Source of Record, and Kubernetes as a Source of Truth. https://www.taos.com/source-of-record-vs-source-of-truth/ …
-
-
Replying to @bgrant0607 @kubernetesonarm
It's stronger than that if done right because record and truth are kept in a reconcilation loop.
1 reply 0 retweets 4 likes -
GitOps sucks with k8s. That reconciliation loop should be one-way flowing from desire to realized. But k8s uses a bi-directional mutation. Mirroring that back to git is dumb. Complicated merge is dumb. Mediocre.
2 replies 0 retweets 2 likes -
I haven't seen this behavior of k8s modifying git. Typically it is as you describe, desired state comes from git and is fed to k8s, k8s then attempts to make that a reality.
1 reply 0 retweets 2 likes -
The issue is k8s mutates the resources under its own management in ways that conflict with declarative representation in git. Requiring merge on rollout.
3 replies 0 retweets 2 likes -
I see, yeah, basically "kubectl apply" is required, is not a pure update, but a merge process. The only thing I wish k8s had done differently there would be that spec and status were two different resources. But that's the beauty of hindsight.
2 replies 0 retweets 1 like -
K8s itself is a distributed system with bidirectional state mutation (lots of concurrency). It doesn’t take a distributed systems master to anticipate these issues. Ironically, using git as the k8s backend would have at least been functionally correct.
2 replies 0 retweets 1 like -
i don't think you really give enough credit to k8s here. k8s is a system that allows mutation, but bidirectional, as you say, is not a core tenet and would be more a flaw in implementation. i think you'd prefer a system based on immutable data, which I too think is compelling
4 replies 0 retweets 0 likes -
Immutable data is a convient way to skirt concurrency problems in a distributed system. My issue is that k8s claims ownership of the resource version identifier, that it usually leads the versions in VCS, and requires non-trivial merge downstream from git (the gitops master).
3 replies 0 retweets 2 likes -
Replying to @allingeek @ibuildthecloud and
Are you talking about mutation in, for example, number of pods deployed? Or something more substantial?
2 replies 0 retweets 0 likes
What prompted me to think about this is the CNCF Etcd blog post, which described Etcd as the Kubernetes source of truth, and a GitOps blog article saying one should use git as the source of truth. Those don't mean quite the same thing.
-
-
Replying to @bgrant0607 @aronchick and
The inconvenient truth is that the distributed system extends beyond the k8s API boundary, in this case into git. But the interfaces are more human oriented and hide many of the details required for a clean and correct integration. You can make it work, but it will be broken.
0 replies 0 retweets 2 likesThanks. Twitter will use this to make your timeline better. UndoUndo
-
-
-
Thanks. Twitter will use this to make your timeline better. UndoUndo
-
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.