You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 388d8de
Browse filesBrowse the repository at this point in the historyBrowse files
- Moving the scroll bar up quickly with the mouse seems to make the header logic break - the Switcher component and Breadcrumbs are hidden under the header
230
-
231
229
## List Component
232
230
233
231
- Task list checked variant Markdown in dark theme is awkward, it has a dark shadow
- Need to improve the "squish" animation where the header reduces in size on scroll down, and returns to full size on scroll up. Maybe reduce and expand the text and search / themepicker / hamburger menu sizes in place, and then slide them horizontally.
242
240
241
+
- Moving the scroll bar up quickly with the mouse seems to make the header logic break - the Switcher component and Breadcrumbs are hidden under the header
- Add a "Preview Special" item to our Download CTA that lets the user know the Deep Dive content can be previewed in HTML format, and offer a switch to it.
254
254
255
-
-How can we handle footnotes in List components? src/content/articles/kubernetes-multi-cluster-fleet-management-configuration/pdf.mdx line 80
255
+
-Tags should break more evenly across two lines when there's a lot of them, instead of forcing the author name and date to break across two lines: platform-engineering-metrics-lead-time-developer-friction/index.mdx
256
256
257
257
- Need to update Case Studies with lists and tables too
Copy file name to clipboardExpand all lines: src/content/articles/kubernetes-multi-cluster-fleet-management-configuration/pdf.mdx
+26-21Lines changed: 26 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -78,27 +78,32 @@ Organizations arrive at multi-cluster architectures for different reasons, and t
78
78
79
79
Every multi-cluster strategy sits somewhere on a spectrum from "all clusters are identical" to "each cluster is independent." Neither extreme works well in practice.
80
80
81
-
<List
82
-
variant="numbered-with-background-list"
83
-
items={[
84
-
{
85
-
lead: "Fully consistent",
86
-
text: "means all clusters get exactly the same configuration. This is simple to reason about and guarantees reproducibility, but it's inflexible. You end up over-provisioning dev and staging to match production, or you can't tune production for its actual load patterns. This approach only works for small fleets with simple applications.",
87
-
},
88
-
{
89
-
lead: "Layered configuration",
90
-
text: `uses a base configuration with environment-specific overrides. This is the sweet spot for most organizations. You define what's shared (security policies, monitoring stack, core add-ons) and what varies (replica counts, resource limits, feature flags). Kustomize overlays and Helm values files are the typical implementation. The risk is "override explosion"—so many layers of patches that nobody can trace what a cluster actually runs.`,
91
-
},
92
-
{
93
-
lead: "Policy-governed",
94
-
text: "configuration sets guardrails rather than identical configs. Teams can customize their clusters within bounds enforced by OPA/Gatekeeper[^opa-gatekeeper] or Kyverno[^kyverno]. This enables innovation and team autonomy, but drift happens within the policy bounds. Debugging becomes harder because clusters are intentionally different.",
95
-
},
96
-
{
97
-
lead: "Fully flexible",
98
-
text: "means each cluster is independent, with its own GitOps repo and configuration. Maximum autonomy, maximum chaos. Security risks emerge when teams deviate from baselines. This only works with truly autonomous teams who don't need cross-cluster consistency.",
99
-
},
100
-
]}
101
-
/>
81
+
<Listvariant="numbered-with-background-list">
82
+
<ListItemlead="Fully consistent">
83
+
Means all clusters get exactly the same configuration. This is simple to reason about and guarantees
84
+
reproducibility, but it's inflexible. You end up over-provisioning dev and staging to match
85
+
production, or you can't tune production for its actual load patterns. This approach only works for
86
+
small fleets with simple applications.
87
+
</ListItem>
88
+
<ListItemlead="Layered configuration">
89
+
Uses a base configuration with environment-specific overrides. This is the sweet spot for most
90
+
organizations. You define what's shared (security policies, monitoring stack, core add-ons) and
91
+
what varies (replica counts, resource limits, feature flags). Kustomize overlays and Helm values
92
+
files are the typical implementation. The risk is "override explosion"—so many layers of patches
93
+
that nobody can trace what a cluster actually runs.
94
+
</ListItem>
95
+
<ListItemlead="Policy-governed">
96
+
Configuration sets guardrails rather than identical configs. Teams can customize their clusters
97
+
within bounds enforced by OPA/Gatekeeper[^opa-gatekeeper] or Kyverno[^kyverno]. This enables
98
+
innovation and team autonomy, but drift happens within the policy bounds. Debugging becomes harder
99
+
because clusters are intentionally different.
100
+
</ListItem>
101
+
<ListItemlead="Fully flexible">
102
+
Means each cluster is independent, with its own GitOps repo and configuration. Maximum autonomy,
103
+
maximum chaos. Security risks emerge when teams deviate from baselines. This only works with truly
104
+
autonomous teams who don't need cross-cluster consistency.
105
+
</ListItem>
106
+
</List>
102
107
103
108
[^opa-gatekeeper]: OPA (Open Policy Agent) is an open-source, general-purpose policy engine that unifies policy enforcement across the stack, using a declarative language called Rego to define complex rules. Gatekeeper is a specialized project that integrates OPA into Kubernetes — it acts as a validating admission controller, intercepting requests to the Kubernetes API and checking them against OPA policies before resources are created or modified.
0 commit comments