Skip to main content

File Locations

Purpose: For platform engineers, provides paths for config files, generated output, keys, caches, and kubeconfigs.

Configuration Files

FileDescription
~/.config/opencenter/clusters/<org>/.<cluster>-config.yamlCluster configuration
~/.config/opencenter/config.yamlCLI settings
~/.config/opencenter/activeActive cluster pointer
~/.config/opencenter/plugins/External plugins

The --config-dir global flag overrides the default configuration directory.

State Directory

PathDescription
~/.local/state/opencenter/State directory (bootstrap state, audit logs, locks)
~/.local/state/opencenter/audit/Audit log entries (HMAC-signed)
~/.local/state/opencenter/audit/audit.keyHMAC-SHA256 signing key

Generated Repository

After opencenter cluster generate, the GitOps repo is created at OPENCENTER_GITOPS_DIR:

<gitops-dir>/
├── applications/
│ └── overlays/<cluster>/
│ ├── flux-system/ # FluxCD bootstrap manifests
│ ├── services/
│ │ ├── sources/ # GitRepository CRDs
│ │ ├── fluxcd/ # Kustomization CRDs
│ │ └── <service>/ # Override values
│ └── managed-services/ # Customer applications
└── infrastructure/
└── clusters/<cluster>/
├── main.tf # Terraform/OpenTofu entry point
├── provider.tf # Backend configuration
├── variables.tf # Variable definitions
├── inventory/ # Kubespray inventory and group_vars
└── kubeconfig.yaml # Cluster kubeconfig (post-provision)

Encryption Keys

PathDescription
~/.config/opencenter/clusters/<org>/secrets/age/SOPS Age keypairs
~/.config/opencenter/clusters/<org>/secrets/ssh/SSH keypairs

These files are local-only and must not be committed to Git. The Age key is synced to the cluster as a Kubernetes Secret (sops-age in flux-system namespace) by opencenter cluster deploy.

SOPS Configuration

PathScope
.sops.yaml (repo root)Organization-wide encryption rules
infrastructure/clusters/<cluster>/.sops.yamlInfrastructure secrets
applications/overlays/<cluster>/.sops.yamlApplication secrets

Air-Gap Build Paths

After opencenter-airgap init:

PathDescription
config/versions.envComponent version pinning (source of truth)
config/components.yamlComponent manifest (auto-generated + manual additions)
config/schemas/JSON Schema validation files
build/Intermediate build artifacts
build/state.jsonCheckpoint state for resume
dist/Final Zarf package output
dist/artifact-manifest.jsonPackage checksums
assets/Downloaded assets bundled into package
.secrets/Cosign keys (mode 0700, gitignored)

Logs

PathDescription
~/.local/state/opencenter/audit/CLI audit logs (30-day retention, 100 MB max)
/opt/opencenter/logs/Air-gap deployment logs (Zone C bastion)

Kubeconfig

After infrastructure provisioning, the kubeconfig is written to:

infrastructure/clusters/<cluster>/kubeconfig.yaml

The opencenter cluster env command sets KUBECONFIG to this path automatically:

eval "$(opencenter cluster env <org/name>)"