Skip to content

docs(security): add opt-in Manual installPlanApproval overlays (FIND-010)#76

Merged
pinikomarov merged 1 commit into
openstack-k8s-operators:mainfrom
pinikomarov:glasswing/find-010-manual-subscription-note
Jul 13, 2026
Merged

docs(security): add opt-in Manual installPlanApproval overlays (FIND-010)#76
pinikomarov merged 1 commit into
openstack-k8s-operators:mainfrom
pinikomarov:glasswing/find-010-manual-subscription-note

Conversation

@pinikomarov

Copy link
Copy Markdown
Contributor

Summary

Addresses OSPRH-32422 / FIND-010: OLM Subscriptions use Automatic install-plan approval and floating channel without startingCSV.

The shipped subscriptions for ESO, VSO, and openshift-gitops-operator use installPlanApproval: Automatic. This is intentional — it keeps the deployment simple and avoids the operational overhead of an in-cluster Job that must approve every new InstallPlan.

Rather than switching the base manifests to Manual (which requires hacky in-cluster Jobs for each component and doesn't scale well when multiple plans land simultaneously), this PR provides opt-in overlay components for deployments that need stricter change-control:

  • components/secrets/external-secrets-operator/manual-approval/ — switches ESO to Manual + pins startingCSV
  • components/secrets/vault-secrets-operator/manual-approval/ — switches VSO to Manual + pins startingCSV

Consumers include the overlay after the base component and update startingCSV when they want to advance the operator version. Administrators then approve the resulting InstallPlan (manually or via automation) before OLM installs the new CSV.

The openshift-gitops-operator subscription is excluded: it is applied by the Ansible bootstrap before ArgoCD exists, so no in-cluster Job can approve a Manual InstallPlan at that stage. Version gating is handled via openshift_gitops_deploy_git_ref in the automation repo.

Test plan

  • kustomize build with the overlay applied shows installPlanApproval: Manual and startingCSV on the subscription
  • Without the overlay, subscriptions remain Automatic (no behaviour change for existing consumers)

🤖 Generated with Claude Code

…-32422 / FIND-010)

The shipped subscriptions for ESO, VSO, and openshift-gitops-operator use
installPlanApproval: Automatic — operators upgrade automatically when the
catalog publishes a new version to the channel.  This is intentional: it
keeps the deployment simple and avoids the operational overhead of an
in-cluster Job that must approve every new InstallPlan.

For deployments that require stricter change-control over operator
upgrades (e.g. production environments where every component version
must be reviewed before installation), opt-in overlay components are
provided:

  components/secrets/external-secrets-operator/manual-approval/
  components/secrets/vault-secrets-operator/manual-approval/

These components switch installPlanApproval to Manual and pin a
startingCSV.  Consumers include them after the base subscription
component and update startingCSV whenever they want to advance the
operator version.  Administrators must then approve the resulting
InstallPlan (manually or via automation) before OLM installs the
new CSV.

The openshift-gitops-operator subscription is excluded from this
pattern: it is applied by the Ansible bootstrap before ArgoCD exists,
so no in-cluster Job can approve a Manual InstallPlan at that stage.
Version gating for that operator is handled via the
openshift_gitops_deploy_git_ref pin in the automation repo.

Addresses OWASP K8s Top 10 K07 (Vulnerable/Unverified Components).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@pinikomarov pinikomarov force-pushed the glasswing/find-010-manual-subscription-note branch from 28a6363 to 027876d Compare July 9, 2026 21:04
@pinikomarov pinikomarov self-assigned this Jul 9, 2026
@pinikomarov pinikomarov requested a review from cjeanner July 9, 2026 21:08
@pinikomarov pinikomarov requested a review from cjeanner July 10, 2026 12:40
@pinikomarov pinikomarov merged commit 14d85c8 into openstack-k8s-operators:main Jul 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants