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,182 @@
1
+ # Traefik Docker Compose Patterns
2
+
3
+ ## Production Docker Compose
4
+
5
+ ```yaml
6
+ services:
7
+ traefik:
8
+ image: traefik:v3.6
9
+ container_name: traefik
10
+ restart: unless-stopped
11
+ security_opt:
12
+ - no-new-privileges:true
13
+ ports:
14
+ - "80:80"
15
+ - "443:443"
16
+ environment:
17
+ - CF_DNS_API_TOKEN_FILE=/run/secrets/cf_api_token
18
+ secrets:
19
+ - cf_api_token
20
+ volumes:
21
+ - /etc/localtime:/etc/localtime:ro
22
+ - /var/run/docker.sock:/var/run/docker.sock:ro
23
+ - ./traefik.yml:/etc/traefik/traefik.yml:ro
24
+ - ./dynamic:/etc/traefik/dynamic:ro
25
+ - ./acme.json:/acme.json
26
+ - ./logs:/var/log/traefik
27
+ networks:
28
+ - proxy
29
+ labels:
30
+ - "traefik.enable=true"
31
+ # Dashboard
32
+ - "traefik.http.routers.dashboard.rule=Host(`traefik.example.com`)"
33
+ - "traefik.http.routers.dashboard.entrypoints=websecure"
34
+ - "traefik.http.routers.dashboard.tls.certresolver=letsencrypt"
35
+ - "traefik.http.routers.dashboard.service=api@internal"
36
+ - "traefik.http.routers.dashboard.middlewares=dashboard-auth"
37
+ - "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$apr1$$xyz$$hash"
38
+
39
+ # Backend service example
40
+ app:
41
+ image: myapp:latest
42
+ restart: unless-stopped
43
+ networks:
44
+ - proxy
45
+ labels:
46
+ - "traefik.enable=true"
47
+ - "traefik.http.routers.app.rule=Host(`app.example.com`)"
48
+ - "traefik.http.routers.app.entrypoints=websecure"
49
+ - "traefik.http.routers.app.tls.certresolver=letsencrypt"
50
+ - "traefik.http.services.app.loadbalancer.server.port=8080"
51
+ - "traefik.http.routers.app.middlewares=security-headers@file,rate-limit@file"
52
+
53
+ secrets:
54
+ cf_api_token:
55
+ file: ./secrets/cf_api_token.txt
56
+
57
+ networks:
58
+ proxy:
59
+ external: true # docker network create proxy
60
+ ```
61
+
62
+ ## With Docker Socket Proxy (recommended)
63
+
64
+ ```yaml
65
+ services:
66
+ socket-proxy:
67
+ image: tecnativa/docker-socket-proxy
68
+ container_name: socket-proxy
69
+ restart: unless-stopped
70
+ environment:
71
+ CONTAINERS: 1
72
+ SERVICES: 0
73
+ TASKS: 0
74
+ NETWORKS: 0
75
+ NODES: 0
76
+ IMAGES: 0
77
+ VOLUMES: 0
78
+ volumes:
79
+ - /var/run/docker.sock:/var/run/docker.sock:ro
80
+ networks:
81
+ - socket-proxy
82
+
83
+ traefik:
84
+ image: traefik:v3.6
85
+ container_name: traefik
86
+ restart: unless-stopped
87
+ security_opt:
88
+ - no-new-privileges:true
89
+ depends_on:
90
+ - socket-proxy
91
+ ports:
92
+ - "80:80"
93
+ - "443:443"
94
+ volumes:
95
+ - ./traefik.yml:/etc/traefik/traefik.yml:ro
96
+ - ./dynamic:/etc/traefik/dynamic:ro
97
+ - ./acme.json:/acme.json
98
+ networks:
99
+ - proxy
100
+ - socket-proxy
101
+
102
+ networks:
103
+ proxy:
104
+ external: true
105
+ socket-proxy:
106
+ internal: true # No external access
107
+ ```
108
+
109
+ In `traefik.yml`:
110
+ ```yaml
111
+ providers:
112
+ docker:
113
+ endpoint: "tcp://socket-proxy:2375"
114
+ exposedByDefault: false
115
+ network: proxy
116
+ ```
117
+
118
+ ## Multiple Services Example
119
+
120
+ ```yaml
121
+ services:
122
+ frontend:
123
+ image: frontend:latest
124
+ networks: [proxy]
125
+ labels:
126
+ - "traefik.enable=true"
127
+ - "traefik.http.routers.frontend.rule=Host(`example.com`)"
128
+ - "traefik.http.routers.frontend.entrypoints=websecure"
129
+ - "traefik.http.routers.frontend.tls.certresolver=letsencrypt"
130
+ - "traefik.http.services.frontend.loadbalancer.server.port=3000"
131
+
132
+ api:
133
+ image: api:latest
134
+ networks: [proxy]
135
+ labels:
136
+ - "traefik.enable=true"
137
+ - "traefik.http.routers.api.rule=Host(`example.com`) && PathPrefix(`/api`)"
138
+ - "traefik.http.routers.api.entrypoints=websecure"
139
+ - "traefik.http.routers.api.tls.certresolver=letsencrypt"
140
+ - "traefik.http.services.api.loadbalancer.server.port=8080"
141
+ - "traefik.http.routers.api.middlewares=strip-api"
142
+ - "traefik.http.middlewares.strip-api.stripprefix.prefixes=/api"
143
+
144
+ admin:
145
+ image: admin:latest
146
+ networks: [proxy]
147
+ labels:
148
+ - "traefik.enable=true"
149
+ - "traefik.http.routers.admin.rule=Host(`admin.example.com`)"
150
+ - "traefik.http.routers.admin.entrypoints=websecure"
151
+ - "traefik.http.routers.admin.tls.certresolver=letsencrypt"
152
+ - "traefik.http.services.admin.loadbalancer.server.port=3001"
153
+ - "traefik.http.routers.admin.middlewares=admin-auth@file"
154
+ ```
155
+
156
+ ## Key Docker Patterns
157
+
158
+ - **Always** use `exposedByDefault: false` and explicit `traefik.enable=true`
159
+ - **Always** use a shared external network (`docker network create proxy`)
160
+ - Use `$$` to escape `$` in docker-compose labels (for htpasswd hashes)
161
+ - Specify `loadbalancer.server.port` when container exposes multiple ports
162
+ - Mount Docker socket read-only or use socket proxy
163
+ - Use `security_opt: [no-new-privileges:true]` on Traefik container
164
+ - Use Docker secrets for sensitive values, not environment variables
165
+ - Set `restart: unless-stopped` for production reliability
166
+
167
+ ## Scaling Services
168
+
169
+ ```yaml
170
+ services:
171
+ app:
172
+ image: myapp:latest
173
+ deploy:
174
+ replicas: 3
175
+ networks: [proxy]
176
+ labels:
177
+ - "traefik.enable=true"
178
+ - "traefik.http.routers.app.rule=Host(`app.example.com`)"
179
+ - "traefik.http.services.app.loadbalancer.server.port=8080"
180
+ - "traefik.http.services.app.loadbalancer.healthcheck.path=/health"
181
+ - "traefik.http.services.app.loadbalancer.healthcheck.interval=10s"
182
+ ```
@@ -0,0 +1,177 @@
1
+ # High Availability & Performance Tuning
2
+
3
+ ## High Availability Setup
4
+
5
+ ### Multi-Instance Deployment
6
+ - Deploy minimum 3 Traefik instances across different nodes/zones
7
+ - Front with a cloud NLB (AWS NLB, GCP TCP LB) or DNS round-robin
8
+ - Share config via Kubernetes API, Consul, or etcd
9
+
10
+ ### Kubernetes HA
11
+
12
+ ```yaml
13
+ # Helm values
14
+ deployment:
15
+ replicas: 3
16
+
17
+ affinity:
18
+ podAntiAffinity:
19
+ requiredDuringSchedulingIgnoredDuringExecution:
20
+ - labelSelector:
21
+ matchLabels:
22
+ app.kubernetes.io/name: traefik
23
+ topologyKey: topology.kubernetes.io/zone
24
+ preferredDuringSchedulingIgnoredDuringExecution:
25
+ - weight: 100
26
+ podAffinityTerm:
27
+ labelSelector:
28
+ matchLabels:
29
+ app.kubernetes.io/name: traefik
30
+ topologyKey: kubernetes.io/hostname
31
+
32
+ topologySpreadConstraints:
33
+ - maxSkew: 1
34
+ topologyKey: topology.kubernetes.io/zone
35
+ whenUnsatisfiable: DoNotSchedule
36
+ labelSelector:
37
+ matchLabels:
38
+ app.kubernetes.io/name: traefik
39
+ ```
40
+
41
+ ### ACME in HA
42
+
43
+ Problem: Multiple instances requesting duplicate certificates.
44
+
45
+ Solutions:
46
+ - **Traefik Enterprise**: Built-in distributed ACME
47
+ - **cert-manager**: External cert management (recommended for K8s)
48
+ - **Shared KV store**: Consul/etcd for cert state (community workaround)
49
+
50
+ ```yaml
51
+ # Use cert-manager instead of Traefik ACME in HA K8s
52
+ apiVersion: cert-manager.io/v1
53
+ kind: Certificate
54
+ metadata:
55
+ name: wildcard-cert
56
+ spec:
57
+ secretName: wildcard-tls
58
+ issuerRef:
59
+ name: letsencrypt-prod
60
+ kind: ClusterIssuer
61
+ dnsNames:
62
+ - "example.com"
63
+ - "*.example.com"
64
+ ```
65
+
66
+ Reference in IngressRoute:
67
+ ```yaml
68
+ tls:
69
+ secretName: wildcard-tls # Instead of certResolver
70
+ ```
71
+
72
+ ## Performance Tuning
73
+
74
+ ### Connection Pool
75
+ ```yaml
76
+ serversTransport:
77
+ maxIdleConnsPerHost: 200 # Default is low; increase for high-throughput
78
+ forwardingTimeouts:
79
+ dialTimeout: 10s
80
+ responseHeaderTimeout: 10s
81
+ idleConnTimeout: 90s
82
+ ```
83
+
84
+ ### Resource Allocation
85
+
86
+ ```yaml
87
+ resources:
88
+ requests:
89
+ cpu: 500m
90
+ memory: 256Mi
91
+ limits:
92
+ cpu: "2"
93
+ memory: 1Gi
94
+ ```
95
+
96
+ Traefik is Go-based — benefits from multiple CPU cores via GOMAXPROCS.
97
+
98
+ ### Access Log Optimization
99
+
100
+ For high-throughput, buffer or disable access logs:
101
+ ```yaml
102
+ accessLog:
103
+ bufferingSize: 100
104
+ filters:
105
+ statusCodes: ["400-599"] # Only log errors
106
+ ```
107
+
108
+ Or disable entirely for maximum performance:
109
+ ```yaml
110
+ # Don't include accessLog section
111
+ ```
112
+
113
+ ### Routing Optimization
114
+
115
+ - Minimize regex-heavy routing rules
116
+ - Use exact `Host()` and `Path()` over `HostRegexp()` and `PathRegexp()`
117
+ - Reduce middleware chain depth
118
+ - Use `priority` to short-circuit matching for common routes
119
+
120
+ ### Label Cardinality
121
+
122
+ ```yaml
123
+ metrics:
124
+ prometheus:
125
+ addEntryPointsLabels: true
126
+ addServicesLabels: true
127
+ addRoutersLabels: false # Disable if too many routers (high cardinality)
128
+ ```
129
+
130
+ ### HTTP/3
131
+
132
+ Enable for reduced connection latency:
133
+ ```yaml
134
+ entryPoints:
135
+ websecure:
136
+ address: ":443"
137
+ http3: {}
138
+ ```
139
+
140
+ ## Cloud Provider Integration
141
+
142
+ ### AWS
143
+ - Use NLB (Network Load Balancer) for TCP/TLS passthrough
144
+ - Set `service.beta.kubernetes.io/aws-load-balancer-type: nlb`
145
+ - Enable proxy protocol on both NLB and Traefik
146
+ - Use IAM roles for service accounts (IRSA) for Route53 ACME
147
+
148
+ ### GCP
149
+ - GKE auto-provisions TCP LB for LoadBalancer Service
150
+ - Integrate Cloud Armor for WAF/DDoS in front of Traefik
151
+ - Use Workload Identity for Cloud DNS ACME
152
+
153
+ ### Azure
154
+ - AKS with Azure Load Balancer
155
+ - Static IP: `service.beta.kubernetes.io/azure-load-balancer-resource-group`
156
+ - Azure DNS for cert-manager ACME challenges
157
+
158
+ ## Benchmarking
159
+
160
+ Test with:
161
+ ```bash
162
+ # wrk
163
+ wrk -t12 -c400 -d30s https://app.example.com/
164
+
165
+ # k6
166
+ k6 run --vus 100 --duration 30s loadtest.js
167
+
168
+ # hey
169
+ hey -n 10000 -c 100 https://app.example.com/
170
+ ```
171
+
172
+ Key metrics to monitor during load tests:
173
+ - Request latency (P50, P95, P99)
174
+ - Requests per second
175
+ - Error rate
176
+ - CPU/memory usage of Traefik
177
+ - Open connections
@@ -0,0 +1,278 @@
1
+ # Traefik Kubernetes CRDs
2
+
3
+ ## Installation
4
+
5
+ ```bash
6
+ # Helm
7
+ helm repo add traefik https://traefik.github.io/charts
8
+ helm repo update
9
+ helm install traefik traefik/traefik -n traefik --create-namespace \
10
+ --set "ports.websecure.tls.enabled=true" \
11
+ --set "providers.kubernetesCRD.enabled=true" \
12
+ --set "providers.kubernetesCRD.allowCrossNamespace=true"
13
+ ```
14
+
15
+ ## IngressRoute
16
+
17
+ ```yaml
18
+ apiVersion: traefik.io/v1alpha1
19
+ kind: IngressRoute
20
+ metadata:
21
+ name: app
22
+ namespace: apps
23
+ spec:
24
+ entryPoints: [websecure]
25
+ routes:
26
+ - kind: Rule
27
+ match: Host(`app.example.com`) && PathPrefix(`/api`)
28
+ priority: 200
29
+ middlewares:
30
+ - name: strip-api
31
+ namespace: apps
32
+ - name: rate-limit
33
+ namespace: traefik
34
+ services:
35
+ - kind: Service
36
+ name: app-backend
37
+ port: 8080
38
+ weight: 100
39
+ passHostHeader: true
40
+ - kind: Rule
41
+ match: Host(`app.example.com`)
42
+ priority: 100
43
+ services:
44
+ - kind: Service
45
+ name: app-frontend
46
+ port: 3000
47
+ tls:
48
+ certResolver: letsencrypt
49
+ domains:
50
+ - main: example.com
51
+ sans: ["*.example.com"]
52
+ ```
53
+
54
+ ## Middleware CRD
55
+
56
+ ```yaml
57
+ apiVersion: traefik.io/v1alpha1
58
+ kind: Middleware
59
+ metadata:
60
+ name: security-headers
61
+ namespace: traefik
62
+ spec:
63
+ headers:
64
+ frameDeny: true
65
+ browserXssFilter: true
66
+ contentTypeNosniff: true
67
+ stsSeconds: 31536000
68
+ stsIncludeSubdomains: true
69
+ stsPreload: true
70
+ ---
71
+ apiVersion: traefik.io/v1alpha1
72
+ kind: Middleware
73
+ metadata:
74
+ name: rate-limit
75
+ namespace: traefik
76
+ spec:
77
+ rateLimit:
78
+ average: 100
79
+ burst: 50
80
+ period: 1s
81
+ ---
82
+ apiVersion: traefik.io/v1alpha1
83
+ kind: Middleware
84
+ metadata:
85
+ name: strip-api
86
+ namespace: apps
87
+ spec:
88
+ stripPrefix:
89
+ prefixes: [/api]
90
+ ---
91
+ apiVersion: traefik.io/v1alpha1
92
+ kind: Middleware
93
+ metadata:
94
+ name: redirect-https
95
+ namespace: traefik
96
+ spec:
97
+ redirectScheme:
98
+ scheme: https
99
+ permanent: true
100
+ ---
101
+ # Chain middleware
102
+ apiVersion: traefik.io/v1alpha1
103
+ kind: Middleware
104
+ metadata:
105
+ name: secured
106
+ namespace: traefik
107
+ spec:
108
+ chain:
109
+ middlewares:
110
+ - name: redirect-https
111
+ - name: security-headers
112
+ - name: rate-limit
113
+ ```
114
+
115
+ ## TLSOption CRD
116
+
117
+ ```yaml
118
+ apiVersion: traefik.io/v1alpha1
119
+ kind: TLSOption
120
+ metadata:
121
+ name: default # "default" applies globally
122
+ namespace: traefik
123
+ spec:
124
+ minVersion: VersionTLS12
125
+ sniStrict: true
126
+ cipherSuites:
127
+ - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
128
+ - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
129
+ - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
130
+ - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
131
+ ```
132
+
133
+ ## ServersTransport CRD
134
+
135
+ For mTLS or custom TLS to backend services:
136
+
137
+ ```yaml
138
+ apiVersion: traefik.io/v1alpha1
139
+ kind: ServersTransport
140
+ metadata:
141
+ name: mtls-backend
142
+ namespace: apps
143
+ spec:
144
+ serverName: "backend.internal"
145
+ insecureSkipVerify: false
146
+ rootCAsSecrets: [backend-ca]
147
+ certificatesSecrets: [client-cert]
148
+ maxIdleConnsPerHost: 10
149
+ forwardingTimeouts:
150
+ dialTimeout: 5s
151
+ responseHeaderTimeout: 10s
152
+ idleConnTimeout: 90s
153
+ ```
154
+
155
+ ## TraefikService (Weighted Round Robin / Mirroring)
156
+
157
+ ```yaml
158
+ # Canary deployment
159
+ apiVersion: traefik.io/v1alpha1
160
+ kind: TraefikService
161
+ metadata:
162
+ name: app-canary
163
+ spec:
164
+ weighted:
165
+ services:
166
+ - name: app-stable
167
+ port: 80
168
+ weight: 90
169
+ - name: app-canary
170
+ port: 80
171
+ weight: 10
172
+ ---
173
+ # Traffic mirroring
174
+ apiVersion: traefik.io/v1alpha1
175
+ kind: TraefikService
176
+ metadata:
177
+ name: app-mirror
178
+ spec:
179
+ mirroring:
180
+ name: app-main
181
+ port: 80
182
+ mirrors:
183
+ - name: app-shadow
184
+ port: 80
185
+ percent: 20
186
+ ```
187
+
188
+ ## IngressRouteTCP
189
+
190
+ ```yaml
191
+ apiVersion: traefik.io/v1alpha1
192
+ kind: IngressRouteTCP
193
+ metadata:
194
+ name: postgres
195
+ namespace: databases
196
+ spec:
197
+ entryPoints: [postgres]
198
+ routes:
199
+ - match: HostSNI(`db.example.com`)
200
+ services:
201
+ - name: postgres
202
+ port: 5432
203
+ tls:
204
+ passthrough: true
205
+ ```
206
+
207
+ ## IngressRouteUDP
208
+
209
+ ```yaml
210
+ apiVersion: traefik.io/v1alpha1
211
+ kind: IngressRouteUDP
212
+ metadata:
213
+ name: dns
214
+ spec:
215
+ entryPoints: [dns-udp]
216
+ routes:
217
+ - services:
218
+ - name: coredns
219
+ port: 53
220
+ ```
221
+
222
+ ## Helm Values (production)
223
+
224
+ ```yaml
225
+ # values.yaml
226
+ deployment:
227
+ replicas: 3
228
+ podAnnotations:
229
+ prometheus.io/scrape: "true"
230
+ prometheus.io/port: "8082"
231
+
232
+ affinity:
233
+ podAntiAffinity:
234
+ preferredDuringSchedulingIgnoredDuringExecution:
235
+ - weight: 100
236
+ podAffinityTerm:
237
+ labelSelector:
238
+ matchLabels:
239
+ app.kubernetes.io/name: traefik
240
+ topologyKey: kubernetes.io/hostname
241
+
242
+ resources:
243
+ requests:
244
+ cpu: 100m
245
+ memory: 128Mi
246
+ limits:
247
+ cpu: "1"
248
+ memory: 512Mi
249
+
250
+ ports:
251
+ web:
252
+ redirections:
253
+ entryPoint:
254
+ to: websecure
255
+ scheme: https
256
+ websecure:
257
+ tls:
258
+ enabled: true
259
+ metrics:
260
+ port: 8082
261
+ expose:
262
+ default: false
263
+
264
+ providers:
265
+ kubernetesCRD:
266
+ enabled: true
267
+ allowCrossNamespace: true
268
+ kubernetesIngress:
269
+ enabled: false
270
+
271
+ metrics:
272
+ prometheus:
273
+ entryPoint: metrics
274
+
275
+ ingressRoute:
276
+ dashboard:
277
+ enabled: false # Create your own with auth
278
+ ```