ginskill-init 2.7.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.
Files changed (128) hide show
  1. package/.wrangler/cache/pages.json +4 -0
  2. package/.wrangler/cache/wrangler-account.json +6 -0
  3. package/DEVELOPMENT.md +510 -0
  4. package/README.md +104 -0
  5. package/agents/developer.md +56 -0
  6. package/agents/frontend-design.md +69 -0
  7. package/agents/mobile-reviewer.md +36 -0
  8. package/agents/review-code.md +49 -0
  9. package/agents/security-scanner.md +50 -0
  10. package/agents/tester.md +72 -0
  11. package/bin/cli.js +461 -0
  12. package/landing/ai-build-ai.png +0 -0
  13. package/landing/index.html +1495 -0
  14. package/landing/logo.png +0 -0
  15. package/package.json +37 -0
  16. package/skills/active-life-dev/SKILL.md +157 -0
  17. package/skills/active-life-dev/docs/auth.md +187 -0
  18. package/skills/active-life-dev/docs/customers.md +216 -0
  19. package/skills/active-life-dev/docs/integrations.md +209 -0
  20. package/skills/active-life-dev/docs/inventory.md +192 -0
  21. package/skills/active-life-dev/docs/modules.md +181 -0
  22. package/skills/active-life-dev/docs/orders.md +180 -0
  23. package/skills/active-life-dev/docs/patterns.md +319 -0
  24. package/skills/active-life-dev/docs/products.md +216 -0
  25. package/skills/active-life-dev/docs/schema.md +502 -0
  26. package/skills/active-life-dev/docs/setup.md +169 -0
  27. package/skills/active-life-dev/docs/vouchers.md +144 -0
  28. package/skills/ai-asset-generator/SKILL.md +247 -0
  29. package/skills/ai-asset-generator/docs/gen-image.md +274 -0
  30. package/skills/ai-asset-generator/docs/genvideo.md +341 -0
  31. package/skills/ai-asset-generator/docs/remove-background.md +19 -0
  32. package/skills/ai-asset-generator/lib/bg-remove.mjs +34 -0
  33. package/skills/ai-asset-generator/lib/env.mjs +48 -0
  34. package/skills/ai-asset-generator/lib/kie-client.mjs +100 -0
  35. package/skills/ai-build-ai/SKILL.md +127 -0
  36. package/skills/ai-build-ai/docs/agent-teams.md +293 -0
  37. package/skills/ai-build-ai/docs/checkpointing.md +161 -0
  38. package/skills/ai-build-ai/docs/create-agent.md +399 -0
  39. package/skills/ai-build-ai/docs/create-mcp.md +395 -0
  40. package/skills/ai-build-ai/docs/create-skill.md +299 -0
  41. package/skills/ai-build-ai/docs/headless-mode.md +614 -0
  42. package/skills/ai-build-ai/docs/hooks.md +578 -0
  43. package/skills/ai-build-ai/docs/memory-claude-md.md +375 -0
  44. package/skills/ai-build-ai/docs/output-styles.md +208 -0
  45. package/skills/ai-build-ai/docs/overview.md +162 -0
  46. package/skills/ai-build-ai/docs/permissions.md +391 -0
  47. package/skills/ai-build-ai/docs/plugins.md +396 -0
  48. package/skills/ai-build-ai/docs/sandbox.md +262 -0
  49. package/skills/ai-build-ai/docs/team-lead-workflow.md +648 -0
  50. package/skills/ant-design/SKILL.md +323 -0
  51. package/skills/ant-design/docs/components.md +160 -0
  52. package/skills/ant-design/docs/data-entry.md +406 -0
  53. package/skills/ant-design/docs/display.md +594 -0
  54. package/skills/ant-design/docs/feedback.md +451 -0
  55. package/skills/ant-design/docs/key-components.md +414 -0
  56. package/skills/ant-design/docs/navigation.md +310 -0
  57. package/skills/ant-design/docs/pro-components.md +543 -0
  58. package/skills/ant-design/docs/setup.md +213 -0
  59. package/skills/ant-design/docs/theme.md +265 -0
  60. package/skills/flutter-performance/SKILL.md +803 -0
  61. package/skills/flutter-performance/references/flutter-patterns.md +595 -0
  62. package/skills/icon-generator/SKILL.md +270 -0
  63. package/skills/mobile-app-review/SKILL.md +321 -0
  64. package/skills/mobile-app-review/references/apple-review.md +132 -0
  65. package/skills/mobile-app-review/references/google-play-review.md +203 -0
  66. package/skills/mongodb/SKILL.md +667 -0
  67. package/skills/mongodb/references/mongoose-patterns.md +368 -0
  68. package/skills/nestjs-architecture/SKILL.md +1086 -0
  69. package/skills/nestjs-architecture/references/advanced-patterns.md +590 -0
  70. package/skills/performance/SKILL.md +509 -0
  71. package/skills/react-fsd-architecture/SKILL.md +693 -0
  72. package/skills/react-fsd-architecture/references/fsd-patterns.md +747 -0
  73. package/skills/react-native-expo/SKILL.md +128 -0
  74. package/skills/react-native-expo/references/data-layer.md +252 -0
  75. package/skills/react-native-expo/references/design-system.md +252 -0
  76. package/skills/react-native-expo/references/navigation.md +199 -0
  77. package/skills/react-native-expo/references/performance.md +229 -0
  78. package/skills/react-native-expo/references/platform-services.md +179 -0
  79. package/skills/react-native-expo/references/state-management.md +209 -0
  80. package/skills/react-native-expo/references/ui-patterns.md +301 -0
  81. package/skills/react-query/SKILL.md +685 -0
  82. package/skills/react-query/references/query-patterns.md +365 -0
  83. package/skills/review-code/SKILL.md +374 -0
  84. package/skills/review-code/references/clean-code-principles.md +395 -0
  85. package/skills/review-code/references/frontend-patterns.md +136 -0
  86. package/skills/review-code/references/nestjs-patterns.md +184 -0
  87. package/skills/security-scanner/SKILL.md +366 -0
  88. package/skills/security-scanner/references/nestjs-security.md +260 -0
  89. package/skills/security-scanner/references/nextjs-security.md +201 -0
  90. package/skills/security-scanner/references/react-native-security.md +199 -0
  91. package/skills/traefik/SKILL.md +105 -0
  92. package/skills/traefik/docs/advanced-routing.md +186 -0
  93. package/skills/traefik/docs/auth-providers.md +137 -0
  94. package/skills/traefik/docs/cicd-devops.md +396 -0
  95. package/skills/traefik/docs/core-config.md +171 -0
  96. package/skills/traefik/docs/distributed-config.md +96 -0
  97. package/skills/traefik/docs/docker-compose.md +182 -0
  98. package/skills/traefik/docs/ha-performance.md +177 -0
  99. package/skills/traefik/docs/kubernetes.md +278 -0
  100. package/skills/traefik/docs/middleware.md +205 -0
  101. package/skills/traefik/docs/monitoring.md +357 -0
  102. package/skills/traefik/docs/security.md +391 -0
  103. package/skills/traefik/docs/tls-acme.md +155 -0
  104. package/skills/ui-ux-pro-max/SKILL.md +377 -0
  105. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  106. package/skills/ui-ux-pro-max/data/colors.csv +97 -0
  107. package/skills/ui-ux-pro-max/data/icons.csv +101 -0
  108. package/skills/ui-ux-pro-max/data/landing.csv +31 -0
  109. package/skills/ui-ux-pro-max/data/products.csv +97 -0
  110. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  111. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  112. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  113. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  114. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  115. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  116. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  117. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  118. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  119. package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  120. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  121. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  122. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  123. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  124. package/skills/ui-ux-pro-max/data/styles.csv +68 -0
  125. package/skills/ui-ux-pro-max/data/typography.csv +58 -0
  126. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  127. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  128. package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
