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 d79d6df
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: _TODO.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -243,6 +243,8 @@ See comp images in Breadcrumbs component directory
243
243
244
244
- Newsletter component "home" and "page" variants needs work on spacing, "home" needs image added
245
245
246
+
- Determine if any of the python code blocks should have `#!/bin/python` added
247
+
246
248
## Header
247
249
248
250
- 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.
Copy file name to clipboardExpand all lines: src/content/articles/argocd-sync-failures-gitops-debugging-troubleshooting/pdf.mdx
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -226,6 +226,8 @@ When a dependency is missing, pods fail to start with characteristic error messa
226
226
The fix is usually straightforward: put the dependency in an earlier sync wave. But first you need to identify which dependency is missing:
227
227
228
228
```bash title="debug-dependency-failure.sh"
229
+
#!/bin/bash
230
+
229
231
# Check what secrets a deployment needs
230
232
kubectl get deployment app -o jsonpath='{.spec.template.spec.containers[*].envFrom[*].secretRef.name}'
231
233
@@ -402,6 +404,8 @@ Now that you understand _what_ can fail, let's talk about _how_ to investigate w
402
404
Start broad and narrow down. The ArgoCD CLI gives you a quick overview of what's happening:
403
405
404
406
```bash title="debug-step-1.sh"
407
+
#!/bin/bash
408
+
405
409
# Get application status overview
406
410
argocd app get myapp
407
411
@@ -425,6 +429,8 @@ The `--show-operation` flag shows the current or last sync operation, including
425
429
Once you know roughly where the failure is, check the logs for the relevant ArgoCD component. ArgoCD has several pods, and each handles different parts of the sync process:
@@ -455,6 +461,8 @@ Most sync failures show up in the application-controller logs. If your issue is
455
461
ArgoCD's view of the world comes from Kubernetes, so when ArgoCD reports a problem, verify what's actually happening in the cluster. Sometimes ArgoCD's status is stale, or the problem is a Kubernetes issue that ArgoCD is just reporting.
456
462
457
463
```bash title="debug-step-3.sh"
464
+
#!/bin/bash
465
+
458
466
# Check deployment rollout status
459
467
kubectl rollout status deployment/app -n myapp
460
468
@@ -480,6 +488,8 @@ The `kubectl describe` output for pods is often the most useful. Look at the Eve
480
488
Once you understand the failure, you need to fix it and verify the fix works. ArgoCD provides several options for testing changes before committing them:
481
489
482
490
```bash title="debug-step-4.sh"
491
+
#!/bin/bash
492
+
483
493
# Dry-run sync to see what would happen
484
494
argocd app sync myapp --dry-run
485
495
@@ -899,6 +909,8 @@ ArgoCD doesn't deploy your YAML files directly—it renders them through Helm, K
899
909
The most common surprise is values resolution in Helm. ArgoCD might be using different values files than you're testing locally, or environment-specific overrides might not be applied in the order you expect.
900
910
901
911
```bash title="debug-manifest-generation.sh"
912
+
#!/bin/bash
913
+
902
914
# See what ArgoCD generates from your repo
903
915
argocd app manifests myapp
904
916
@@ -927,6 +939,8 @@ The `argocd app manifests` command is your friend here—it shows you exactly wh
927
939
Sometimes ArgoCD's internal state becomes inconsistent with reality. This can happen after failed upgrades, network partitions, or manual resource modifications that confuse the controller. The symptoms vary—perpetual OutOfSync, missing resources in the UI, or sync operations that silently do nothing.
Copy file name to clipboardExpand all lines: src/content/articles/eol-runtime-upgrade-dependency-hell-migration/pdf.mdx
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -95,6 +95,8 @@ The diagram shows a typical pattern: three direct dependencies fan out to ten tr
95
95
Your first step is making this hidden graph visible. Every package manager provides tooling to dump the full tree and trace why a particular package exists in your dependency graph.
96
96
97
97
```bash title="visualizing-dependency-depth.sh"
98
+
#!/bin/bash
99
+
98
100
# npm: Show full dependency tree
99
101
npm ls --all
100
102
@@ -218,6 +220,8 @@ Web Forms deserves special mention. There is no migration path. If your applicat
218
220
Microsoft provides tooling to help analyze and automate parts of the migration. The .NET Upgrade Assistant scans your solution, identifies incompatibilities, and can perform some automated transformations.
219
221
220
222
```bash title="dotnet-upgrade-assistant.sh"
223
+
#!/bin/bash
224
+
221
225
# Install the .NET Upgrade Assistant
222
226
dotnet tool install -g upgrade-assistant
223
227
@@ -274,6 +278,8 @@ Native modules are compiled C++ addons that link against Node's internal APIs. W
274
278
The first step is identifying which packages in your dependency tree include native code. Any package with a `.node` file in its build output is a native module.
275
279
276
280
```bash title="find-native-modules.sh"
281
+
#!/bin/bash
282
+
277
283
# List all native modules in your project
278
284
find node_modules -name "*.node" -type f 2>/dev/null | \
Copy file name to clipboardExpand all lines: src/content/articles/helm-release-management-drift-detection-debugging/pdf.mdx
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -122,6 +122,8 @@ Knowing drift happens isn't enough—you need to catch it before it causes probl
122
122
The `helm-diff` plugin is the quickest way to compare Helm's view against cluster reality. It shows what would change on an upgrade, but more importantly for drift detection, it can compare the current release against live state.
Copy file name to clipboardExpand all lines: src/content/articles/kubernetes-cluster-upgrade-playbook-risk-reduction/pdf.mdx
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,6 +46,8 @@ _Cluster health_ establishes your baseline. All nodes should show Ready status.
46
46
_Backup and recovery_ is your safety net. Take an etcd snapshot before starting. Document current cluster state with `kubectl get all -A -o yaml`. Most importantly, document and _test_ your rollback procedure in a non-production environment before you need it.
47
47
48
48
```bash
49
+
#!/bin/bash
50
+
49
51
# Take etcd backup before upgrade (kubeadm clusters)
50
52
etcdctl snapshot save /backup/etcd-pre-upgrade-$(date +%Y%m%d).db \
_Phase 4: Worker nodes_ (10-15 minutes per node). For each worker node: cordon it (prevent new pod scheduling), drain it (evict existing pods), upgrade the kubelet, then uncordon it. Verify the node shows Ready before moving to the next one.
149
151
150
152
```bash
153
+
#!/bin/bash
154
+
151
155
# Worker node upgrade sequence
152
156
NODE="worker-1"
153
157
kubectl cordon $NODE
@@ -230,6 +234,8 @@ For production clusters, I recommend blue-green node pools. The sequence:
230
234
7. If healthy, delete the old pool. If not, uncordon the old pool and delete the new one.
231
235
232
236
```bash title="blue-green-node-pool.sh"
237
+
#!/bin/bash
238
+
233
239
# Blue-green node pool upgrade for EKS
234
240
OLD_POOL="workers-1-28"
235
241
NEW_POOL="workers-1-29"
@@ -270,6 +276,8 @@ Control plane rollback is the nuclear option. It's disruptive, risky, and should
270
276
For self-managed clusters (kubeadm), rollback means restoring from the etcd backup you took before upgrading. This is why that backup isn't optional.
@@ -376,6 +384,8 @@ I organize post-upgrade checks into five categories, run in order of criticality
376
384
_Infrastructure checks_ verify the cluster itself is healthy. All nodes should be Ready, control plane components should show healthy status, and the API server should respond quickly. These are blocking - don't proceed if any fail.
Copy file name to clipboardExpand all lines: src/content/articles/kubernetes-dns-debugging-ndots-coredns-troubleshooting/pdf.mdx
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -90,6 +90,8 @@ The key components work together: every pod gets a `/etc/resolv.conf` that point
90
90
Every debugging session should start by examining the pod's DNS configuration. The `resolv.conf` file tells you exactly which nameserver the pod uses, which search domains get appended, and crucially, the ndots setting that controls when those search domains apply.
@@ -195,6 +197,8 @@ The difference between `ndots:5` and `ndots:2` for an external API call is three
195
197
Before optimizing, measure the actual impact in your cluster. The difference between `nslookup api.stripe.com` and `nslookup api.stripe.com.` tells you exactly how much overhead the search domains add.
196
198
197
199
```bash title="launch-debug-pod.sh"
200
+
#!/bin/bash
201
+
198
202
# Spin up a debug pod with DNS tools
199
203
kubectl run dns-debug --image=nicolaka/netshoot --rm -it --restart=Never -- bash
200
204
```
@@ -204,6 +208,8 @@ Code: Launch a debug pod with DNS tools.
204
208
Once you're inside the pod, compare resolution times with and without the trailing dot:
0 commit comments