From argos
GitOps platform review — ArgoCD / Flux / Argo Rollouts. App-of-apps, sync policy, sealed-secrets, progressive delivery (canary/blue-green), drift, RBAC. K8s'in deploy katmanı disiplini.
npx claudepluginhub resultakak/argos --plugin argosThis skill uses the workspace's default tool permissions.
`agents/shared/severity-rubric.md` ve `agents/shared/escalation-matrix.md` default-load
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
agents/shared/severity-rubric.md ve agents/shared/escalation-matrix.md default-load
sayılır (agents/coordination.md §11). Bu skill'in çıktısı Critical / High / Medium /
Low + kanıt formatında olmak zorunda — spekülatif Critical yasak. Sahiplik dışı bulgu
ilgili agent'a delege; karar yetkisi eşiği aşılırsa kullanıcı onayı zorunlu.
GitOps = Git tek truth + reconciliation loop. Cluster state Git'i takip eder;
manuel kubectl apply drift, audit gap, rollback'i imkansızlaştırır.
git revert.| Tool | İşaret |
|---|---|
| ArgoCD | argoproj.io/v1alpha1 Application/AppProject CRD; argo-cd namespace |
| Flux | toolkit.fluxcd.io/v1 GitRepository/Kustomization; flux-system namespace |
| Argo Rollouts | argoproj.io/v1alpha1 Rollout (Deployment yerine) |
| Flagger | flagger.app/v1beta1 Canary CRD |
| ArgoCD Image Updater | argocd-image-updater annotation |
gitops-repo/
├── apps/
│ ├── app-of-apps.yaml # ana Application: tüm app'leri create eder
│ └── apps/
│ ├── api-svc.yaml # Application
│ ├── checkout-svc.yaml
│ └── frontend.yaml
├── infrastructure/
│ ├── ingress-nginx.yaml
│ ├── cert-manager.yaml
│ ├── monitoring.yaml
│ └── ...
└── projects/
├── payments.yaml # AppProject (RBAC boundary)
└── platform.yaml
main = current state; environment branch'leri (prod branch)
ya da per-env directory tercih.spec:
syncPolicy:
automated:
prune: true # Git'te silinen → cluster'dan da sil
selfHeal: true # manuel değişiklik → revert
syncOptions:
- CreateNamespace=true
- PruneLast=true
- ApplyOutOfSyncOnly=true
- ServerSideApply=true # büyük CRD için
retry:
limit: 5
backoff: { duration: 5s, factor: 2, maxDuration: 3m }
Kararlar:
automated.prune — staging'de on; prod'da dikkatli (yanlışlıkla silme).selfHeal — drift'i kapatır; ama acil müdahale gereken incident'ta
manual override'ı revert eder. Toggle planı dokumented olmalı.CreateNamespace=true — namespace YAML'da yoksa oluştur (genelde uygun).| Tool | Felsefe |
|---|---|
| Sealed-secrets (Bitnami) | Public key encrypt; cluster controller decrypt. Git'te encrypted YAML. |
| SOPS (Mozilla) | KMS/age encrypt; Flux native, ArgoCD plugin. |
| External Secrets Operator | Vault/AWS SM/GCP SM'den çek; cluster'da Secret materialize. |
Yasak: plain Secret YAML Git'te. Hardcode secret = supply chain breach.
apiVersion: argoproj.io/v1alpha1
kind: Rollout
spec:
strategy:
canary:
steps:
- setWeight: 10
- pause: { duration: 5m }
- setWeight: 25
- analysis:
templates:
- templateName: success-rate
args:
- name: service-name
value: api-svc-canary
- pause: { duration: 5m }
- setWeight: 50
- pause: { duration: 10m }
- setWeight: 100
analysis:
templates: [{templateName: success-rate-fast}]
startingStep: 1
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: success-rate
spec:
args:
- name: service-name
metrics:
- name: success-rate
interval: 1m
successCondition: result[0] >= 0.99
failureLimit: 3
provider:
prometheus:
address: http://prometheus.monitoring:9090
query: |
sum(rate(http_requests_total{service="{{args.service-name}}",code!~"5.."}[2m]))
/ sum(rate(http_requests_total{service="{{args.service-name}}"}[2m]))
Kararlar:
OutOfSync durumu — sync policy off ise alert.Reconciliation Failed — controller log'u izle.argocd app diff <app> veya flux diff kustomization <name>.kubectl apply (insan).ignoreDifferences kullan).ignoreDifferences spesifik path için:
spec:
ignoreDifferences:
- group: apps
kind: Deployment
jsonPointers:
- /spec/replicas # HPA yönetiyor
ArgoCD AppProject = RBAC boundary:
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
name: payments
spec:
sourceRepos:
- https://github.com/acme/gitops-payments.git
destinations:
- namespace: payments-*
server: https://kubernetes.default.svc
clusterResourceWhitelist:
- { group: '', kind: Namespace }
namespaceResourceBlacklist:
- { group: '', kind: ResourceQuota }
roles:
- name: payments-deployer
policies:
- p, proj:payments:payments-deployer, applications, sync, payments/*, allow
groups:
- acme-org:payments-team
Kurallar:
* repo veya * destination yasak prod'da.clusterResourceWhitelist minimum (Namespace/CRD).Secret.Kustomization serviceAccountName per-tenant.argocd-server Prometheus metric (argocd_app_info,
argocd_app_sync_total).gotk- metric.argocd_app_health Degraded veya OutOfSync > 5 dk.prune + selfHeal toggle planı)OutOfSync > 5 dk)ignoreDifferences minimum + dokumentedkubectl apply manuel yasak (drift kaynağı)kubectl apply — Git'i atla, drift garanti.Secret Git'te — supply chain breach.autoSync off + manual sync — GitOps amacı kayıp.ignoreDifferences = all — drift invisible.* repo / * destination AppProject'te — RBAC etkisiz.User: /gitops-review apps/
Agent (platform-engineer):
1. Tool tespit: ArgoCD + Argo Rollouts + sealed-secrets.
2. Repo yapı: app-of-apps ✓, per-env directory (dev/staging/prod) ✓.
3. Sync policy: prod app'lerinde `selfHeal: true` — incident sırasında
manuel override'ı revert eder (High; toggle planı eksik).
4. Sealed-secrets: 14 SealedSecret Git'te ✓; ama `Secret` plain 2 yerde
`apps/legacy/*` (Critical — supply chain).
5. Argo Rollouts: api-svc canary 10/50/100 (3 step, çok hızlı); abort eşik
manual (auto fail yok). Önerilen: 5/25/50/100 + `failureLimit: 3`.
6. Drift: `ignoreDifferences = all` 3 app'te (`monitoring`, `cert-manager`,
`legacy-billing`) — invisible drift.
7. RBAC: AppProject `default` her şey allow ediyor — namespace + repo
whitelist'e geç.
8. DR: drill kayıt yok — quarter'da bir restore drill öner.
9. Output: 3 Critical + 5 High + 4 Medium issue + diff özet.
# GitOps Review: <repo>
## Tool / Yapı
- ArgoCD/Flux + version + repo layout
## Sync Policy
- prune / selfHeal / retry / serverSideApply tablosu
## Critical / High / Medium / Low
## Diff (özet)
```yaml
# fix snippet
| Öncelik | Aksiyon | Sahip | Bitiş | Issue |