@@ -0,0 +1,396 @@
1
+ # CI/CD, Deployments & DevOps
2
+
3
+ ## Blue-Green Deployments
4
+
5
+ Maintain two environments (blue=current, green=new). Switch traffic instantly.
6
+
7
+ ### Docker Compose
8
+ ```yaml
9
+ services:
10
+ app-blue:
11
+ image: myapp:1.0.0
12
+ networks: [proxy]
13
+ labels:
14
+ - "traefik.enable=true"
15
+ - "traefik.http.routers.app.rule=Host(`app.example.com`)"
16
+ - "traefik.http.services.app.loadbalancer.server.port=8080"
17
+
18
+ app-green:
19
+ image: myapp:1.1.0
20
+ networks: [proxy]
21
+ labels:
22
+ - "traefik.enable=false" # Toggle to switch
23
+ ```
24
+
25
+ Switch: change `traefik.enable` labels and restart/recreate containers.
26
+
27
+ ### Kubernetes (TraefikService)
28
+ ```yaml
29
+ apiVersion: traefik.io/v1alpha1
30
+ kind: TraefikService
31
+ metadata:
32
+ name: app-weighted
33
+ spec:
34
+ weighted:
35
+ services:
36
+ - name: app-blue
37
+ port: 80
38
+ weight: 100 # All traffic to blue
39
+ - name: app-green
40
+ port: 80
41
+ weight: 0 # Change to 100 for cutover
42
+ ```
43
+
44
+ ## Canary Releases
45
+
46
+ Gradually shift traffic percentage to new version.
47
+
48
+ ```yaml
49
+ apiVersion: traefik.io/v1alpha1
50
+ kind: TraefikService
51
+ metadata:
52
+ name: app-canary
53
+ spec:
54
+ weighted:
55
+ services:
56
+ - name: app-stable
57
+ port: 80
58
+ weight: 95
59
+ - name: app-canary
60
+ port: 80
61
+ weight: 5 # Start small, increase gradually
62
+ ```
63
+
64
+ ### Automated with Flagger
65
+
66
+ ```yaml
67
+ apiVersion: flagger.app/v1beta1
68
+ kind: Canary
69
+ metadata:
70
+ name: app
71
+ spec:
72
+ provider: traefik
73
+ targetRef:
74
+ apiVersion: apps/v1
75
+ kind: Deployment
76
+ name: app
77
+ service:
78
+ port: 80
79
+ analysis:
80
+ interval: 30s
81
+ threshold: 5 # Max failed checks
82
+ maxWeight: 50 # Max canary traffic %
83
+ stepWeight: 10 # Increment per interval
84
+ metrics:
85
+ - name: request-success-rate
86
+ thresholdRange:
87
+ min: 99
88
+ interval: 30s
89
+ - name: request-duration
90
+ thresholdRange:
91
+ max: 500
92
+ interval: 30s
93
+ ```
94
+
95
+ ## A/B Testing
96
+
97
+ Route based on headers, cookies, or query params:
98
+
99
+ ```yaml
100
+ http:
101
+ routers:
102
+ variant-b:
103
+ rule: "Host(`app.example.com`) && Headers(`X-Variant`, `B`)"
104
+ service: app-variant-b
105
+ priority: 200
106
+
107
+ variant-a:
108
+ rule: "Host(`app.example.com`)"
109
+ service: app-variant-a
110
+ priority: 100
111
+ ```
112
+
113
+ ## Traffic Mirroring (Shadow Testing)
114
+
115
+ Send copy of production traffic to test environment:
116
+
117
+ ```yaml
118
+ apiVersion: traefik.io/v1alpha1
119
+ kind: TraefikService
120
+ metadata:
121
+ name: app-mirror
122
+ spec:
123
+ mirroring:
124
+ name: app-production
125
+ port: 80
126
+ mirrors:
127
+ - name: app-staging
128
+ port: 80
129
+ percent: 20 # Mirror 20% of traffic
130
+ ```
131
+
132
+ ## GitOps with FluxCD
133
+
134
+ ```yaml
135
+ # flux/traefik-helmrelease.yaml
136
+ apiVersion: helm.toolkit.fluxcd.io/v2
137
+ kind: HelmRelease
138
+ metadata:
139
+ name: traefik
140
+ namespace: traefik
141
+ spec:
142
+ interval: 5m
143
+ chart:
144
+ spec:
145
+ chart: traefik
146
+ version: ">=34.0.0"
147
+ sourceRef:
148
+ kind: HelmRepository
149
+ name: traefik
150
+ values:
151
+ deployment:
152
+ replicas: 3
153
+ providers:
154
+ kubernetesCRD:
155
+ enabled: true
156
+ ---
157
+ apiVersion: source.toolkit.fluxcd.io/v1
158
+ kind: HelmRepository
159
+ metadata:
160
+ name: traefik
161
+ namespace: traefik
162
+ spec:
163
+ interval: 1h
164
+ url: https://traefik.github.io/charts
165
+ ```
166
+
167
+ ## GitOps with ArgoCD
168
+
169
+ ```yaml
170
+ apiVersion: argoproj.io/v1alpha1
171
+ kind: Application
172
+ metadata:
173
+ name: traefik
174
+ namespace: argocd
175
+ spec:
176
+ project: infrastructure
177
+ source:
178
+ repoURL: https://traefik.github.io/charts
179
+ chart: traefik
180
+ targetRevision: "34.0.0"
181
+ helm:
182
+ values: |
183
+ deployment:
184
+ replicas: 3
185
+ providers:
186
+ kubernetesCRD:
187
+ enabled: true
188
+ destination:
189
+ server: https://kubernetes.default.svc
190
+ namespace: traefik
191
+ syncPolicy:
192
+ automated:
193
+ prune: true
194
+ selfHeal: true
195
+ ```
196
+
197
+ ## Zero-Downtime Deployment Checklist
198
+
199
+ 1. Configure health checks on all services
200
+ 2. Set `readinessProbe` and `livenessProbe` on pods
201
+ 3. Add `lifecycle.preStop` hook for graceful drain:
202
+ ```yaml
203
+ lifecycle:
204
+ preStop:
205
+ exec:
206
+ command: ["sh", "-c", "sleep 15"]
207
+ ```
208
+ 4. Set `terminationGracePeriodSeconds: 30`
209
+ 5. Use rolling update strategy with `maxSurge: 1, maxUnavailable: 0`
210
+ 6. Enable sticky sessions if stateful
211
+ 7. Monitor error rates during rollout
212
+
213
+ ## CI/CD Pipeline Example (GitHub Actions)
214
+
215
+ ```yaml
216
+ name: Deploy
217
+ on:
218
+ push:
219
+ branches: [main]
220
+
221
+ jobs:
222
+ deploy:
223
+ runs-on: ubuntu-latest
224
+ steps:
225
+ - uses: actions/checkout@v4
226
+
227
+ - name: Build and push image
228
+ run: |
229
+ docker build -t registry.example.com/app:${{ github.sha }} .
230
+ docker push registry.example.com/app:${{ github.sha }}
231
+
232
+ - name: Update deployment
233
+ run: |
234
+ kubectl set image deployment/app app=registry.example.com/app:${{ github.sha }}
235
+ kubectl rollout status deployment/app --timeout=300s
236
+
237
+ - name: Verify health
238
+ run: |
239
+ curl -sf https://app.example.com/health || exit 1
240
+ ```
241
+
242
+ ## Multi-Environment Patterns (dev/staging/prod)
243
+
244
+ ### Namespace-Based Isolation (Kubernetes)
245
+ ```yaml
246
+ # Each environment gets its own namespace + IngressRoute
247
+ apiVersion: traefik.io/v1alpha1
248
+ kind: IngressRoute
249
+ metadata:
250
+ name: app
251
+ namespace: staging
252
+ spec:
253
+ entryPoints: [websecure]
254
+ routes:
255
+ - match: Host(`staging.example.com`)
256
+ kind: Rule
257
+ services:
258
+ - name: app
259
+ port: 80
260
+ tls:
261
+ certResolver: letsencrypt
262
+ ```
263
+
264
+ ### Docker Compose Overrides
265
+ ```bash
266
+ # Base + environment overlay
267
+ docker compose -f docker-compose.yml -f docker-compose.staging.yml up -d
268
+ ```
269
+
270
+ ```yaml
271
+ # docker-compose.staging.yml
272
+ services:
273
+ app:
274
+ labels:
275
+ - "traefik.http.routers.app.rule=Host(`staging.example.com`)"
276
+ ```
277
+
278
+ ### Environment-Specific Traefik Instances
279
+ - **Dev**: Single instance, self-signed certs, debug logging
280
+ - **Staging**: Mirrors prod config, staging Let's Encrypt
281
+ - **Prod**: HA (3+ replicas), production ACME, strict TLS, WAF
282
+
283
+ ## Rollback Strategies
284
+
285
+ ### Kubernetes
286
+ ```bash
287
+ # Instant rollback to previous revision
288
+ kubectl rollout undo deployment/app
289
+
290
+ # Rollback to specific revision
291
+ kubectl rollout undo deployment/app --to-revision=3
292
+
293
+ # Check history
294
+ kubectl rollout history deployment/app
295
+ ```
296
+
297
+ ### Docker Compose
298
+ ```bash
299
+ # Pin to previous image tag
300
+ docker compose up -d --no-deps app
301
+ ```
302
+
303
+ ### GitOps Rollback
304
+ ```bash
305
+ # Revert the deployment commit
306
+ git revert HEAD
307
+ git push # ArgoCD/Flux auto-syncs
308
+ ```
309
+
310
+ ### Traefik-Level Rollback (instant)
311
+ Switch weighted services back to stable:
312
+ ```yaml
313
+ # Change weights: canary 0, stable 100
314
+ kubectl patch traefikservice app-canary --type merge -p '
315
+ spec:
316
+ weighted:
317
+ services:
318
+ - name: app-stable
319
+ port: 80
320
+ weight: 100
321
+ - name: app-canary
322
+ port: 80
323
+ weight: 0'
324
+ ```
325
+
326
+ ## Infrastructure as Code
327
+
328
+ ### Terraform + Traefik on Kubernetes
329
+ ```hcl
330
+ resource "helm_release" "traefik" {
331
+ name = "traefik"
332
+ repository = "https://traefik.github.io/charts"
333
+ chart = "traefik"
334
+ version = "34.0.0"
335
+ namespace = "traefik"
336
+
337
+ set {
338
+ name = "deployment.replicas"
339
+ value = "3"
340
+ }
341
+
342
+ set {
343
+ name = "providers.kubernetesCRD.enabled"
344
+ value = "true"
345
+ }
346
+
347
+ set {
348
+ name = "ports.websecure.tls.enabled"
349
+ value = "true"
350
+ }
351
+ }
352
+ ```
353
+
354
+ ### Pulumi
355
+ ```typescript
356
+ const traefik = new k8s.helm.v3.Chart("traefik", {
357
+ chart: "traefik",
358
+ fetchOpts: { repo: "https://traefik.github.io/charts" },
359
+ version: "34.0.0",
360
+ namespace: "traefik",
361
+ values: {
362
+ deployment: { replicas: 3 },
363
+ providers: { kubernetesCRD: { enabled: true } },
364
+ },
365
+ });
366
+ ```
367
+
368
+ ## Automated Smoke Tests Post-Deploy
369
+
370
+ ```yaml
371
+ # GitHub Actions step
372
+ - name: Smoke test
373
+ run: |
374
+ # Wait for rollout
375
+ kubectl rollout status deployment/app --timeout=300s
376
+
377
+ # Test endpoints
378
+ for endpoint in /health /api/v1/status /; do
379
+ status=$(curl -s -o /dev/null -w "%{http_code}" "https://app.example.com${endpoint}")
380
+ if [ "$status" != "200" ]; then
381
+ echo "FAIL: ${endpoint} returned ${status}"
382
+ kubectl rollout undo deployment/app
383
+ exit 1
384
+ fi
385
+ done
386
+ echo "All smoke tests passed"
387
+ ```
388
+
389
+ ## Disaster Recovery
390
+
391
+ - **Config**: All in Git (GitOps). Rollback = `git revert`
392
+ - **Certificates**: Back up `acme.json` / cert secrets regularly
393
+ - **Multi-cluster**: DNS-based failover (Route53, Cloud DNS)
394
+ - **Test**: Regularly validate restore procedures
395
+ - **RTO/RPO**: Config recovery is instant (Git); cert re-issuance takes minutes (ACME rate limits apply)
396
+ - **Runbook**: Document manual failover steps for when automation fails
@@ -0,0 +1,171 @@
1
+ # Traefik Core Configuration
2
+
3
+ ## Static Configuration (traefik.yml)
4
+
5
+ Loaded once at startup. Three ways to set: file, CLI flags, environment variables.
6
+
7
+ ```yaml
8
+ # traefik.yml
9
+ global:
10
+ checkNewVersion: false
11
+ sendAnonymousUsage: false
12
+
13
+ api:
14
+ dashboard: true
15
+ insecure: false # NEVER true in production
16
+
17
+ log:
18
+ level: WARN
19
+ filePath: /var/log/traefik/traefik.log
20
+
21
+ accessLog:
22
+ filePath: /var/log/traefik/access.log
23
+ bufferingSize: 100
24
+ format: json
25
+ filters:
26
+ statusCodes: ["400-499", "500-599"]
27
+
28
+ # EntryPoints
29
+ entryPoints:
30
+ web:
31
+ address: ":80"
32
+ http:
33
+ redirections:
34
+ entryPoint:
35
+ to: websecure
36
+ scheme: https
37
+ permanent: true
38
+ forwardedHeaders:
39
+ trustedIPs: ["127.0.0.1/32", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
40
+
41
+ websecure:
42
+ address: ":443"
43
+ http:
44
+ tls:
45
+ certResolver: letsencrypt
46
+ middlewares:
47
+ - security-headers@file
48
+ http3: {} # Enable HTTP/3
49
+ forwardedHeaders:
50
+ trustedIPs: ["127.0.0.1/32", "10.0.0.0/8"]
51
+
52
+ metrics:
53
+ address: ":8082"
54
+
55
+ # Providers
56
+ providers:
57
+ docker:
58
+ endpoint: "unix:///var/run/docker.sock"
59
+ exposedByDefault: false
60
+ network: proxy
61
+ watch: true
62
+ file:
63
+ directory: /etc/traefik/dynamic
64
+ watch: true
65
+
66
+ # Certificate Resolvers
67
+ certificatesResolvers:
68
+ letsencrypt:
69
+ acme:
70
+ email: admin@example.com
71
+ storage: /acme.json
72
+ caServer: https://acme-v02.api.letsencrypt.org/directory
73
+ dnsChallenge:
74
+ provider: cloudflare
75
+ resolvers: ["1.1.1.1:53", "8.8.8.8:53"]
76
+ delayBeforeCheck: 10s
77
+
78
+ # Health check endpoint
79
+ ping:
80
+ entryPoint: web
81
+ ```
82
+
83
+ ## Dynamic Configuration
84
+
85
+ Hot-reloaded. Defines routers, services, middlewares, TLS options.
86
+
87
+ ### Routers
88
+
89
+ Match incoming requests and route to services:
90
+
91
+ ```yaml
92
+ http:
93
+ routers:
94
+ my-router:
95
+ entryPoints: [websecure]
96
+ rule: "Host(`app.example.com`) && PathPrefix(`/api`)"
97
+ middlewares: [rate-limit, security-headers]
98
+ service: my-service
99
+ tls:
100
+ certResolver: letsencrypt
101
+ priority: 100 # Higher = matched first
102
+ ```
103
+
104
+ **Rule matchers**: `Host()`, `HostRegexp()`, `Path()`, `PathPrefix()`, `PathRegexp()`, `Headers()`, `HeadersRegexp()`, `Method()`, `Query()`, `ClientIP()`.
105
+
106
+ Combine with `&&` (AND), `||` (OR), `!` (NOT).
107
+
108
+ ### Services
109
+
110
+ Define backend targets with load balancing:
111
+
112
+ ```yaml
113
+ http:
114
+ services:
115
+ my-service:
116
+ loadBalancer:
117
+ servers:
118
+ - url: "http://10.0.0.10:8080"
119
+ - url: "http://10.0.0.11:8080"
120
+ healthCheck:
121
+ path: /health
122
+ interval: 10s
123
+ timeout: 3s
124
+ sticky:
125
+ cookie:
126
+ name: server_id
127
+ secure: true
128
+ httpOnly: true
129
+ passHostHeader: true
130
+ ```
131
+
132
+ ### Load Balancing Strategies (v3.6+)
133
+
134
+ | Strategy | Description |
135
+ |----------|-------------|
136
+ | **WRR** (default) | Weighted Round Robin via EDF scheduling |
137
+ | **P2C** | Power of Two Choices — picks 2 random, routes to least busy |
138
+ | **HRW** | Highest Random Weight — consistent hashing by client IP |
139
+ | **LeastTime** | Lowest response time + fewest connections |
140
+
141
+ ### Multi-Layer Routing (v3.6+)
142
+
143
+ Advanced routing with prioritized evaluation for blue-green, A/B, canary:
144
+
145
+ ```yaml
146
+ http:
147
+ routers:
148
+ canary:
149
+ rule: "Host(`app.example.com`) && Headers(`X-Canary`, `true`)"
150
+ service: app-canary
151
+ priority: 200
152
+ default:
153
+ rule: "Host(`app.example.com`)"
154
+ service: app-stable
155
+ priority: 100
156
+ ```
157
+
158
+ ## Providers Reference
159
+
160
+ | Provider | Config Key | Use Case |
161
+ |----------|-----------|----------|
162
+ | Docker | `providers.docker` | Container-based routing via labels |
163
+ | Kubernetes CRD | `providers.kubernetesCRD` | Native K8s with IngressRoute |
164
+ | Kubernetes Ingress | `providers.kubernetesIngress` | Standard K8s Ingress resources |
165
+ | File | `providers.file` | Static file-based routing |
166
+ | Consul Catalog | `providers.consulCatalog` | HashiCorp Consul service discovery |
167
+ | Consul | `providers.consul` | Consul KV store |
168
+ | etcd | `providers.etcd` | etcd KV store |
169
+ | Redis | `providers.redis` | Redis KV store |
170
+ | Amazon ECS | `providers.ecs` | AWS ECS task discovery |
171
+ | Nomad | `providers.nomad` | HashiCorp Nomad |
@@ -0,0 +1,96 @@
1
+ # Distributed Configuration (Redis, Consul, etcd)
2
+
3
+ ## Redis Provider
4
+
5
+ ```yaml
6
+ # traefik.yml
7
+ providers:
8
+ redis:
9
+ endpoints: ["redis:6379"]
10
+ rootKey: "traefik"
11
+ password: "secretpassword"
12
+ tls:
13
+ ca: /certs/ca.pem
14
+ cert: /certs/cert.pem
15
+ key: /certs/key.pem
16
+ ```
17
+
18
+ Store config:
19
+ ```bash
20
+ redis-cli SET "traefik/http/routers/my-router/rule" "Host(\`app.example.com\`)"
21
+ redis-cli SET "traefik/http/routers/my-router/service" "my-service"
22
+ redis-cli SET "traefik/http/routers/my-router/entryPoints/0" "websecure"
23
+ redis-cli SET "traefik/http/services/my-service/loadBalancer/servers/0/url" "http://10.0.0.10:8080"
24
+ redis-cli SET "traefik/http/services/my-service/loadBalancer/servers/1/url" "http://10.0.0.11:8080"
25
+ redis-cli SET "traefik/http/middlewares/my-headers/headers/browserXssFilter" "true"
26
+ ```
27
+
28
+ ## Consul Provider
29
+
30
+ ```yaml
31
+ providers:
32
+ consul:
33
+ endpoints: ["consul:8500"]
34
+ rootKey: "traefik"
35
+ token: "consul-acl-token"
36
+ tls:
37
+ ca: /certs/ca.pem
38
+ ```
39
+
40
+ ## etcd Provider
41
+
42
+ ```yaml
43
+ providers:
44
+ etcd:
45
+ endpoints: ["etcd1:2379", "etcd2:2379", "etcd3:2379"]
46
+ rootKey: "traefik"
47
+ username: "traefik"
48
+ password: "secretpassword"
49
+ tls:
50
+ ca: /certs/ca.pem
51
+ cert: /certs/cert.pem
52
+ key: /certs/key.pem
53
+ ```
54
+
55
+ Store config:
56
+ ```bash
57
+ etcdctl put "traefik/http/routers/my-router/rule" "Host(\`app.example.com\`)"
58
+ etcdctl put "traefik/http/routers/my-router/service" "my-service"
59
+ etcdctl put "traefik/http/services/my-service/loadBalancer/servers/0/url" "http://10.0.0.10:8080"
60
+ ```
61
+
62
+ ## Key Path Structure
63
+
64
+ All KV providers use the same path structure under `rootKey`:
65
+
66
+ ```
67
+ traefik/
68
+ http/
69
+ routers/<name>/
70
+ rule → "Host(`...`)"
71
+ service → "service-name"
72
+ entryPoints/0 → "websecure"
73
+ middlewares/0 → "middleware-name"
74
+ tls/certResolver → "letsencrypt"
75
+ services/<name>/
76
+ loadBalancer/servers/0/url → "http://..."
77
+ loadBalancer/healthCheck/path → "/health"
78
+ middlewares/<name>/
79
+ headers/browserXssFilter → "true"
80
+ rateLimit/average → "100"
81
+ tcp/
82
+ routers/...
83
+ services/...
84
+ tls/
85
+ options/...
86
+ certificates/...
87
+ ```
88
+
89
+ All KV providers support dynamic watching — Traefik auto-detects changes without restart.
90
+
91
+ ## Use Cases
92
+
93
+ - **Multi-instance sync**: All Traefik instances read from same KV store
94
+ - **Dynamic backend registration**: Services register themselves in KV store
95
+ - **API-driven config**: Update routing via KV store API
96
+ - **Service discovery**: Combine with Consul Catalog for automatic service registration