스키마 검증이 완료된 YAML 매니페스트를 생성하며, Kubernetes를 위한 Flux CD, Flux Operator 및 GitOps 워크플로우에 대한 전문가 가이드를 제공합니다.
- GitHub 스타
- 244
- 파일
- 39
- 마지막 커밋
- 2026년 11월 3일
- 라이선스
- Apache-2.0
- 허용된 도구
- —
gitops-knowledge skill은 무엇을 하나요?
gitops-knowledge은(는) agent skill입니다. 스키마 검증이 완료된 YAML 매니페스트를 생성하며, Kubernetes를 위한 Flux CD, Flux Operator 및 GitOps 워크플로우에 대한 전문가 가이드를 제공합니다.
skill의 SKILL.md에서 생성된 요약입니다.
gitops-knowledge skill 정보
Kubernetes 엔지니어가 스키마 검증이 완료된 YAML 매니페스트를 생성하고 Flux CD 및 GitOps 워크플로우에 대한 전문가 가이드를 받을 수 있도록 지원합니다. 이 SKILL은 Flux Operator를 통한 선언적 클러스터 설정 및 특정 커스텀 리소스 생성에 중점을 둔 Flux 툴킷 관리용 전문 지식 베이스 역할을 합니다. 에이전트가 이 SKILL을 로드하면 내부 스키마 파일을 기준으로 필드 이름과 타입을 검증하여 HelmRelease, Kustomization, GitRepository, ResourceSet과 같은 컴포넌트에 대한 정확한 매니페스트를 생성할 수 있습니다.
사용자는 Git 기반 워크플로우와 Gitless OCI 기반 전달을 포함한 복잡한 전달 모델을 설계할 때 이 도구를 활용할 수 있습니다. 또한 저장소 구조, 모노레포 앱 전달 및 멀티 테넌시에 대한 기술적 방향을 제공합니다. 이 SKILL은 엄격한 API 버저닝을 강제하고 flux schema 명령을 통해 검증을 제공한다는 점에서 차별화됩니다. 배포 전 마이그레이션 작업 실행이나 이미지 태그 자동화 및 드리프트 감지(drift detection) 설정과 같은 고급 오케스트레이션 작업을 지원하도록 설계되었습니다.
agent가 수행할 수 있는 작업
- 1GitOps 저장소 구조 설계애플리케이션 전달을 위한 모노레포 또는 멀티 레포 레이아웃 구성에 대한 가이드를 받습니다.
- 2배포 시퀀스 오케스트레이션배포 전후에 데이터베이스 마이그레이션이나 스모크 테스트를 실행하도록 ResourceSet을 구성합니다.
- 3Gitless 전달 모델 구현Flux가 Git 대신 레지스트리에서 불변(immutable) 아티팩트를 가져오는 OCI 기반 전달 방식을 설정합니다.
skill의 SKILL.md를 기반으로 작성되었습니다. 모든 사용 사례는 해당 문서의 인용구와 대조 확인되었습니다.
gitops-knowledge skill 설치 방법
각 명령은 skill 폴더를 클라이언트의 skills 디렉터리에 복사합니다. 클라이언트를 재시작하거나 새 세션을 시작하여 로드하세요.플러그인에 gitops-knowledge skill 설치
/plugin marketplace add fluxcd/agent-skills /plugin install gitops-skills@fluxcd
Claude Code에 gitops-knowledge skill 설치
~/.claude/skills/gitops-knowledge/SKILL.md
$ npx degit fluxcd/agent-skills/skills/gitops-knowledge ~/.claude/skills/gitops-knowledgeClaude Code (project)에 gitops-knowledge skill 설치
.claude/skills/gitops-knowledge/SKILL.md
$ npx degit fluxcd/agent-skills/skills/gitops-knowledge .claude/skills/gitops-knowledgeCodex에 gitops-knowledge skill 설치
~/.agents/skills/gitops-knowledge/SKILL.md
$ npx degit fluxcd/agent-skills/skills/gitops-knowledge ~/.agents/skills/gitops-knowledgeGemini CLI에 gitops-knowledge skill 설치
~/.gemini/skills/gitops-knowledge/SKILL.md
$ npx degit fluxcd/agent-skills/skills/gitops-knowledge ~/.gemini/skills/gitops-knowledgeClaude.ai에 gitops-knowledge skill 설치
npx degit fluxcd/agent-skills/skills/gitops-knowledge gitops-knowledge && zip -r gitops-knowledge.zip gitops-knowledge # claude.ai → Customize → Skills → + → Create skill → Upload a skill → gitops-knowledge.zip
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 보안 감사는 아닙니다. 에이전트가 실행하기 전에 스크립트를 읽어 보세요. 검사 방식
- 소스 저장소 연결 및 접근 가능fluxcd/agent-skills/skills/gitops-knowledge is public and reachablegithub.com/fluxcd/agent-skills/tree/HEAD/skills/gitops-knowl ↗통과
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit 2026-11-03github.com/fluxcd/agent-skills/commits ↗통과
- 스크립트에 다운로드 후 실행이나 자격 증명 탈취가 없음No scripts in the skill folder통과
- SKILL.md에 숨겨진 지침 없음No override phrases, safeguard switches, credential requests or hidden charactersgithub.com/fluxcd/agent-skills/blob/HEAD/skills/gitops-knowl ↗통과
- 사전 허용 도구가 제한됨No pre-approved tools; the agent asks before using onegithub.com/fluxcd/agent-skills/blob/HEAD/skills/gitops-knowl ↗통과
SKILL.md
GitHub에서 보기Flux CD Knowledge Base
You are an expert on Flux CD, the GitOps toolkit for Kubernetes. Use this knowledge base to answer questions accurately, generate correct YAML manifests, and explain Flux concepts.
Rules:
- Always use the exact apiVersion/kind combinations from the CRD table below. Never invent API versions.
- Before generating YAML for any CRD, verify field names, types, enums and required fields against its field index in
assets/schemas/. Each line is<dotted.path> <type> [(required)] [enum=a|b] [default=x] [pattern="..."] [min=N max=N] # description(arrays aspath[], maps as<map[string]T>). Grep a path prefix to list a subtree (grep '^spec\.chart\.' assets/schemas/helmrelease-helm-v2.fields.txt) or a field name to find where it lives. Mutual-exclusivity and other CEL rules are enforced byflux schema validate. - When a question requires detail beyond this file, load the relevant reference file from
references/. - When working inside a GitOps repository, inventory the layout with
flux schema discoverbefore placing files, and after writing manifests validate them withflux schema validate— fix and re-run until clean. Loadreferences/flux-cli.mdfor the full CLI workflow, local rendering, and overlay debugging. If the tools aren't installed, skip validation and say so. - Prefer Flux Operator (FluxInstance) for cluster setup. Do not reference
flux bootstrapor legacygotk-*files.
What is Flux
Flux is a set of Kubernetes controllers that implement GitOps: Git or OCI registries are the
source of truth, and Flux continuously reconciles that desired state with the cluster. Sources
poll at their interval and produce versioned artifacts; appliers (kustomize-controller,
helm-controller) build and server-side apply new revisions, detect drift and self-heal;
notification-controller reports status externally. Flux Operator manages the Flux
installation declaratively through a FluxInstance custom resource (install, configuration,
upgrades, lifecycle of all controllers); only one FluxInstance named flux can exist per cluster.
Sources (Git, OCI, Helm, Bucket) ─▶ Artifacts ─▶ Appliers (Kustomization, HelmRelease)
─▶ Managed Resources (Deployments, Services, ...) ─▶ Notifications (Provider + Alert)
ResourceSetInputProvider (GitHub PRs, OCI tags, in-cluster ExternalArtifacts, ...)
─▶ exports inputs ─▶ ResourceSet (template + input matrix; optional ordered `steps`)
─▶ generates per-input: Namespaces, Sources, Kustomizations, HelmReleases, RBAC, Jobs, ...
Two delivery models: Git-based (Flux watches Git and applies on commit) and Gitless (Git → CI pushes OCI artifacts → Flux pulls from the registry; artifacts are immutable, signed, and need no Git credentials on clusters).
Controllers, CRDs and References
The field index for each CRD is assets/schemas/<kind>-<group>-<version>.fields.txt in lowercase
(e.g. helmrelease-helm-v2.fields.txt, fluxinstance-fluxcd-v1.fields.txt).
| Kind | apiVersion | Controller | Reference |
|---|---|---|---|
| FluxInstance, FluxReport | fluxcd.controlplane.io/v1 | flux-operator | references/flux-operator.md |
| ResourceSet, ResourceSetInputProvider | fluxcd.controlplane.io/v1 | flux-operator | references/resourcesets.md |
| GitRepository, OCIRepository, HelmRepository, HelmChart, Bucket | source.toolkit.fluxcd.io/v1 | source-controller | references/sources.md |
| ExternalArtifact | source.toolkit.fluxcd.io/v1 | (3rd-party controllers) | references/sources.md |
| ArtifactGenerator | source.extensions.fluxcd.io/v1beta1 | source-watcher | references/sources.md |
| Kustomization | kustomize.toolkit.fluxcd.io/v1 | kustomize-controller | references/kustomization.md |
| HelmRelease | helm.toolkit.fluxcd.io/v2 | helm-controller | references/helmrelease.md |
| Provider, Alert | notification.toolkit.fluxcd.io/v1 | notification-controller | references/notifications.md |
| Receiver | notification.toolkit.fluxcd.io/v1 | notification-controller | references/notifications.md |
| ImageRepository, ImagePolicy | image.toolkit.fluxcd.io/v1 | image-reflector-controller | references/image-automation.md |
| ImageUpdateAutomation | image.toolkit.fluxcd.io/v1 | image-automation-controller | references/image-automation.md |
| Topic | Reference |
|---|---|
| Repository structure, monorepo vs multi-repo, OCI-based fleet management | references/repo-patterns.md |
| Monorepo directory-driven delivery (one pipeline per app/env directory), production fleet layout, layered infra reconcilers, per-env image policies | references/monorepo-delivery.md |
Jobs in sequence with deployments (migrations, smoke tests), ResourceSet steps, multi-tenancy, force/recreateOnFailure/checksumFrom annotations |
references/resourcesets.md |
| Best practices, dependency management, remediation, versioning, SPIFFE mTLS, object identity | references/best-practices.md |
Gitless GitOps, Flux OCI artifacts, flux push artifact, registry-based delivery |
references/gitless-gitops.md |
| Gitless image automation (ResourceSet + OCIArtifactTag) | references/gitless-image-automation.md |
Flux CLI and plugins: flux schema discover/validate/extract, local rendering with flux build and flux operator build, overlay debugging |
references/flux-cli.md |
| Terraform bootstrap of Flux Operator | references/terraform-bootstrap.md |
| Web UI, dashboard, SSO, OIDC, Dex, Keycloak, Entra ID, RBAC | references/web-ui.md |
| MCP Server, AI assistant integration, in-cluster deployment | references/mcp-server.md |
Ordering and Reactivity
Use dependsOn to control reconciliation order (CRDs before CRs, infrastructure before apps):
spec:
dependsOn:
- name: infra-controllers # wait for this Kustomization to be Ready
ResourceSet dependsOn entries take apiVersion/kind/name/namespace of any resource,
plus ready: true or a readyExpr CEL expression for custom readiness. For ordering within
a single ResourceSet, use spec.steps (ordered named steps, each applied and health-checked
before the next) instead of spec.resources — see references/resourcesets.md.
Controllers poll sources at their interval. To react immediately when a ConfigMap or Secret
referenced via postBuild.substituteFrom or valuesFrom changes, label it
reconcile.fluxcd.io/watch: Enabled.
Decision Trees
Which Source Type?
- Git repo with Kustomize overlays or plain YAML →
GitRepository - OCI artifact (container image with manifests) →
OCIRepository - Helm chart from OCI registry →
OCIRepositorywithlayerSelectorfor Helm media type - Helm chart from HTTPS Helm repo →
HelmRepository(default type) - S3/GCS/MinIO bucket →
Bucket - Monorepo that needs splitting →
ArtifactGenerator(createsExternalArtifactper path) - Monorepo where every
apps/<app>/envs/<env>directory gets its own pipeline automatically →ArtifactGeneratorpathPattern+ResourceSetInputProvider(type: ExternalArtifact) +ResourceSettemplating aKustomizationper artifact — loadreferences/monorepo-delivery.md - Helm chart + env-specific values from Git →
ArtifactGenerator(composes chart with values overlay)
Kustomization vs HelmRelease vs ResourceSet?
- Plain YAML or Kustomize overlays, one deployment →
Kustomization - Helm chart →
HelmRelease - Same template deployed for N inputs (tenants, components, environments) →
ResourceSet(generates resources from an input matrix; Kustomizations apply a fixed set of manifests) - Jobs that must run before/after a deployment (DB migration, smoke test, cache warmup) →
ResourceSetwithspec.steps— one object with apre-deployJob →deployKustomization →post-deployJob sequence, instead of threedependsOn-chained Kustomizations. Seereferences/resourcesets.md(Step-Based Reconciliation). - Kustomization and HelmRelease can target remote clusters via
kubeConfig.
How to Set Up GitOps from Scratch
Install Flux Operator (Helm chart or Terraform) → create a FluxInstance named flux in
flux-system with .spec.sync pointing at the Git repo or OCI registry → organize manifests
as Kustomize base+overlays → add Kustomization resources per component → add Provider + Alert.
Canonical YAML Patterns
1. GitOps Pipeline (GitRepository + Kustomization)
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: my-app
namespace: flux-system
spec:
interval: 5m
url: https://github.com/org/my-app.git
ref:
branch: main
secretRef:
name: git-credentials # optional, for private repos
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: my-app
namespace: flux-system
spec:
interval: 10m
sourceRef:
kind: GitRepository
name: my-app
path: ./deploy/production
prune: true
wait: true
timeout: 5m
2. Helm from OCI Registry (Recommended)
apiVersion: source.toolkit.fluxcd.io/v1
kind: OCIRepository
metadata:
name: cert-manager-chart
namespace: cert-manager
spec:
interval: 1h
url: oci://quay.io/jetstack/charts/cert-manager
layerSelector:
mediaType: "application/vnd.cncf.helm.chart.content.v1.tar+gzip"
operation: copy
ref:
semver: "1.x"
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: cert-manager
namespace: cert-manager
spec:
interval: 1h
chartRef:
kind: OCIRepository
name: cert-manager-chart
install:
strategy:
name: RetryOnFailure
retryInterval: 5m
upgrade:
strategy:
name: RetryOnFailure
retryInterval: 5m
values:
crds:
enabled: true
For HTTPS Helm repositories use HelmRepository + HelmRelease with spec.chart.spec
(chart, version: "3.x", sourceRef) instead of chartRef. For an OCI chart owned by one HelmRelease,
2.10+ also allows spec.chart.kind: OCIRepository — see references/helmrelease.md.
3. FluxInstance with OCI Sync (Gitless GitOps)
apiVersion: fluxcd.controlplane.io/v1
kind: FluxInstance
metadata:
name: flux
namespace: flux-system
spec:
distribution:
version: "2.x"
registry: "ghcr.io/fluxcd"
components:
- source-controller
- source-watcher
- kustomize-controller
- helm-controller
- notification-controller
cluster:
type: kubernetes
size: medium
multitenant: true
tenantDefaultServiceAccount: flux
networkPolicy: true
sync:
kind: OCIRepository
url: "oci://ghcr.io/my-org/fleet-manifests"
ref: "latest"
path: "clusters/production"
pullSecret: "registry-auth"
4. ResourceSet for Multi-Component Orchestration
A ResourceSet lists spec.inputs (e.g. tenant/environment pairs) and spec.resources
templates that reference them with << inputs.tenant >>; each input renders its own Namespace,
source and Kustomization/HelmRelease. For the full example and the multi-tenant pattern —
per-tenant ServiceAccount + RoleBinding, serviceAccountName impersonation, dependsOn,
and the reconcileEvery annotation — load references/resourcesets.md.
5. Image Automation
- Git-based —
ImageRepository+ImagePolicy+ImageUpdateAutomationcommit tag bumps to Git via$imagepolicyYAML markers; requiresimage-reflector-controllerandimage-automation-controller. Use when PR-based approval of bumps is required or Git must record every deployed version. Loadreferences/image-automation.md. - Gitless —
ResourceSet+ResourceSetInputProvider(type: OCIArtifactTag) re-renders the downstreamHelmRelease/Kustomizationwithout touching Git: no bot credentials, no poll lag, no extra controllers. Recommended default for Flux Operator; best when the tag lives in Helm values or differs per cluster. Loadreferences/gitless-image-automation.md.
6. Notifications
Provider + Alert (v1) for outgoing notifications, Receiver (v1) for incoming
webhooks. For Slack, GitHub commit status, webhook receivers, and all provider types,
load references/notifications.md.
Common Mistakes
Wrong template delimiters:
- ResourceSet uses
<< inputs.field >>— NOT{{ .inputs.field }}or{{ inputs.field }} - Go templates
{{ }}are only used in ImageUpdateAutomation.spec.git.commit.messageTemplate
Mutual exclusivity:
- HelmRelease:
spec.chartandspec.chartRefare mutually exclusive - FluxInstance: only one per cluster, must be named
flux
HelmRelease strategy fields:
- Install/upgrade strategy is at
spec.install.strategy.nameandspec.upgrade.strategy.name - Always use
RetryOnFailure— it retries without rollback or uninstall, avoiding downtime - Do not use
RemediateOnFailureorspec.install.remediation/spec.upgrade.remediation
OCIRepository for Helm charts:
- Set
layerSelector(mediaType: "application/vnd.cncf.helm.chart.content.v1.tar+gzip",operation: copy) to extract the chart, as in pattern 2.
Jobs managed by a ResourceSet:
- Job specs are immutable — annotate the Job with
fluxcd.controlplane.io/force: enabledso a changed spec (new image tag) recreates it instead of failing the apply; addfluxcd.controlplane.io/recreateOnFailure: enabledonly for idempotent Jobs. - Never set
ttlSecondsAfterFinished— the operator re-applies the TTL-deleted Job as drift and the migration runs again. - Set
spec.wait: trueon a stepped ResourceSet, otherwise the final step is not health-checked.
Post-build substitution pitfalls:
substituteFromonly resolves ConfigMaps/Secrets in the Kustomization's own namespace — copy cluster variables into tenant namespaces withfluxcd.controlplane.io/copyFrom(ResourceSet) rather than referencingflux-systemfrom elsewhere.- Kustomize
spec.images[].namemust match a plain image reference in the manifests (image: frontend); image rewriting runs at build time, before${var}substitution. - A substituted value must not start with a YAML indicator (
>,|,*,&,[,{,%,@) — kustomize drops the surrounding quotes, so a semver range like>=1.0.0yields invalid YAML. Usex,1.x,~1.2.0,^1.2.0orx || >=0.0.0-0.
Drift control — pick the right knob:
- Kustomization
spec.ignore— exclude specific JSON-pointer fields from drift detection/apply (e.g. HPAreplicas). Distinct from thekustomize.toolkit.fluxcd.io/ssa: Ignoreannotation, which skips a whole object. - HelmRelease
spec.driftDetection.ignore— the HelmRelease equivalent, only active whendriftDetection.modeiswarn/enabled.
이 스킬의 파일
39gitops-knowledge skill 질문
Claude Code에 gitops-knowledge skill을 어떻게 설치하나요?
npx degit fluxcd/agent-skills/skills/gitops-knowledge ~/.claude/skills/gitops-knowledge를 실행합니다. Claude Code는 ~/.claude/skills(모든 프로젝트) 또는 .claude/skills(한 프로젝트)에서 skills를 로드하며, 설명이 작업과 일치할 때 skill을 사용합니다.
gitops-knowledge skill을 사용할 수 있는 클라이언트는 무엇인가요?
Agent Skills 형식을 읽는 모든 클라이언트(Claude Code, Codex, Gemini CLI, claude.ai(ZIP으로 업로드))가 사용할 수 있습니다. skill 내 스크립트는 클라이언트가 코드 실행을 허용하는 경우에만 실행됩니다.
Flux CD로 무엇을 할 수 있나요?
Flux는 Git 또는 OCI 레지스트리를 신뢰할 수 있는 소스(source of truth)로 사용하여, 클러스터의 상태를 원하는 상태와 지속적으로 일치시키는 GitOps를 구현하는 Kubernetes 컨트롤러 세트입니다.
Flux Operator는 Flux 설치를 어떻게 관리하나요?
Flux Operator는 FluxInstance 커스텀 리소스를 통해 선언적으로 설치를 관리하며, 구성, 업그레이드 및 모든 컨트롤러의 라이프사이클을 처리합니다.
Git 기반 모델과 Gitless 전달 모델의 차이점은 무엇인가요?
Git 기반 전달은 Flux가 Git 저장소를 모니터링하며 커밋 시 변경 사항을 적용하는 방식인 반면, Gitless 전달은 CI를 통해 OCI 아티팩트를 푸시하고 Flux가 레지스트리에서 이를 풀(pull)하는 방식을 사용합니다.