Back to landing page
Tasks

GitOps and Secrets

Connect a repository, reconcile workloads safely, and keep secrets out of Git.

GitOps is the supported deployment path. A commit to your configured repository changes application desired state; gh0stcloud reconciles it through Flux.

Secrets do not belong in Git. Use OpenBao and External Secrets.

Connect a repository

  1. Open Applications.
  2. Open the GitOps binding section.
  3. Choose the transport type and enter the repository URL.
  4. Enter branch and path.
  5. Check the sanitized preview before saving.
  6. Wait for Flux source and kustomization state to reconcile.

For examples, start with gh0stservice/ghc-gitops-example and read docs/02-gitops-binding.md.

Repository structure

Use a simple Kustomize structure first:

kustomize/
  base/
    <app>/
  overlays/
    ghc-basic/
      kustomization.yaml

Only add advanced overlays once the basic path reconciles.

Secrets workflow

StepOwner
Create secret values in OpenBao under the tenant path shown by gh0stportal.Tenant user
Define an ExternalSecret in GitOps that references the OpenBao path.Tenant GitOps
External Secrets Operator creates a Kubernetes Secret in the namespace.Platform runtime
Workload references the generated Kubernetes Secret.Tenant GitOps

Never put the secret value itself in the repository.

Service accounts

AccountUse for
Flux service accountFlux Kustomization and HelmRelease reconciliation.
Workload service accountApplication pods and runtime identity.

Do not use the Flux service account for workload pods unless gh0stportal explicitly tells you to.

RPC/function map

Portal actiongh0stplane surface
Load GitOps stateGetTenantApplicationsWorkspace
Save GitOps bindingUpdateTenantGitOpsBinding
Read OpenBao paths and secret workflow metadataGetTenantSecretWorkflow
Read onboarding state and next actionsGetTrialOnboardingWorkspace

Before asking an agent to edit GitOps

Give the agent:

  • target namespace from Applications;
  • desired app name;
  • expected hostname from Network & Exposure;
  • storage intent/PVC name from Data & Services;
  • secret path names, not secret values;
  • the example repo link.

Questions or ready to get started?

Talk to us