GitOps ownership
Terraform prepares cloud infrastructure. Helm bootstraps PIG once. After bootstrap, PIG owns its application releases, including supervisor updates. GitOps can continue to own your desired deployment configuration and secret delivery.
Resource ownership
Section titled “Resource ownership”| Owner | Resources |
|---|---|
| Terraform | Cloud databases, storage, workload identity trust and grants, networking, backup and retention settings. |
| Your Kubernetes configuration | Namespaces, analyzer ServiceAccount and identity annotations, PIGDeployment.spec, external secret delivery, and certificates. |
| PIG | Generated analyzer workloads, migration Jobs, supervisor application resources, and the PIG custom resource definition within installed permissions. |
The supervisor cannot widen its own permission grants. A release requiring new bootstrap permissions blocks until an administrator reviews and installs those grants. Cloud management permissions remain with Terraform.
Do not put the bootstrap in a Terraform helm_release resource, or reconcile PIG-generated workloads through another controller. PIG’s release policy is the single owner of their versions. Keep the bootstrap chart and values for recovery, without periodically reapplying them.
Direct Helm bootstrap
Section titled “Direct Helm bootstrap”Run the Helm installation once. Helm itself does not continuously reconcile resources. After creating PIGDeployment, use its release fields for application updates, pauses, and pins.
Do not run a later helm upgrade over the self-updated supervisor unless following the release’s recovery procedure.
Bootstrap with Flux
Section titled “Bootstrap with Flux”If Flux installs the bootstrap, hand ownership to PIG before enabling application updates.
-
Create an
OCIRepositoryforoci://ghcr.io/promptless/charts/pig-supervisor, pinned to the chart digest from your selected release. Create aHelmReleaseinpig-system, withwatchNamespace: pigin its values. Use the same reviewed chart and values as the direct Helm guide. -
Keep
PIGDeploymentout of the reconciled path while Flux installs the chart. The supervisor waits for this resource before starting release transitions. -
Wait for the bootstrap HelmRelease to become ready:
Terminal window kubectl wait helmrelease/pig-supervisor --namespace pig-system \--for=condition=ready --timeout=10m -
Commit
spec.suspend: trueon that HelmRelease in Git. Let Flux apply the change, then verify it:Terminal window kubectl get helmrelease pig-supervisor --namespace pig-system \-o jsonpath='{.spec.suspend}{"\n"}' -
Once the value is
true, add yourPIGDeploymentto the GitOps path that owns desired configuration. Keep its secret delivery and analyzer ServiceAccount in that path too.
Suspending only the OCIRepository does not suspend the installed release. See Flux’s HelmRelease suspend control.
Keep the bootstrap HelmRelease suspended and present in Git. Deleting it can trigger Helm uninstall; resuming it can restore an older chart over PIG’s self-updates. Do not separately reconcile the chart’s rendered resources through a Kustomization.
Other GitOps controllers
Section titled “Other GitOps controllers”Use a direct Helm bootstrap outside the controller’s managed application set. Let the controller manage only customer-owned configuration from the table above. Turning off automatic sync alone is not a durable ownership boundary if manual sync or pruning can still touch PIG’s generated resources.
If your policy requires continuous Helm reconciliation, choose manual Helm management and make your platform workflow responsible for every release.
Changes and recovery
Section titled “Changes and recovery”Commit pause or pin changes to the GitOps source of PIGDeployment.spec.release. A live patch can be reverted by your controller if Git still declares another value.
For cluster recovery, restore the same deployment identity and customer-owned configuration. Repeat the bootstrap handoff before creating the restored PIGDeployment. Follow updates and recovery to reconnect retained storage safely.