code-abyss 1.6.16 → 1.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 (92) hide show
  1. package/package.json +2 -2
  2. package/skills/SKILL.md +24 -16
  3. package/skills/domains/ai/SKILL.md +2 -2
  4. package/skills/domains/ai/prompt-and-eval.md +279 -0
  5. package/skills/domains/architecture/SKILL.md +2 -3
  6. package/skills/domains/architecture/security-arch.md +87 -0
  7. package/skills/domains/data-engineering/SKILL.md +188 -26
  8. package/skills/domains/development/SKILL.md +1 -4
  9. package/skills/domains/devops/SKILL.md +3 -5
  10. package/skills/domains/devops/performance.md +63 -0
  11. package/skills/domains/devops/testing.md +97 -0
  12. package/skills/domains/frontend-design/SKILL.md +12 -3
  13. package/skills/domains/frontend-design/claymorphism/SKILL.md +117 -0
  14. package/skills/domains/frontend-design/claymorphism/references/tokens.css +52 -0
  15. package/skills/domains/frontend-design/engineering.md +287 -0
  16. package/skills/domains/frontend-design/glassmorphism/SKILL.md +138 -0
  17. package/skills/domains/frontend-design/glassmorphism/references/tokens.css +32 -0
  18. package/skills/domains/frontend-design/liquid-glass/SKILL.md +135 -0
  19. package/skills/domains/frontend-design/liquid-glass/references/tokens.css +81 -0
  20. package/skills/domains/frontend-design/neubrutalism/SKILL.md +141 -0
  21. package/skills/domains/frontend-design/neubrutalism/references/tokens.css +44 -0
  22. package/skills/domains/infrastructure/SKILL.md +174 -34
  23. package/skills/domains/mobile/SKILL.md +211 -21
  24. package/skills/domains/orchestration/SKILL.md +1 -0
  25. package/skills/domains/security/SKILL.md +4 -6
  26. package/skills/domains/security/blue-team.md +57 -0
  27. package/skills/domains/security/red-team.md +54 -0
  28. package/skills/domains/security/threat-intel.md +50 -0
  29. package/skills/orchestration/multi-agent/SKILL.md +195 -46
  30. package/skills/run_skill.js +134 -0
  31. package/skills/tools/gen-docs/SKILL.md +6 -4
  32. package/skills/tools/gen-docs/scripts/doc_generator.js +349 -0
  33. package/skills/tools/verify-change/SKILL.md +8 -6
  34. package/skills/tools/verify-change/scripts/change_analyzer.js +270 -0
  35. package/skills/tools/verify-module/SKILL.md +6 -4
  36. package/skills/tools/verify-module/scripts/module_scanner.js +145 -0
  37. package/skills/tools/verify-quality/SKILL.md +5 -3
  38. package/skills/tools/verify-quality/scripts/quality_checker.js +276 -0
  39. package/skills/tools/verify-security/SKILL.md +7 -5
  40. package/skills/tools/verify-security/scripts/security_scanner.js +133 -0
  41. package/skills/__pycache__/run_skill.cpython-312.pyc +0 -0
  42. package/skills/domains/COVERAGE_PLAN.md +0 -232
  43. package/skills/domains/ai/model-evaluation.md +0 -790
  44. package/skills/domains/ai/prompt-engineering.md +0 -703
  45. package/skills/domains/architecture/compliance.md +0 -299
  46. package/skills/domains/architecture/data-security.md +0 -184
  47. package/skills/domains/data-engineering/data-pipeline.md +0 -762
  48. package/skills/domains/data-engineering/data-quality.md +0 -894
  49. package/skills/domains/data-engineering/stream-processing.md +0 -791
  50. package/skills/domains/development/dart.md +0 -963
  51. package/skills/domains/development/kotlin.md +0 -834
  52. package/skills/domains/development/php.md +0 -659
  53. package/skills/domains/development/swift.md +0 -755
  54. package/skills/domains/devops/e2e-testing.md +0 -914
  55. package/skills/domains/devops/performance-testing.md +0 -734
  56. package/skills/domains/devops/testing-strategy.md +0 -667
  57. package/skills/domains/frontend-design/build-tools.md +0 -743
  58. package/skills/domains/frontend-design/performance.md +0 -734
  59. package/skills/domains/frontend-design/testing.md +0 -699
  60. package/skills/domains/infrastructure/gitops.md +0 -735
  61. package/skills/domains/infrastructure/iac.md +0 -855
  62. package/skills/domains/infrastructure/kubernetes.md +0 -1018
  63. package/skills/domains/mobile/android-dev.md +0 -979
  64. package/skills/domains/mobile/cross-platform.md +0 -795
  65. package/skills/domains/mobile/ios-dev.md +0 -931
  66. package/skills/domains/security/secrets-management.md +0 -834
  67. package/skills/domains/security/supply-chain.md +0 -931
  68. package/skills/domains/security/threat-modeling.md +0 -828
  69. package/skills/run_skill.py +0 -153
  70. package/skills/tests/README.md +0 -225
  71. package/skills/tests/SUMMARY.md +0 -362
  72. package/skills/tests/__init__.py +0 -3
  73. package/skills/tests/__pycache__/test_change_analyzer.cpython-312.pyc +0 -0
  74. package/skills/tests/__pycache__/test_doc_generator.cpython-312.pyc +0 -0
  75. package/skills/tests/__pycache__/test_module_scanner.cpython-312.pyc +0 -0
  76. package/skills/tests/__pycache__/test_quality_checker.cpython-312.pyc +0 -0
  77. package/skills/tests/__pycache__/test_security_scanner.cpython-312.pyc +0 -0
  78. package/skills/tests/test_change_analyzer.py +0 -558
  79. package/skills/tests/test_doc_generator.py +0 -538
  80. package/skills/tests/test_module_scanner.py +0 -376
  81. package/skills/tests/test_quality_checker.py +0 -516
  82. package/skills/tests/test_security_scanner.py +0 -426
  83. package/skills/tools/gen-docs/scripts/__pycache__/doc_generator.cpython-312.pyc +0 -0
  84. package/skills/tools/gen-docs/scripts/doc_generator.py +0 -520
  85. package/skills/tools/verify-change/scripts/__pycache__/change_analyzer.cpython-312.pyc +0 -0
  86. package/skills/tools/verify-change/scripts/change_analyzer.py +0 -529
  87. package/skills/tools/verify-module/scripts/__pycache__/module_scanner.cpython-312.pyc +0 -0
  88. package/skills/tools/verify-module/scripts/module_scanner.py +0 -321
  89. package/skills/tools/verify-quality/scripts/__pycache__/quality_checker.cpython-312.pyc +0 -0
  90. package/skills/tools/verify-quality/scripts/quality_checker.py +0 -481
  91. package/skills/tools/verify-security/scripts/__pycache__/security_scanner.cpython-312.pyc +0 -0
  92. package/skills/tools/verify-security/scripts/security_scanner.py +0 -374
