@haposoft/cafekit 0.16.0-rc.7 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +116 -27
- package/bin/__tests__/codex-hooks-ownership.test.js +239 -0
- package/bin/__tests__/codex-hooks.test.js +295 -0
- package/bin/__tests__/codex-native.test.js +2289 -34
- package/bin/__tests__/develop-contract.test.js +400 -23
- package/bin/__tests__/installer-safety.test.js +3 -3
- package/bin/__tests__/optional-skill-inventory.test.js +249 -0
- package/bin/__tests__/output-styles.test.js +214 -0
- package/bin/__tests__/package-inventory.test.js +2131 -16
- package/bin/__tests__/runtime-schema.test.js +111 -0
- package/bin/__tests__/secret-output-guardrail.test.js +122 -0
- package/bin/__tests__/skill-routing-source.test.js +172 -0
- package/bin/__tests__/specs-v2-execution-closeout.test.js +1 -1
- package/bin/install.js +10 -0
- package/bin/lib/codex-install.js +170 -5
- package/bin/lib/context.js +14 -0
- package/bin/lib/i18n.js +12 -6
- package/bin/lib/skill-deps.js +5 -5
- package/bin/phases/claude-runtime.js +23 -0
- package/bin/phases/claude-settings.js +8 -0
- package/bin/phases/codex-hooks.js +156 -0
- package/bin/phases/codex-runtime.js +29 -38
- package/bin/phases/copy-payload.js +8 -2
- package/bin/phases/select-skill-bundles.js +96 -0
- package/bin/phases/skill-inventory.js +71 -0
- package/bin/phases/skills-setup.js +9 -2
- package/bin/phases/write-metadata.js +8 -5
- package/package.json +8 -2
- package/src/claude/CLAUDE.md +3 -3
- package/src/claude/agents/brainstormer.md +52 -69
- package/src/claude/agents/code-auditor.md +32 -14
- package/src/claude/agents/debugger.md +35 -20
- package/src/claude/agents/deployer.md +12 -5
- package/src/claude/agents/docs-keeper.md +11 -1
- package/src/claude/agents/implementer.md +25 -13
- package/src/claude/agents/inspector.md +6 -3
- package/src/claude/agents/project-manager.md +1 -1
- package/src/claude/agents/researcher.md +26 -55
- package/src/claude/agents/spec-maker.md +24 -13
- package/src/claude/agents/strategist.md +52 -0
- package/src/claude/agents/test-runner.md +117 -132
- package/src/claude/agents/ui-ux-designer.md +1 -1
- package/src/claude/hooks/__tests__/fixtures/statusline-default.golden +1 -0
- package/src/claude/hooks/__tests__/precompact.test.js +158 -0
- package/src/claude/hooks/__tests__/spec-gate.test.js +87 -4
- package/src/claude/hooks/__tests__/state.test.js +254 -3
- package/src/claude/hooks/__tests__/statusline.test.js +196 -0
- package/src/claude/hooks/agent.cjs +1 -1
- package/src/claude/hooks/docs-sync.cjs +12 -10
- package/src/claude/hooks/inspect-block.cjs +1 -1
- package/src/claude/hooks/lib/config.cjs +3 -0
- package/src/claude/hooks/lib/hook-state-dir.cjs +39 -0
- package/src/claude/hooks/lib/secret-keywords.cjs +42 -0
- package/src/claude/hooks/precompact.cjs +105 -0
- package/src/claude/hooks/rules.cjs +1 -1
- package/src/claude/hooks/secret-output-guardrail.cjs +43 -0
- package/src/claude/hooks/session.cjs +27 -1
- package/src/claude/hooks/spec-gate.cjs +3 -3
- package/src/claude/hooks/spec-state.cjs +32 -5
- package/src/claude/hooks/state.cjs +1 -1
- package/src/claude/hooks/task-scaffold-guard.cjs +1 -1
- package/src/claude/hooks/usage.cjs +1 -1
- package/src/claude/migration-manifest.json +29 -15
- package/src/claude/output-styles/coding-level-0-eli5.md +103 -0
- package/src/claude/output-styles/coding-level-1-junior.md +124 -0
- package/src/claude/output-styles/coding-level-2-mid.md +146 -0
- package/src/claude/output-styles/coding-level-3-senior.md +148 -0
- package/src/claude/output-styles/coding-level-4-lead.md +159 -0
- package/src/claude/output-styles/coding-level-5-god.md +91 -0
- package/src/claude/references/debugger/core-philosophy.md +5 -3
- package/src/claude/references/debugger/frontend-verification.md +2 -2
- package/src/claude/references/debugger/log-ci-analysis.md +13 -1
- package/src/claude/references/debugger/parallel-agent-hydration.md +19 -34
- package/src/claude/references/debugger/performance-diagnostics.md +2 -2
- package/src/claude/references/debugger/root-cause-tracing.md +37 -6
- package/src/claude/references/debugger/side-effect-gate.md +3 -1
- package/src/claude/references/debugger/verification-protocol.md +13 -12
- package/src/claude/rules/orchestrator.md +7 -1
- package/src/claude/rules/process-management.md +39 -0
- package/src/claude/rules/review-audit-self-decision.md +48 -0
- package/src/claude/rules/skill-domain-routing.md +26 -24
- package/src/claude/rules/skill-workflow-routing.md +22 -14
- package/src/claude/rules/workflow.md +3 -3
- package/src/claude/runtime.json +1 -0
- package/src/claude/runtime.schema.json +205 -0
- package/src/claude/scripts/generate-skill-catalog.cjs +156 -122
- package/src/claude/scripts/provenance.cjs +18 -5
- package/src/claude/scripts/spec-receipt.cjs +76 -21
- package/src/claude/scripts/spec-resolver.cjs +144 -4
- package/src/claude/scripts/workflow-policy.cjs +1 -1
- package/src/claude/settings/settings.json +16 -0
- package/src/claude/skills/agent-browser/SKILL.md +1 -1
- package/src/claude/skills/ai-multimodal/SKILL.md +1 -1
- package/src/claude/skills/brainstorm/SKILL.md +193 -172
- package/src/claude/skills/brainstorm/references/question-framework.md +105 -167
- package/src/claude/skills/chrome-devtools/SKILL.md +1 -1
- package/src/claude/skills/code-review/SKILL.md +43 -25
- package/src/claude/skills/code-review/references/spec-compliance-review.md +3 -4
- package/src/claude/skills/code-review/references/verification-gate.md +1 -1
- package/src/claude/skills/debug/SKILL.md +48 -19
- package/src/claude/skills/delegate/SKILL.md +1 -1
- package/src/claude/skills/develop/SKILL.md +92 -65
- package/src/claude/skills/develop/references/parallel-waves.md +36 -63
- package/src/claude/skills/develop/references/quality-gate.md +31 -4
- package/src/claude/skills/develop/references/subagent-patterns.md +21 -7
- package/src/claude/skills/docs/SKILL.md +42 -23
- package/src/claude/skills/docs/references/init-workflow.md +4 -4
- package/src/claude/skills/docs/references/reconstruct-workflow.md +6 -6
- package/src/claude/skills/docs/references/standard-docs-workflow.md +6 -2
- package/src/claude/skills/docs/references/summarize-workflow.md +2 -2
- package/src/claude/skills/docs/references/update-workflow.md +9 -7
- package/src/claude/skills/docs/templates/requirements-as-is.md +1 -1
- package/src/claude/skills/docx/SKILL.md +1 -1
- package/src/claude/skills/git/SKILL.md +1 -1
- package/src/claude/skills/git/references/commit-protocols.md +1 -1
- package/src/claude/skills/git/references/finish-branch.md +1 -1
- package/src/claude/skills/hotfix/SKILL.md +159 -170
- package/src/claude/skills/hotfix/references/diagnosis-protocol.md +14 -9
- package/src/claude/skills/hotfix/references/parallel-patterns.md +27 -13
- package/src/claude/skills/hotfix/references/prevention-gate.md +5 -0
- package/src/claude/skills/hotfix/references/review-cycle.md +21 -15
- package/src/claude/skills/hotfix/references/workflow-specialized.md +53 -21
- package/src/claude/skills/inspect/SKILL.md +55 -46
- package/src/claude/skills/inspect/references/internal-inspection.md +21 -5
- package/src/claude/skills/loop/SKILL.md +114 -0
- package/src/claude/skills/loop/references/bounded-loop-protocol.md +104 -0
- package/src/claude/skills/loop/references/metric-and-guard-contract.md +76 -0
- package/src/claude/skills/pdf/SKILL.md +1 -1
- package/src/claude/skills/pptx/SKILL.md +1 -1
- package/src/claude/skills/question/SKILL.md +16 -13
- package/src/claude/skills/research/SKILL.md +70 -43
- package/src/claude/skills/route/SKILL.md +94 -0
- package/src/claude/skills/route/references/agent-timing.md +46 -0
- package/src/claude/skills/route/references/chaining-patterns.md +53 -0
- package/src/claude/skills/route/references/task-taxonomy.md +48 -0
- package/src/claude/skills/specs/SKILL.md +48 -57
- package/src/claude/skills/specs/references/review.md +26 -8
- package/src/claude/skills/specs/references/templates.md +76 -31
- package/src/claude/skills/specs/templates/requirements-init.md +1 -1
- package/src/claude/skills/specs/templates/research.md +2 -2
- package/src/claude/skills/sync/SKILL.md +6 -6
- package/src/claude/skills/sync/references/sync-protocols.md +1 -1
- package/src/claude/skills/test/SKILL.md +120 -120
- package/src/claude/skills/test/references/execution-strategy.md +208 -361
- package/src/claude/skills/test/references/failure-triage.md +55 -121
- package/src/claude/skills/test/references/test-memory.md +20 -34
- package/src/claude/skills/ui-ux-pro-max/SKILL.md +1 -1
- package/src/claude/skills/web-testing/SKILL.md +1 -1
- package/src/claude/skills/xlsx/SKILL.md +1 -1
- package/src/claude/status.cjs +135 -33
- package/src/codex/AGENTS.md +14 -4
- package/src/codex/hooks/docs-sync.cjs +8 -3
- package/src/codex/hooks/lib/hook-context.cjs +18 -4
- package/src/codex/hooks/rules.cjs +29 -1
- package/src/codex/hooks/secret-output-guardrail.cjs +30 -0
- package/src/codex/hooks/spec-gate.cjs +3 -8
- package/src/codex/hooks/spec-state.cjs +34 -5
- package/src/codex/hooks.json +5 -0
- package/src/codex/runtime.json +2 -0
- package/src/common/.env.example +1 -1
- package/src/claude/skills/backend-development/SKILL.md +0 -101
- package/src/claude/skills/backend-development/references/backend-api-design.md +0 -495
- package/src/claude/skills/backend-development/references/backend-architecture.md +0 -454
- package/src/claude/skills/backend-development/references/backend-authentication.md +0 -338
- package/src/claude/skills/backend-development/references/backend-code-quality.md +0 -659
- package/src/claude/skills/backend-development/references/backend-debugging.md +0 -904
- package/src/claude/skills/backend-development/references/backend-devops.md +0 -491
- package/src/claude/skills/backend-development/references/backend-mindset.md +0 -387
- package/src/claude/skills/backend-development/references/backend-performance.md +0 -397
- package/src/claude/skills/backend-development/references/backend-security.md +0 -342
- package/src/claude/skills/backend-development/references/backend-technologies.md +0 -256
- package/src/claude/skills/backend-development/references/backend-testing.md +0 -429
- package/src/claude/skills/devops/.env.example +0 -76
- package/src/claude/skills/devops/SKILL.md +0 -102
- package/src/claude/skills/devops/references/browser-rendering.md +0 -305
- package/src/claude/skills/devops/references/cloudflare-d1-kv.md +0 -123
- package/src/claude/skills/devops/references/cloudflare-platform.md +0 -271
- package/src/claude/skills/devops/references/cloudflare-r2-storage.md +0 -280
- package/src/claude/skills/devops/references/cloudflare-workers-advanced.md +0 -312
- package/src/claude/skills/devops/references/cloudflare-workers-apis.md +0 -309
- package/src/claude/skills/devops/references/cloudflare-workers-basics.md +0 -418
- package/src/claude/skills/devops/references/docker-basics.md +0 -297
- package/src/claude/skills/devops/references/docker-compose.md +0 -292
- package/src/claude/skills/devops/references/gcloud-platform.md +0 -297
- package/src/claude/skills/devops/references/gcloud-services.md +0 -304
- package/src/claude/skills/devops/references/kubernetes-basics.md +0 -95
- package/src/claude/skills/devops/references/kubernetes-helm-advanced.md +0 -70
- package/src/claude/skills/devops/references/kubernetes-helm.md +0 -81
- package/src/claude/skills/devops/references/kubernetes-kubectl.md +0 -74
- package/src/claude/skills/devops/references/kubernetes-security-advanced.md +0 -94
- package/src/claude/skills/devops/references/kubernetes-security.md +0 -89
- package/src/claude/skills/devops/references/kubernetes-troubleshooting-advanced.md +0 -74
- package/src/claude/skills/devops/references/kubernetes-troubleshooting.md +0 -49
- package/src/claude/skills/devops/references/kubernetes-workflows-advanced.md +0 -75
- package/src/claude/skills/devops/references/kubernetes-workflows.md +0 -76
- package/src/claude/skills/devops/scripts/cloudflare_deploy.py +0 -269
- package/src/claude/skills/devops/scripts/docker_optimize.py +0 -332
- package/src/claude/skills/devops/scripts/requirements.txt +0 -20
- package/src/claude/skills/devops/scripts/tests/requirements.txt +0 -3
- package/src/claude/skills/devops/scripts/tests/test_cloudflare_deploy.py +0 -285
- package/src/claude/skills/devops/scripts/tests/test_docker_optimize.py +0 -436
- package/src/claude/skills/frontend-design/SKILL.md +0 -135
- package/src/claude/skills/frontend-design/references/ai-multimodal-overview.md +0 -165
- package/src/claude/skills/frontend-design/references/analysis-best-practices.md +0 -80
- package/src/claude/skills/frontend-design/references/analysis-prompts.md +0 -141
- package/src/claude/skills/frontend-design/references/analysis-techniques.md +0 -118
- package/src/claude/skills/frontend-design/references/animejs.md +0 -396
- package/src/claude/skills/frontend-design/references/anti-slop-rules.md +0 -103
- package/src/claude/skills/frontend-design/references/asset-generation.md +0 -337
- package/src/claude/skills/frontend-design/references/bento-motion-engine.md +0 -142
- package/src/claude/skills/frontend-design/references/design-extraction-overview.md +0 -71
- package/src/claude/skills/frontend-design/references/extraction-best-practices.md +0 -141
- package/src/claude/skills/frontend-design/references/extraction-output-templates.md +0 -162
- package/src/claude/skills/frontend-design/references/extraction-prompts.md +0 -127
- package/src/claude/skills/frontend-design/references/magicui-components.md +0 -129
- package/src/claude/skills/frontend-design/references/performance-guardrails.md +0 -169
- package/src/claude/skills/frontend-design/references/premium-design-patterns.md +0 -93
- package/src/claude/skills/frontend-design/references/redesign-audit-checklist.md +0 -114
- package/src/claude/skills/frontend-design/references/technical-accessibility.md +0 -119
- package/src/claude/skills/frontend-design/references/technical-best-practices.md +0 -97
- package/src/claude/skills/frontend-design/references/technical-optimization.md +0 -44
- package/src/claude/skills/frontend-design/references/technical-overview.md +0 -90
- package/src/claude/skills/frontend-design/references/technical-workflows.md +0 -150
- package/src/claude/skills/frontend-design/references/visual-analysis-overview.md +0 -95
- package/src/claude/skills/frontend-design/references/workflow-3d.md +0 -102
- package/src/claude/skills/frontend-design/references/workflow-describe.md +0 -87
- package/src/claude/skills/frontend-design/references/workflow-immersive.md +0 -87
- package/src/claude/skills/frontend-design/references/workflow-quick.md +0 -57
- package/src/claude/skills/frontend-design/references/workflow-screenshot.md +0 -63
- package/src/claude/skills/frontend-design/references/workflow-video.md +0 -74
- package/src/claude/skills/frontend-development/SKILL.md +0 -406
- package/src/claude/skills/frontend-development/resources/common-patterns.md +0 -331
- package/src/claude/skills/frontend-development/resources/complete-examples.md +0 -872
- package/src/claude/skills/frontend-development/resources/component-patterns.md +0 -502
- package/src/claude/skills/frontend-development/resources/data-fetching.md +0 -767
- package/src/claude/skills/frontend-development/resources/file-organization.md +0 -502
- package/src/claude/skills/frontend-development/resources/loading-and-error-states.md +0 -501
- package/src/claude/skills/frontend-development/resources/performance.md +0 -406
- package/src/claude/skills/frontend-development/resources/routing-guide.md +0 -364
- package/src/claude/skills/frontend-development/resources/styling-guide.md +0 -428
- package/src/claude/skills/frontend-development/resources/typescript-standards.md +0 -418
- package/src/claude/skills/mobile-development/SKILL.md +0 -218
- package/src/claude/skills/mobile-development/references/mobile-android.md +0 -604
- package/src/claude/skills/mobile-development/references/mobile-best-practices.md +0 -544
- package/src/claude/skills/mobile-development/references/mobile-debugging.md +0 -1089
- package/src/claude/skills/mobile-development/references/mobile-frameworks.md +0 -465
- package/src/claude/skills/mobile-development/references/mobile-ios.md +0 -496
- package/src/claude/skills/mobile-development/references/mobile-mindset.md +0 -542
- package/src/claude/skills/react-best-practices/AGENTS.md +0 -2249
- package/src/claude/skills/react-best-practices/README.md +0 -123
- package/src/claude/skills/react-best-practices/SKILL.md +0 -128
- package/src/claude/skills/react-best-practices/metadata.json +0 -15
- package/src/claude/skills/react-best-practices/rules/_sections.md +0 -46
- package/src/claude/skills/react-best-practices/rules/_template.md +0 -28
- package/src/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
- package/src/claude/skills/react-best-practices/rules/advanced-use-latest.md +0 -49
- package/src/claude/skills/react-best-practices/rules/async-api-routes.md +0 -38
- package/src/claude/skills/react-best-practices/rules/async-defer-await.md +0 -80
- package/src/claude/skills/react-best-practices/rules/async-dependencies.md +0 -36
- package/src/claude/skills/react-best-practices/rules/async-parallel.md +0 -28
- package/src/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +0 -99
- package/src/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +0 -59
- package/src/claude/skills/react-best-practices/rules/bundle-conditional.md +0 -31
- package/src/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +0 -49
- package/src/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
- package/src/claude/skills/react-best-practices/rules/bundle-preload.md +0 -50
- package/src/claude/skills/react-best-practices/rules/client-event-listeners.md +0 -74
- package/src/claude/skills/react-best-practices/rules/client-swr-dedup.md +0 -56
- package/src/claude/skills/react-best-practices/rules/js-batch-dom-css.md +0 -82
- package/src/claude/skills/react-best-practices/rules/js-cache-function-results.md +0 -80
- package/src/claude/skills/react-best-practices/rules/js-cache-property-access.md +0 -28
- package/src/claude/skills/react-best-practices/rules/js-cache-storage.md +0 -70
- package/src/claude/skills/react-best-practices/rules/js-combine-iterations.md +0 -32
- package/src/claude/skills/react-best-practices/rules/js-early-exit.md +0 -50
- package/src/claude/skills/react-best-practices/rules/js-hoist-regexp.md +0 -45
- package/src/claude/skills/react-best-practices/rules/js-index-maps.md +0 -37
- package/src/claude/skills/react-best-practices/rules/js-length-check-first.md +0 -49
- package/src/claude/skills/react-best-practices/rules/js-min-max-loop.md +0 -82
- package/src/claude/skills/react-best-practices/rules/js-set-map-lookups.md +0 -24
- package/src/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +0 -57
- package/src/claude/skills/react-best-practices/rules/rendering-activity.md +0 -26
- package/src/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
- package/src/claude/skills/react-best-practices/rules/rendering-conditional-render.md +0 -40
- package/src/claude/skills/react-best-practices/rules/rendering-content-visibility.md +0 -38
- package/src/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
- package/src/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
- package/src/claude/skills/react-best-practices/rules/rendering-svg-precision.md +0 -28
- package/src/claude/skills/react-best-practices/rules/rerender-defer-reads.md +0 -39
- package/src/claude/skills/react-best-practices/rules/rerender-dependencies.md +0 -45
- package/src/claude/skills/react-best-practices/rules/rerender-derived-state.md +0 -29
- package/src/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +0 -74
- package/src/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
- package/src/claude/skills/react-best-practices/rules/rerender-memo.md +0 -44
- package/src/claude/skills/react-best-practices/rules/rerender-transitions.md +0 -40
- package/src/claude/skills/react-best-practices/rules/server-after-nonblocking.md +0 -73
- package/src/claude/skills/react-best-practices/rules/server-cache-lru.md +0 -41
- package/src/claude/skills/react-best-practices/rules/server-cache-react.md +0 -26
- package/src/claude/skills/react-best-practices/rules/server-parallel-fetching.md +0 -79
- package/src/claude/skills/react-best-practices/rules/server-serialization.md +0 -38
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Helm Advanced - Templates & Hooks
|
|
2
|
-
|
|
3
|
-
## Template Variables
|
|
4
|
-
```yaml
|
|
5
|
-
# templates/deployment.yaml
|
|
6
|
-
apiVersion: apps/v1
|
|
7
|
-
kind: Deployment
|
|
8
|
-
version: "1.0.0"
|
|
9
|
-
spec:
|
|
10
|
-
replicas: {{ .Values.replicaCount }}
|
|
11
|
-
template:
|
|
12
|
-
spec:
|
|
13
|
-
containers:
|
|
14
|
-
- name: {{ .Chart.Name }}
|
|
15
|
-
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
16
|
-
{{- if .Values.resources }}
|
|
17
|
-
resources:
|
|
18
|
-
{{- toYaml .Values.resources | nindent 10 }}
|
|
19
|
-
{{- end }}
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Helper Templates
|
|
23
|
-
```yaml
|
|
24
|
-
# templates/_helpers.tpl
|
|
25
|
-
{{- define "mychart.fullname" -}}
|
|
26
|
-
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" }}
|
|
27
|
-
{{- end }}
|
|
28
|
-
|
|
29
|
-
{{- define "mychart.labels" -}}
|
|
30
|
-
app.kubernetes.io/name: {{ .Chart.Name }}
|
|
31
|
-
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
32
|
-
{{- end }}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Hooks
|
|
36
|
-
```yaml
|
|
37
|
-
apiVersion: batch/v1
|
|
38
|
-
kind: Job
|
|
39
|
-
version: "1.0.0"
|
|
40
|
-
spec:
|
|
41
|
-
template:
|
|
42
|
-
spec:
|
|
43
|
-
containers:
|
|
44
|
-
- name: post-install
|
|
45
|
-
command: ["/bin/sh", "-c", "echo 'Done'"]
|
|
46
|
-
restartPolicy: Never
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Hook types: `pre-install`, `post-install`, `pre-upgrade`, `post-upgrade`
|
|
50
|
-
|
|
51
|
-
## Packaging
|
|
52
|
-
```bash
|
|
53
|
-
helm package mychart
|
|
54
|
-
helm repo index . --url https://charts.example.com
|
|
55
|
-
helm push mychart-1.0.0.tgz oci://registry.example.com/helm
|
|
56
|
-
helm repo add myrepo https://charts.example.com
|
|
57
|
-
helm install myapp myrepo/mychart
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## Commands
|
|
61
|
-
|
|
62
|
-
| Command | Purpose |
|
|
63
|
-
|---------|---------|
|
|
64
|
-
| `helm create` | Create |
|
|
65
|
-
| `helm lint` | Validate |
|
|
66
|
-
| `helm template` | Render |
|
|
67
|
-
| `helm install` | Deploy |
|
|
68
|
-
| `helm upgrade` | Update |
|
|
69
|
-
| `helm rollback` | Revert |
|
|
70
|
-
| `helm uninstall` | Remove |
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Helm Package Management
|
|
2
|
-
|
|
3
|
-
## Core Concepts
|
|
4
|
-
|
|
5
|
-
- **Chart:** Helm package with K8s resource definitions
|
|
6
|
-
- **Repository:** Collection of charts
|
|
7
|
-
- **Release:** Deployed instance of a chart
|
|
8
|
-
- **Values:** Configuration that parameterizes charts
|
|
9
|
-
|
|
10
|
-
## Chart Structure
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
mychart/
|
|
14
|
-
├── Chart.yaml # Metadata
|
|
15
|
-
├── values.yaml # Default values
|
|
16
|
-
├── charts/ # Dependencies
|
|
17
|
-
├── templates/
|
|
18
|
-
│ ├── deployment.yaml
|
|
19
|
-
│ ├── service.yaml
|
|
20
|
-
│ ├── _helpers.tpl # Template helpers
|
|
21
|
-
│ └── NOTES.txt
|
|
22
|
-
└── values.schema.json # Validation (optional)
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Essential Commands
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
helm create mychart # Create chart
|
|
29
|
-
helm lint mychart # Validate
|
|
30
|
-
helm template myrelease ./mychart # Render locally
|
|
31
|
-
helm install myrelease ./mychart --dry-run --debug # Preview
|
|
32
|
-
|
|
33
|
-
helm install myrelease ./mychart
|
|
34
|
-
helm install myrelease ./mychart -f values-prod.yaml
|
|
35
|
-
helm install myrelease ./mychart --set replicaCount=3
|
|
36
|
-
|
|
37
|
-
helm upgrade myrelease ./mychart
|
|
38
|
-
helm rollback myrelease 1
|
|
39
|
-
helm list
|
|
40
|
-
helm uninstall myrelease
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Multi-Environment
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
# Files: values.yaml, values-dev.yaml, values-prod.yaml
|
|
47
|
-
helm install myapp ./mychart -f values.yaml -f values-prod.yaml
|
|
48
|
-
helm install myapp ./mychart --set replicaCount=3 --set image.tag=v1.2.3
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## values.yaml Example
|
|
52
|
-
|
|
53
|
-
```yaml
|
|
54
|
-
replicaCount: 2
|
|
55
|
-
image:
|
|
56
|
-
repository: myapp
|
|
57
|
-
tag: "1.0.0"
|
|
58
|
-
pullPolicy: IfNotPresent
|
|
59
|
-
service:
|
|
60
|
-
type: ClusterIP
|
|
61
|
-
port: 8080
|
|
62
|
-
resources:
|
|
63
|
-
limits: { cpu: 500m, memory: 512Mi }
|
|
64
|
-
requests: { cpu: 250m, memory: 256Mi }
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Dependencies
|
|
68
|
-
|
|
69
|
-
```yaml
|
|
70
|
-
# Chart.yaml
|
|
71
|
-
dependencies:
|
|
72
|
-
- name: postgresql
|
|
73
|
-
version: "12.1.0"
|
|
74
|
-
repository: "https://charts.bitnami.com/bitnami"
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
helm dependency update mychart
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
See `kubernetes-helm-advanced.md` for templates, hooks, and packaging.
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# kubectl Essential Commands
|
|
2
|
-
|
|
3
|
-
## Cluster & Node
|
|
4
|
-
```bash
|
|
5
|
-
kubectl cluster-info
|
|
6
|
-
kubectl get nodes
|
|
7
|
-
kubectl describe node <node-name>
|
|
8
|
-
kubectl top nodes
|
|
9
|
-
kubectl drain <node-name> --ignore-daemonsets
|
|
10
|
-
kubectl uncordon <node-name>
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Pod Operations
|
|
14
|
-
```bash
|
|
15
|
-
kubectl get pods -A # All namespaces
|
|
16
|
-
kubectl get pods -o wide # Extended info
|
|
17
|
-
kubectl describe pod <pod-name>
|
|
18
|
-
kubectl logs <pod-name>
|
|
19
|
-
kubectl logs -f <pod-name> # Follow
|
|
20
|
-
kubectl logs --previous <pod-name> # Previous crash
|
|
21
|
-
kubectl exec -it <pod-name> -- /bin/bash
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Deployment
|
|
25
|
-
```bash
|
|
26
|
-
kubectl apply -f manifest.yaml
|
|
27
|
-
kubectl apply -f ./manifests/
|
|
28
|
-
kubectl apply -f manifest.yaml --dry-run=client -o yaml # Preview
|
|
29
|
-
kubectl set image deployment/myapp app=myapp:v2
|
|
30
|
-
kubectl delete -f manifest.yaml
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Service & Network
|
|
34
|
-
```bash
|
|
35
|
-
kubectl port-forward service/myapp 8080:8080
|
|
36
|
-
kubectl get svc
|
|
37
|
-
kubectl exec -it <pod-name> -- curl http://service:8080
|
|
38
|
-
kubectl exec -it <pod-name> -- nslookup kubernetes.default
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Debugging (Get → Describe → Logs)
|
|
42
|
-
```bash
|
|
43
|
-
kubectl get pods -o wide
|
|
44
|
-
kubectl get events -n <ns> --sort-by='.lastTimestamp'
|
|
45
|
-
kubectl describe pod <pod-name>
|
|
46
|
-
kubectl logs <pod-name> -c <container>
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Output & Filtering
|
|
50
|
-
```bash
|
|
51
|
-
kubectl get pods -o json
|
|
52
|
-
kubectl get pods -o yaml
|
|
53
|
-
kubectl get pods -l app=myapp,tier=frontend
|
|
54
|
-
kubectl get pods --field-selector=status.phase=Running
|
|
55
|
-
kubectl get pods -w # Watch
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Flags
|
|
59
|
-
|
|
60
|
-
| Flag | Purpose |
|
|
61
|
-
|------|---------|
|
|
62
|
-
| `-n` | Namespace |
|
|
63
|
-
| `-A` | All namespaces |
|
|
64
|
-
| `-o` | Output format |
|
|
65
|
-
| `-l` | Label selector |
|
|
66
|
-
| `-w` | Watch |
|
|
67
|
-
|
|
68
|
-
## Aliases
|
|
69
|
-
```bash
|
|
70
|
-
alias k='kubectl'
|
|
71
|
-
alias kgp='kubectl get pods'
|
|
72
|
-
alias kd='kubectl describe'
|
|
73
|
-
alias kl='kubectl logs'
|
|
74
|
-
```
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
# Kubernetes Security Advanced
|
|
2
|
-
|
|
3
|
-
## ClusterRole (cluster-wide)
|
|
4
|
-
|
|
5
|
-
```yaml
|
|
6
|
-
apiVersion: rbac.authorization.k8s.io/v1
|
|
7
|
-
kind: ClusterRole
|
|
8
|
-
version: "1.0.0"
|
|
9
|
-
rules:
|
|
10
|
-
- apiGroups: [""]
|
|
11
|
-
resources: ["secrets"]
|
|
12
|
-
verbs: ["get"]
|
|
13
|
-
resourceNames: ["app-credentials"] # Restrict to specific
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
apiVersion: rbac.authorization.k8s.io/v1
|
|
17
|
-
kind: ClusterRoleBinding
|
|
18
|
-
version: "1.0.0"
|
|
19
|
-
subjects:
|
|
20
|
-
- kind: User
|
|
21
|
-
name: admin@example.com
|
|
22
|
-
apiGroup: rbac.authorization.k8s.io
|
|
23
|
-
roleRef:
|
|
24
|
-
kind: ClusterRole
|
|
25
|
-
name: cluster-admin
|
|
26
|
-
apiGroup: rbac.authorization.k8s.io
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Secrets Management
|
|
30
|
-
|
|
31
|
-
```yaml
|
|
32
|
-
apiVersion: v1
|
|
33
|
-
kind: Secret
|
|
34
|
-
version: "1.0.0"
|
|
35
|
-
type: Opaque
|
|
36
|
-
stringData:
|
|
37
|
-
username: admin
|
|
38
|
-
password: secretpassword
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Mount as env
|
|
42
|
-
```yaml
|
|
43
|
-
env:
|
|
44
|
-
- name: DB_PASSWORD
|
|
45
|
-
valueFrom:
|
|
46
|
-
secretKeyRef:
|
|
47
|
-
name: db-credentials
|
|
48
|
-
key: password
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Mount as volume
|
|
52
|
-
```yaml
|
|
53
|
-
volumeMounts:
|
|
54
|
-
- name: secret-volume
|
|
55
|
-
mountPath: /etc/secrets
|
|
56
|
-
readOnly: true
|
|
57
|
-
volumes:
|
|
58
|
-
- name: secret-volume
|
|
59
|
-
secret:
|
|
60
|
-
secretName: db-credentials
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Allow DNS (Required for most apps)
|
|
64
|
-
|
|
65
|
-
```yaml
|
|
66
|
-
apiVersion: networking.k8s.io/v1
|
|
67
|
-
kind: NetworkPolicy
|
|
68
|
-
version: "1.0.0"
|
|
69
|
-
spec:
|
|
70
|
-
podSelector: {}
|
|
71
|
-
policyTypes: [Egress]
|
|
72
|
-
egress:
|
|
73
|
-
- to:
|
|
74
|
-
- namespaceSelector:
|
|
75
|
-
matchLabels:
|
|
76
|
-
name: kube-system
|
|
77
|
-
ports:
|
|
78
|
-
- { protocol: UDP, port: 53 }
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Security Checklist
|
|
82
|
-
|
|
83
|
-
- [ ] RBAC with least-privilege roles
|
|
84
|
-
- [ ] Pod Security Standards (restricted)
|
|
85
|
-
- [ ] Network policies (default-deny + explicit allow)
|
|
86
|
-
- [ ] Run containers as non-root
|
|
87
|
-
- [ ] Read-only root filesystem
|
|
88
|
-
- [ ] Drop all capabilities
|
|
89
|
-
- [ ] Secrets for sensitive data
|
|
90
|
-
- [ ] Image scanning enabled
|
|
91
|
-
- [ ] Private container registry
|
|
92
|
-
- [ ] Resource quotas and limits
|
|
93
|
-
- [ ] Audit logging enabled
|
|
94
|
-
- [ ] Regular credential rotation
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Kubernetes Security
|
|
2
|
-
|
|
3
|
-
## RBAC (Role-Based Access Control)
|
|
4
|
-
|
|
5
|
-
### Role (namespace-scoped)
|
|
6
|
-
```yaml
|
|
7
|
-
apiVersion: rbac.authorization.k8s.io/v1
|
|
8
|
-
kind: Role
|
|
9
|
-
version: "1.0.0"
|
|
10
|
-
rules:
|
|
11
|
-
- apiGroups: [""]
|
|
12
|
-
resources: ["pods", "pods/log"]
|
|
13
|
-
verbs: ["get", "list", "watch"]
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
### RoleBinding
|
|
17
|
-
```yaml
|
|
18
|
-
apiVersion: rbac.authorization.k8s.io/v1
|
|
19
|
-
kind: RoleBinding
|
|
20
|
-
version: "1.0.0"
|
|
21
|
-
subjects:
|
|
22
|
-
- kind: ServiceAccount
|
|
23
|
-
name: my-app-sa
|
|
24
|
-
namespace: default
|
|
25
|
-
roleRef:
|
|
26
|
-
kind: Role
|
|
27
|
-
name: pod-reader
|
|
28
|
-
apiGroup: rbac.authorization.k8s.io
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Verify Permissions
|
|
32
|
-
```bash
|
|
33
|
-
kubectl auth can-i get pods --as=system:serviceaccount:default:my-sa
|
|
34
|
-
kubectl get roles,rolebindings -n default
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Pod Security (Restricted)
|
|
38
|
-
|
|
39
|
-
```yaml
|
|
40
|
-
spec:
|
|
41
|
-
securityContext:
|
|
42
|
-
runAsNonRoot: true
|
|
43
|
-
runAsUser: 1000
|
|
44
|
-
seccompProfile:
|
|
45
|
-
type: RuntimeDefault
|
|
46
|
-
containers:
|
|
47
|
-
- name: app
|
|
48
|
-
securityContext:
|
|
49
|
-
allowPrivilegeEscalation: false
|
|
50
|
-
readOnlyRootFilesystem: true
|
|
51
|
-
capabilities:
|
|
52
|
-
drop: ["ALL"]
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Enable on namespace:
|
|
56
|
-
```bash
|
|
57
|
-
kubectl label namespace default \
|
|
58
|
-
pod-security.kubernetes.io/enforce=restricted
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Network Policies
|
|
62
|
-
|
|
63
|
-
### Default Deny
|
|
64
|
-
```yaml
|
|
65
|
-
apiVersion: networking.k8s.io/v1
|
|
66
|
-
kind: NetworkPolicy
|
|
67
|
-
version: "1.0.0"
|
|
68
|
-
spec:
|
|
69
|
-
podSelector: {}
|
|
70
|
-
policyTypes: [Ingress, Egress]
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Allow Specific
|
|
74
|
-
```yaml
|
|
75
|
-
apiVersion: networking.k8s.io/v1
|
|
76
|
-
kind: NetworkPolicy
|
|
77
|
-
version: "1.0.0"
|
|
78
|
-
spec:
|
|
79
|
-
podSelector:
|
|
80
|
-
matchLabels: { app: backend }
|
|
81
|
-
ingress:
|
|
82
|
-
- from:
|
|
83
|
-
- podSelector:
|
|
84
|
-
matchLabels: { app: frontend }
|
|
85
|
-
ports:
|
|
86
|
-
- { protocol: TCP, port: 8080 }
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
See `kubernetes-security-advanced.md` for secrets, ClusterRoles, and checklist.
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# Kubernetes Troubleshooting Advanced
|
|
2
|
-
|
|
3
|
-
## Node Issues
|
|
4
|
-
```bash
|
|
5
|
-
kubectl describe node <node-name> | grep -A 5 "Conditions:"
|
|
6
|
-
kubectl top node <node-name>
|
|
7
|
-
kubectl top pods -A --sort-by=memory
|
|
8
|
-
kubectl drain <node-name> --ignore-daemonsets
|
|
9
|
-
kubectl uncordon <node-name>
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## CrashLoopBackOff
|
|
13
|
-
```bash
|
|
14
|
-
kubectl logs <pod-name> --previous
|
|
15
|
-
kubectl describe pod <pod-name>
|
|
16
|
-
kubectl get pod <pod-name> -o yaml | grep -A 5 resources:
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## HPA
|
|
20
|
-
```yaml
|
|
21
|
-
apiVersion: autoscaling/v2
|
|
22
|
-
kind: HorizontalPodAutoscaler
|
|
23
|
-
spec:
|
|
24
|
-
scaleTargetRef:
|
|
25
|
-
apiVersion: apps/v1
|
|
26
|
-
kind: Deployment
|
|
27
|
-
name: myapp
|
|
28
|
-
minReplicas: 2
|
|
29
|
-
maxReplicas: 10
|
|
30
|
-
metrics:
|
|
31
|
-
- type: Resource
|
|
32
|
-
resource:
|
|
33
|
-
name: cpu
|
|
34
|
-
target:
|
|
35
|
-
type: Utilization
|
|
36
|
-
averageUtilization: 70
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Anti-Patterns
|
|
40
|
-
|
|
41
|
-
**Using `latest` tag:**
|
|
42
|
-
```yaml
|
|
43
|
-
# ❌ image: myapp:latest
|
|
44
|
-
# ✅ image: myapp:v1.2.3
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Missing resources:**
|
|
48
|
-
```yaml
|
|
49
|
-
# ✅ Always set
|
|
50
|
-
resources:
|
|
51
|
-
requests: { memory: "256Mi", cpu: "250m" }
|
|
52
|
-
limits: { memory: "512Mi", cpu: "500m" }
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**Missing health checks:**
|
|
56
|
-
```yaml
|
|
57
|
-
livenessProbe:
|
|
58
|
-
httpGet: { path: /health, port: 8080 }
|
|
59
|
-
readinessProbe:
|
|
60
|
-
httpGet: { path: /ready, port: 8080 }
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Running as root:**
|
|
64
|
-
```yaml
|
|
65
|
-
securityContext:
|
|
66
|
-
runAsNonRoot: true
|
|
67
|
-
runAsUser: 1000
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## Monitoring
|
|
71
|
-
```bash
|
|
72
|
-
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
|
73
|
-
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring
|
|
74
|
-
```
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# Kubernetes Troubleshooting
|
|
2
|
-
|
|
3
|
-
## Debugging Workflow
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
# 1. Overview
|
|
7
|
-
kubectl get pods -o wide
|
|
8
|
-
kubectl get events -n <namespace> --sort-by='.lastTimestamp'
|
|
9
|
-
|
|
10
|
-
# 2. Details
|
|
11
|
-
kubectl describe pod <pod-name>
|
|
12
|
-
|
|
13
|
-
# 3. Logs
|
|
14
|
-
kubectl logs <pod-name>
|
|
15
|
-
kubectl logs <pod-name> --previous # Crashed instance
|
|
16
|
-
kubectl logs <pod-name> -c <container>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Common Pod States
|
|
20
|
-
|
|
21
|
-
| State | Cause | Solution |
|
|
22
|
-
|-------|-------|----------|
|
|
23
|
-
| Pending | No node resources | Check node capacity |
|
|
24
|
-
| ContainerCreating | Image pulling | Check image URI |
|
|
25
|
-
| CrashLoopBackOff | Container exits | Check logs, health checks |
|
|
26
|
-
| ImagePullBackOff | Failed image pull | Verify credentials |
|
|
27
|
-
| OOMKilled (137) | Out of memory | Increase memory limit |
|
|
28
|
-
|
|
29
|
-
## Service & Network
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
kubectl exec -it <pod-name> -- nslookup kubernetes.default
|
|
33
|
-
kubectl exec -it <pod-name> -- curl http://myservice:8080
|
|
34
|
-
kubectl get endpoints <service-name>
|
|
35
|
-
kubectl port-forward service/myservice 8080:8080
|
|
36
|
-
kubectl get networkpolicies -A
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Quick Fixes
|
|
40
|
-
|
|
41
|
-
| Problem | Command |
|
|
42
|
-
|---------|---------|
|
|
43
|
-
| Pod stuck | `kubectl delete pod <name> --grace-period=0 --force` |
|
|
44
|
-
| High CPU | `kubectl top pods -A --sort-by=cpu` |
|
|
45
|
-
| High memory | `kubectl top pods -A --sort-by=memory` |
|
|
46
|
-
| Restart | `kubectl rollout restart deployment/<name>` |
|
|
47
|
-
| Rollback | `kubectl rollout undo deployment/<name>` |
|
|
48
|
-
|
|
49
|
-
See `kubernetes-troubleshooting-advanced.md` for node issues, HPA, anti-patterns.
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
# Kubernetes Workflows Advanced
|
|
2
|
-
|
|
3
|
-
## CI/CD Pipeline
|
|
4
|
-
```yaml
|
|
5
|
-
# GitHub Actions
|
|
6
|
-
name: Build and Deploy
|
|
7
|
-
on:
|
|
8
|
-
push:
|
|
9
|
-
branches: [main]
|
|
10
|
-
|
|
11
|
-
jobs:
|
|
12
|
-
build:
|
|
13
|
-
runs-on: ubuntu-latest
|
|
14
|
-
steps:
|
|
15
|
-
- uses: actions/checkout@v3
|
|
16
|
-
- run: docker build . -t $REGISTRY/$IMAGE:${{ github.sha }}
|
|
17
|
-
- run: docker push $REGISTRY/$IMAGE:${{ github.sha }}
|
|
18
|
-
|
|
19
|
-
deploy:
|
|
20
|
-
needs: build
|
|
21
|
-
steps:
|
|
22
|
-
- uses: actions/checkout@v3
|
|
23
|
-
with:
|
|
24
|
-
repository: myorg/gitops-repo
|
|
25
|
-
token: ${{ secrets.GITOPS_TOKEN }}
|
|
26
|
-
- run: |
|
|
27
|
-
sed -i 's|image:.*|image: $REGISTRY/$IMAGE:${{ github.sha }}|' k8s/deployment.yaml
|
|
28
|
-
git commit -am "Update image" && git push
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Kustomize
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
kustomize/
|
|
35
|
-
├── base/
|
|
36
|
-
│ ├── kustomization.yaml
|
|
37
|
-
│ └── deployment.yaml
|
|
38
|
-
└── overlays/
|
|
39
|
-
└── prod/
|
|
40
|
-
└── kustomization.yaml
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### Base
|
|
44
|
-
```yaml
|
|
45
|
-
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
46
|
-
kind: Kustomization
|
|
47
|
-
resources:
|
|
48
|
-
- deployment.yaml
|
|
49
|
-
commonLabels:
|
|
50
|
-
app: myapp
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### Prod Overlay
|
|
54
|
-
```yaml
|
|
55
|
-
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
56
|
-
kind: Kustomization
|
|
57
|
-
bases:
|
|
58
|
-
- ../../base
|
|
59
|
-
replicas:
|
|
60
|
-
- name: myapp
|
|
61
|
-
count: 5
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
kubectl apply -k overlays/prod/
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Flux CD
|
|
69
|
-
```bash
|
|
70
|
-
flux bootstrap github \
|
|
71
|
-
--owner=myorg \
|
|
72
|
-
--repository=fleet-infra \
|
|
73
|
-
--branch=main \
|
|
74
|
-
--path=clusters/my-cluster
|
|
75
|
-
```
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Kubernetes Workflows
|
|
2
|
-
|
|
3
|
-
## GitOps Architecture
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
Git Repository (desired state)
|
|
7
|
-
│ Watches
|
|
8
|
-
▼
|
|
9
|
-
GitOps Agent (Argo CD / Flux)
|
|
10
|
-
│ Syncs
|
|
11
|
-
▼
|
|
12
|
-
Kubernetes Cluster (actual state)
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
**Benefits:** Single source of truth, auditable, automated, easy rollback
|
|
16
|
-
|
|
17
|
-
## Argo CD Setup
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
kubectl create namespace argocd
|
|
21
|
-
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
|
|
22
|
-
kubectl port-forward svc/argocd-server -n argocd 8080:443
|
|
23
|
-
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### Application Manifest
|
|
27
|
-
```yaml
|
|
28
|
-
apiVersion: argoproj.io/v1alpha1
|
|
29
|
-
kind: Application
|
|
30
|
-
version: blue # Change to 'green' to switch
|
|
31
|
-
spec:
|
|
32
|
-
project: default
|
|
33
|
-
source:
|
|
34
|
-
repoURL: https://github.com/myorg/myapp
|
|
35
|
-
targetRevision: HEAD
|
|
36
|
-
path: k8s/manifests
|
|
37
|
-
destination:
|
|
38
|
-
server: https://kubernetes.default.svc
|
|
39
|
-
namespace: default
|
|
40
|
-
syncPolicy:
|
|
41
|
-
automated:
|
|
42
|
-
prune: true
|
|
43
|
-
selfHeal: true
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Deployment Patterns
|
|
47
|
-
|
|
48
|
-
### Rolling Update
|
|
49
|
-
```yaml
|
|
50
|
-
spec:
|
|
51
|
-
strategy:
|
|
52
|
-
type: RollingUpdate
|
|
53
|
-
rollingUpdate:
|
|
54
|
-
maxSurge: 1
|
|
55
|
-
maxUnavailable: 0
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Blue-Green
|
|
59
|
-
```yaml
|
|
60
|
-
# Two deployments: myapp-blue, myapp-green
|
|
61
|
-
# Service selector switches between versions
|
|
62
|
-
selector:
|
|
63
|
-
app: myapp
|
|
64
|
-
version: blue # Change to 'green' to switch
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Canary (with Istio)
|
|
68
|
-
```yaml
|
|
69
|
-
route:
|
|
70
|
-
- destination: { host: myapp, subset: v1 }
|
|
71
|
-
weight: 90
|
|
72
|
-
- destination: { host: myapp, subset: v2 }
|
|
73
|
-
weight: 10 # 10% canary
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
See `kubernetes-workflows-advanced.md` for CI/CD, Kustomize patterns.
|