flux-gitops-patterns
3
总安装量
3
周安装量
#60713
全站排名
安装命令
npx skills add https://github.com/foxj77/claude-code-skills --skill flux-gitops-patterns
Agent 安装分布
kimi-cli
3
kilo
3
gemini-cli
3
antigravity
3
claude-code
3
github-copilot
3
Skill 文档
Flux CD GitOps Patterns
Implement GitOps best practices with Flux CD, including repository structure, dependency management, and deployment patterns.
Keywords
flux, fluxcd, gitops, patterns, architecture, repository, structure, kustomization, helmrelease, dependencies, multi-tenant, multi-cluster, secrets, sops, designing, creating, deployment, deployments, notification, alerts, alerting, reconciliation, interval
When to Use This Skill
- Designing GitOps repository structure
- Setting up dependency chains between resources
- Implementing multi-environment deployments
- Configuring secrets management with Flux
- Setting up notifications and alerts
- Optimizing reconciliation intervals
Related Skills
- flux-troubleshooting – Diagnosing issues
- flux-operations – Day-to-day operations
- k8s-platform-tenancy – Multi-tenant patterns
Quick Reference
| Task | Pattern/Command |
|---|---|
| Monorepo layout | clusters/, infrastructure/, apps/ directories |
| Multi-repo layout | Separate repos per team/concern |
| Component layout | namespace.yaml, repository.yaml, release.yaml |
| Force sync | flux reconcile ks flux-system --with-source |
| Variable substitution | spec.postBuild.substitute / substituteFrom |
| Encrypt secrets | SOPS with spec.decryption.provider: sops |
| Set up alerts | Alert + Provider in notification.toolkit.fluxcd.io |
Repository Patterns
Monorepo (Recommended for Small Teams)
homelab/
âââ clusters/
â âââ production/
â â âââ flux-system/
â â âââ infrastructure.yaml
â â âââ apps.yaml
â âââ staging/
â âââ flux-system/
â âââ ...
âââ infrastructure/
â âââ kustomization.yaml
â âââ cert-manager/
â âââ external-dns/
â âââ external-secrets/
âââ apps/
â âââ kustomization.yaml
â âââ grafana/
â âââ loki/
âââ helm/
âââ local-charts/
Multi-Repo (Enterprise)
fleet-infra/ # Flux bootstrap, cluster configs
âââ clusters/
â âââ production/
â âââ staging/
platform-components/ # Shared infrastructure
âââ cert-manager/
âââ ingress-nginx/
âââ monitoring/
team-alpha-apps/ # Team-specific apps
âââ app1/
âââ app2/
Component Structure
component-name/
âââ namespace.yaml # Namespace isolation
âââ repository.yaml # HelmRepository source
âââ release.yaml # HelmRelease deployment
âââ kustomization.yaml # Resource orchestration
Dependency Management
Kustomization Dependencies
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: apps
namespace: flux-system
spec:
dependsOn:
- name: infrastructure
- name: configs
interval: 10m
path: ./apps
prune: true
wait: true
sourceRef:
kind: GitRepository
name: flux-system
Deployment Order
Flux System (bootstrapped)
ââ> Infrastructure (CRDs, operators)
ââ> Configs (ConfigMaps, Secrets)
ââ> Monitoring (Prometheus, Grafana)
ââ> Apps (depends on all above)
Source Configuration
GitRepository
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: flux-system
namespace: flux-system
spec:
interval: 10m
url: https://github.com/org/repo
ref:
branch: main
secretRef:
name: flux-system
ignore: |
/*
!/clusters/
!/infrastructure/
!/apps/
OCI Repository
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: OCIRepository
metadata:
name: podinfo
namespace: flux-system
spec:
interval: 10m
url: oci://ghcr.io/stefanprodan/manifests/podinfo
ref:
tag: latest
provider: generic # or aws, azure, gcp
HelmRepository
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: bitnami
namespace: flux-system
spec:
interval: 30m
url: https://charts.bitnami.com/bitnami
Variable Substitution
Environment Variables
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
spec:
postBuild:
substitute:
CLUSTER_NAME: production
DOMAIN: example.com
ENVIRONMENT: prod
substituteFrom:
- kind: ConfigMap
name: cluster-vars
- kind: Secret
name: cluster-secrets
Usage in Manifests
apiVersion: networking.k8s.io/v1
kind: Ingress
spec:
rules:
- host: app.${DOMAIN} # Substituted
Secrets Management
SOPS Integration
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
spec:
decryption:
provider: sops
secretRef:
name: sops-age # Contains age private key
External Secrets Pattern
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: app-secrets
spec:
refreshInterval: 1h
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
name: app-secrets
creationPolicy: Owner
data:
- secretKey: db-password
remoteRef:
key: secret/data/app
property: password
Notification Patterns
Provider Configuration
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Provider
metadata:
name: discord
namespace: flux-system
spec:
type: discord
secretRef:
name: discord-webhook
Alert Configuration
apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind: Alert
metadata:
name: on-call-alerts
namespace: flux-system
spec:
providerRef:
name: discord
eventSeverity: error
eventSources:
- kind: GitRepository
name: '*'
- kind: Kustomization
name: '*'
- kind: HelmRelease
name: '*'
namespace: '*'
Interval Guidelines
| Resource Type | Recommended Interval | Rationale |
|---|---|---|
| GitRepository | 10m | Balance freshness vs API calls |
| HelmRepository | 30m | Charts update less frequently |
| Kustomization | 10m | Sync with Git interval |
| HelmRelease | 15m | Allow chart fetch first |
| OCIRepository | 10m | Similar to Git |
GitOps Principles
- Declarative – Desired state in Git, not imperative commands
- Versioned – All changes tracked in Git history
- Automated – Flux applies changes automatically
- Auditable – Git log provides complete audit trail
- Self-healing – Drift automatically corrected
Anti-Patterns to Avoid
| Anti-Pattern | Problem | Solution |
|---|---|---|
| Direct kubectl apply | Bypasses GitOps | Always commit to Git |
| Forgotten suspensions | Resources don’t update | Document, set reminders |
| Missing dependsOn | Race conditions | Define explicit dependencies |
| Secrets in Git (plaintext) | Security breach | Use SOPS or External Secrets |
| Very short intervals | API throttling | Use 10m+ for most resources |
| Wildcard sources | Security risk | Explicit resource names |