@@ -1,735 +0,0 @@
1
- ---
2
- name: gitops
3
- description: GitOps 持续部署。ArgoCD、Flux、声明式部署、自动同步、多环境管理。当用户提到 GitOps、ArgoCD、Flux、声明式部署、自动同步、Git 为真相源时使用。
4
- ---
5
-
6
- # 🔄 持续部署 · GitOps
7
-
8
- ## GitOps 核心原则
9
-
10
- ```
11
- Git 仓库 (唯一真相源)
12
-
13
- ├─ 声明式配置 (Declarative)
14
- ├─ 版本控制 (Versioned)
15
- ├─ 自动同步 (Automated)
16
- └─ 持续协调 (Reconciliation)
17
-
18
-
19
- Kubernetes 集群
20
- ```
21
-
22
- ### GitOps 工作流
23
- ```
24
- 开发者 → Git Push → CI 构建镜像 → 更新 Git 配置 → GitOps 控制器检测变更 → 自动部署到集群
25
-
26
- └─ 持续监控 → 自动修复漂移
27
- ```
28
-
29
- ## ArgoCD
30
-
31
- ### 安装 ArgoCD
32
- ```bash
33
- # 创建命名空间
34
- kubectl create namespace argocd
35
-
36
- # 安装 ArgoCD
37
- kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
38
-
39
- # 暴露 UI (LoadBalancer)
40
- kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
41
-
42
- # 或使用 Port Forward
43
- kubectl port-forward svc/argocd-server -n argocd 8080:443
44
-
45
- # 获取初始密码
46
- kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
47
-
48
- # 登录 CLI
49
- argocd login localhost:8080
50
- argocd account update-password
51
- ```
52
-
53
- ### Application 定义
54
- ```yaml
55
- apiVersion: argoproj.io/v1alpha1
56
- kind: Application
57
- metadata:
58
- name: myapp
59
- namespace: argocd
60
- finalizers:
61
- - resources-finalizer.argocd.argoproj.io
62
- spec:
63
- project: default
64
-
65
- # Git 仓库配置
66
- source:
67
- repoURL: https://github.com/example/myapp-config.git
68
- targetRevision: main
69
- path: k8s/overlays/production
70
-
71
- # Helm 配置
72
- helm:
73
- valueFiles:
74
- - values-prod.yaml
75
- parameters:
76
- - name: image.tag
77
- value: v1.2.3
78
-
79
- # Kustomize 配置
80
- kustomize:
81
- images:
82
- - myapp=registry.example.com/myapp:v1.2.3
83
-
84
- # 目标集群
85
- destination:
86
- server: https://kubernetes.default.svc
87
- namespace: production
88
-
89
- # 同步策略
90
- syncPolicy:
91
- automated:
92
- prune: true # 自动删除不在 Git 中的资源
93
- selfHeal: true # 自动修复漂移
94
- allowEmpty: false
95
- syncOptions:
96
- - CreateNamespace=true
97
- - PrunePropagationPolicy=foreground
98
- - PruneLast=true
99
- retry:
100
- limit: 5
101
- backoff:
102
- duration: 5s
103
- factor: 2
104
- maxDuration: 3m
105
-
106
- # 忽略差异
107
- ignoreDifferences:
108
- - group: apps
109
- kind: Deployment
110
- jsonPointers:
111
- - /spec/replicas # 忽略 HPA 修改的副本数
112
- ```
113
-
114
- ### ApplicationSet (多环境)
115
- ```yaml
116
- apiVersion: argoproj.io/v1alpha1
117
- kind: ApplicationSet
118
- metadata:
119
- name: myapp-all-envs
120
- namespace: argocd
121
- spec:
122
- generators:
123
- # Git 目录生成器
124
- - git:
125
- repoURL: https://github.com/example/myapp-config.git
126
- revision: main
127
- directories:
128
- - path: k8s/overlays/*
129
-
130
- template:
131
- metadata:
132
- name: 'myapp-{{path.basename}}'
133
- spec:
134
- project: default
135
- source:
136
- repoURL: https://github.com/example/myapp-config.git
137
- targetRevision: main
138
- path: '{{path}}'
139
- destination:
140
- server: https://kubernetes.default.svc
141
- namespace: '{{path.basename}}'
142
- syncPolicy:
143
- automated:
144
- prune: true
145
- selfHeal: true
146
- syncOptions:
147
- - CreateNamespace=true
148
- ```
149
-
150
- ### 多集群管理
151
- ```bash
152
- # 添加集群
153
- argocd cluster add prod-cluster --name production
154
-
155
- # 列出集群
156
- argocd cluster list
157
-
158
- # Application 指向不同集群
159
- ```
160
-
161
- ```yaml
162
- apiVersion: argoproj.io/v1alpha1
163
- kind: Application
164
- metadata:
165
- name: myapp-prod
166
- spec:
167
- destination:
168
- name: production # 使用集群名称
169
- namespace: production
170
- ```
171
-
172
- ### ArgoCD CLI 命令
173
- ```bash
174
- # 创建应用
175
- argocd app create myapp \
176
- --repo https://github.com/example/myapp-config.git \
177
- --path k8s/overlays/production \
178
- --dest-server https://kubernetes.default.svc \
179
- --dest-namespace production \
180
- --sync-policy automated
181
-
182
- # 查看应用状态
183
- argocd app get myapp
184
-
185
- # 同步应用
186
- argocd app sync myapp
187
-
188
- # 查看差异
189
- argocd app diff myapp
190
-
191
- # 回滚
192
- argocd app rollback myapp 1
193
-
194
- # 查看历史
195
- argocd app history myapp
196
-
197
- # 删除应用
198
- argocd app delete myapp
199
- ```
200
-
201
- ### ArgoCD Notifications
202
- ```yaml
203
- apiVersion: v1
204
- kind: ConfigMap
205
- metadata:
206
- name: argocd-notifications-cm
207
- namespace: argocd
208
- data:
209
- service.slack: |
210
- token: $slack-token
211
-
212
- template.app-deployed: |
213
- message: |
214
- Application {{.app.metadata.name}} is now running new version.
215
- slack:
216
- attachments: |
217
- [{
218
- "title": "{{ .app.metadata.name}}",
219
- "title_link":"{{.context.argocdUrl}}/applications/{{.app.metadata.name}}",
220
- "color": "#18be52",
221
- "fields": [
222
- {
223
- "title": "Sync Status",
224
- "value": "{{.app.status.sync.status}}",
225
- "short": true
226
- },
227
- {
228
- "title": "Repository",
229
- "value": "{{.app.spec.source.repoURL}}",
230
- "short": true
231
- }
232
- ]
233
- }]
234
-
235
- trigger.on-deployed: |
236
- - when: app.status.operationState.phase in ['Succeeded']
237
- send: [app-deployed]
238
-
239
- ---
240
- apiVersion: argoproj.io/v1alpha1
241
- kind: Application
242
- metadata:
243
- annotations:
244
- notifications.argoproj.io/subscribe.on-deployed.slack: my-channel
245
- ```
246
-
247
- ## Flux
248
-
249
- ### 安装 Flux
250
- ```bash
251
- # 安装 Flux CLI
252
- curl -s https://fluxcd.io/install.sh | sudo bash
253
-
254
- # 检查集群兼容性
255
- flux check --pre
256
-
257
- # Bootstrap Flux (GitHub)
258
- export GITHUB_TOKEN=<your-token>
259
- flux bootstrap github \
260
- --owner=example \
261
- --repository=fleet-infra \
262
- --branch=main \
263
- --path=clusters/production \
264
- --personal
265
-
266
- # Bootstrap Flux (GitLab)
267
- flux bootstrap gitlab \
268
- --owner=example \
269
- --repository=fleet-infra \
270
- --branch=main \
271
- --path=clusters/production \
272
- --token-auth
273
- ```
274
-
275
- ### GitRepository
276
- ```yaml
277
- apiVersion: source.toolkit.fluxcd.io/v1
278
- kind: GitRepository
279
- metadata:
280
- name: myapp
281
- namespace: flux-system
282
- spec:
283
- interval: 1m
284
- url: https://github.com/example/myapp-config
285
- ref:
286
- branch: main
287
- secretRef:
288
- name: git-credentials
289
- ignore: |
290
- # exclude all
291
- /*
292
- # include deploy dir
293
- !/k8s/
294
- ```
295
-
296
- ### Kustomization
297
- ```yaml
298
- apiVersion: kustomize.toolkit.fluxcd.io/v1
299
- kind: Kustomization
300
- metadata:
301
- name: myapp
302
- namespace: flux-system
303
- spec:
304
- interval: 5m
305
- path: ./k8s/overlays/production
306
- prune: true
307
- sourceRef:
308
- kind: GitRepository
309
- name: myapp
310
- healthChecks:
311
- - apiVersion: apps/v1
312
- kind: Deployment
313
- name: myapp
314
- namespace: production
315
- timeout: 2m
316
- wait: true
317
- postBuild:
318
- substitute:
319
- CLUSTER_NAME: production
320
- REGION: us-west-2
321
- substituteFrom:
322
- - kind: ConfigMap
323
- name: cluster-vars
324
- ```
325
-
326
- ### HelmRepository
327
- ```yaml
328
- apiVersion: source.toolkit.fluxcd.io/v1beta2
329
- kind: HelmRepository
330
- metadata:
331
- name: bitnami
332
- namespace: flux-system
333
- spec:
334
- interval: 1h
335
- url: https://charts.bitnami.com/bitnami
336
- ```
337
-
338
- ### HelmRelease
339
- ```yaml
340
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
341
- kind: HelmRelease
342
- metadata:
343
- name: myapp
344
- namespace: production
345
- spec:
346
- interval: 5m
347
- chart:
348
- spec:
349
- chart: myapp
350
- version: '1.x'
351
- sourceRef:
352
- kind: HelmRepository
353
- name: myapp-charts
354
- namespace: flux-system
355
- values:
356
- replicaCount: 3
357
- image:
358
- tag: v1.2.3
359
- valuesFrom:
360
- - kind: ConfigMap
361
- name: myapp-values
362
- install:
363
- remediation:
364
- retries: 3
365
- upgrade:
366
- remediation:
367
- retries: 3
368
- remediateLastFailure: true
369
- cleanupOnFail: true
370
- rollback:
371
- cleanupOnFail: true
372
- test:
373
- enable: true
374
- ```
375
-
376
- ### ImageRepository & ImagePolicy
377
- ```yaml
378
- apiVersion: image.toolkit.fluxcd.io/v1beta2
379
- kind: ImageRepository
380
- metadata:
381
- name: myapp
382
- namespace: flux-system
383
- spec:
384
- image: registry.example.com/myapp
385
- interval: 1m
386
- secretRef:
387
- name: registry-credentials
388
-
389
- ---
390
- apiVersion: image.toolkit.fluxcd.io/v1beta2
391
- kind: ImagePolicy
392
- metadata:
393
- name: myapp
394
- namespace: flux-system
395
- spec:
396
- imageRepositoryRef:
397
- name: myapp
398
- policy:
399
- semver:
400
- range: 1.x.x
401
- filterTags:
402
- pattern: '^v[0-9]+\.[0-9]+\.[0-9]+$'
403
- extract: '$1'
404
-
405
- ---
406
- apiVersion: image.toolkit.fluxcd.io/v1beta1
407
- kind: ImageUpdateAutomation
408
- metadata:
409
- name: myapp
410
- namespace: flux-system
411
- spec:
412
- interval: 1m
413
- sourceRef:
414
- kind: GitRepository
415
- name: myapp
416
- git:
417
- checkout:
418
- ref:
419
- branch: main
420
- commit:
421
- author:
422
- email: fluxcdbot@example.com
423
- name: fluxcdbot
424
- messageTemplate: |
425
- Update image to {{range .Updated.Images}}{{println .}}{{end}}
426
- push:
427
- branch: main
428
- update:
429
- path: ./k8s/overlays/production
430
- strategy: Setters
431
- ```
432
-
433
- ### Flux CLI 命令
434
- ```bash
435
- # 查看所有资源
436
- flux get all
437
-
438
- # 查看 GitRepository
439
- flux get sources git
440
-
441
- # 查看 Kustomization
442
- flux get kustomizations
443
-
444
- # 查看 HelmRelease
445
- flux get helmreleases
446
-
447
- # 手动同步
448
- flux reconcile source git myapp
449
- flux reconcile kustomization myapp
450
-
451
- # 暂停/恢复
452
- flux suspend kustomization myapp
453
- flux resume kustomization myapp
454
-
455
- # 导出配置
456
- flux export source git myapp > myapp-source.yaml
457
-
458
- # 卸载 Flux
459
- flux uninstall
460
- ```
461
-
462
- ## 多环境管理
463
-
464
- ### 目录结构
465
- ```
466
- fleet-infra/
467
- ├── clusters/
468
- │ ├── dev/
469
- │ │ ├── flux-system/
470
- │ │ └── apps.yaml
471
- │ ├── staging/
472
- │ │ ├── flux-system/
473
- │ │ └── apps.yaml
474
- │ └── production/
475
- │ ├── flux-system/
476
- │ └── apps.yaml
477
- ├── infrastructure/
478
- │ ├── base/
479
- │ │ ├── ingress-nginx/
480
- │ │ ├── cert-manager/
481
- │ │ └── external-secrets/
482
- │ └── overlays/
483
- │ ├── dev/
484
- │ ├── staging/
485
- │ └── production/
486
- └── apps/
487
- ├── base/
488
- │ └── myapp/
489
- │ ├── kustomization.yaml
490
- │ ├── deployment.yaml
491
- │ └── service.yaml
492
- └── overlays/
493
- ├── dev/
494
- │ ├── kustomization.yaml
495
- │ └── patch.yaml
496
- ├── staging/
497
- └── production/
498
- ```
499
-
500
- ### 环境配置 (ArgoCD)
501
- ```yaml
502
- # clusters/production/apps.yaml
503
- apiVersion: argoproj.io/v1alpha1
504
- kind: Application
505
- metadata:
506
- name: myapp-prod
507
- namespace: argocd
508
- spec:
509
- project: production
510
- source:
511
- repoURL: https://github.com/example/myapp-config.git
512
- targetRevision: main
513
- path: apps/overlays/production
514
- destination:
515
- server: https://kubernetes.default.svc
516
- namespace: production
517
- syncPolicy:
518
- automated:
519
- prune: true
520
- selfHeal: true
521
- ```
522
-
523
- ### 环境配置 (Flux)
524
- ```yaml
525
- # clusters/production/apps.yaml
526
- apiVersion: kustomize.toolkit.fluxcd.io/v1
527
- kind: Kustomization
528
- metadata:
529
- name: myapp
530
- namespace: flux-system
531
- spec:
532
- interval: 5m
533
- path: ./apps/overlays/production
534
- prune: true
535
- sourceRef:
536
- kind: GitRepository
537
- name: fleet-infra
538
- ```
539
-
540
- ## 渐进式交付
541
-
542
- ### ArgoCD Rollouts
543
- ```yaml
544
- apiVersion: argoproj.io/v1alpha1
545
- kind: Rollout
546
- metadata:
547
- name: myapp
548
- spec:
549
- replicas: 10
550
- strategy:
551
- canary:
552
- steps:
553
- - setWeight: 10
554
- - pause: {duration: 1m}
555
- - setWeight: 20
556
- - pause: {duration: 1m}
557
- - setWeight: 50
558
- - pause: {duration: 2m}
559
- - setWeight: 80
560
- - pause: {duration: 2m}
561
- canaryService: myapp-canary
562
- stableService: myapp-stable
563
- trafficRouting:
564
- istio:
565
- virtualService:
566
- name: myapp
567
- routes:
568
- - primary
569
- analysis:
570
- templates:
571
- - templateName: success-rate
572
- startingStep: 2
573
- args:
574
- - name: service-name
575
- value: myapp-canary
576
- revisionHistoryLimit: 3
577
- selector:
578
- matchLabels:
579
- app: myapp
580
- template:
581
- metadata:
582
- labels:
583
- app: myapp
584
- spec:
585
- containers:
586
- - name: myapp
587
- image: myapp:v2
588
- ```
589
-
590
- ### AnalysisTemplate
591
- ```yaml
592
- apiVersion: argoproj.io/v1alpha1
593
- kind: AnalysisTemplate
594
- metadata:
595
- name: success-rate
596
- spec:
597
- args:
598
- - name: service-name
599
- metrics:
600
- - name: success-rate
601
- interval: 1m
602
- successCondition: result >= 0.95
603
- failureLimit: 3
604
- provider:
605
- prometheus:
606
- address: http://prometheus:9090
607
- query: |
608
- sum(rate(
609
- http_requests_total{service="{{args.service-name}}",status=~"2.."}[1m]
610
- )) /
611
- sum(rate(
612
- http_requests_total{service="{{args.service-name}}"}[1m]
613
- ))
614
- ```
615
-
616
- ## 密钥管理
617
-
618
- ### Sealed Secrets
619
- ```bash
620
- # 安装 Sealed Secrets
621
- kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.0/controller.yaml
622
-
623
- # 安装 kubeseal CLI
624
- wget https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.0/kubeseal-linux-amd64
625
- sudo install -m 755 kubeseal-linux-amd64 /usr/local/bin/kubeseal
626
-
627
- # 创建 Sealed Secret
628
- kubectl create secret generic myapp-secrets \
629
- --from-literal=db-password=supersecret \
630
- --dry-run=client -o yaml | \
631
- kubeseal -o yaml > myapp-sealed-secret.yaml
632
-
633
- # 提交到 Git
634
- git add myapp-sealed-secret.yaml
635
- git commit -m "Add sealed secret"
636
- ```
637
-
638
- ```yaml
639
- apiVersion: bitnami.com/v1alpha1
640
- kind: SealedSecret
641
- metadata:
642
- name: myapp-secrets
643
- namespace: production
644
- spec:
645
- encryptedData:
646
- db-password: AgBy3i4OJSWK+PiTySYZZA9rO43cGDEq...
647
- template:
648
- metadata:
649
- name: myapp-secrets
650
- namespace: production
651
- type: Opaque
652
- ```
653
-
654
- ### External Secrets Operator
655
- ```yaml
656
- apiVersion: external-secrets.io/v1beta1
657
- kind: SecretStore
658
- metadata:
659
- name: aws-secrets-manager
660
- namespace: production
661
- spec:
662
- provider:
663
- aws:
664
- service: SecretsManager
665
- region: us-west-2
666
- auth:
667
- jwt:
668
- serviceAccountRef:
669
- name: external-secrets
670
-
671
- ---
672
- apiVersion: external-secrets.io/v1beta1
673
- kind: ExternalSecret
674
- metadata:
675
- name: myapp-secrets
676
- namespace: production
677
- spec:
678
- refreshInterval: 1h
679
- secretStoreRef:
680
- name: aws-secrets-manager
681
- kind: SecretStore
682
- target:
683
- name: myapp-secrets
684
- creationPolicy: Owner
685
- data:
686
- - secretKey: db-password
687
- remoteRef:
688
- key: production/myapp/db-password
689
- - secretKey: api-key
690
- remoteRef:
691
- key: production/myapp/api-key
692
- ```
693
-
694
- ## 最佳实践
695
-
696
- | 实践 | 说明 |
697
- |------|------|
698
- | Git 为唯一真相源 | 所有配置变更必须通过 Git |
699
- | 分支策略 | main 对应生产,develop 对应开发 |
700
- | 环境隔离 | 不同环境使用不同目录/分支 |
701
- | 自动同步 + 自愈 | 生产环境启用 automated + selfHeal |
702
- | 密钥加密 | 使用 Sealed Secrets 或 External Secrets |
703
- | 渐进式交付 | 使用 Rollouts 实现金丝雀部署 |
704
- | 监控告警 | 集成 Prometheus + Grafana |
705
- | 审计日志 | 记录所有部署变更 |
706
- | 回滚策略 | 保留历史版本,快速回滚 |
707
- | 多集群管理 | 使用 ApplicationSet 统一管理 |
708
-
709
- ## ArgoCD vs Flux 对比
710
-
711
- | 特性 | ArgoCD | Flux |
712
- |------|--------|------|
713
- | UI | ✅ 功能强大的 Web UI | ❌ 无 UI (可用 Weave GitOps) |
714
- | 多租户 | ✅ Projects + RBAC | ⚠️ 需额外配置 |
715
- | 多集群 | ✅ 原生支持 | ✅ 原生支持 |
716
- | Helm 支持 | ✅ 完整支持 | ✅ 完整支持 |
717
- | Kustomize 支持 | ✅ 完整支持 | ✅ 完整支持 |
718
- | 镜像自动更新 | ⚠️ 需 Image Updater | ✅ 原生支持 |
719
- | 渐进式交付 | ✅ Argo Rollouts | ✅ Flagger |
720
- | 通知 | ✅ 内置 | ✅ 内置 |
721
- | 学习曲线 | 中等 | 较陡 |
722
- | CNCF 状态 | Graduated | Graduated |
723
-
724
- ## 工具清单
725
-
726
- | 工具 | 用途 |
727
- |------|------|
728
- | ArgoCD | GitOps 持续部署 |
729
- | Flux | GitOps 持续部署 |
730
- | Argo Rollouts | 渐进式交付 |
731
- | Flagger | 自动金丝雀部署 |
732
- | Sealed Secrets | 密钥加密 |
733
- | External Secrets | 外部密钥同步 |
734
- | Kustomize | 配置管理 |
735
- | Helm | 包管理 |