fix(ci): fix operator deployments on K8s — inherit rendering, rollout wait, and orchestrator config [release-1.9] - #4423
Conversation
|
/test ? |
|
/test e2e-gke-operator-nightly |
e84fb70 to
c451bc3
Compare
|
/test ? |
|
/test e2e-ocp-operator-nightly |
|
The operator wasn’t running Backstage, it failed during the dynamic plugins container installation, so Backstage never started. Now Backstage is up and the tests are running as expected. |
The operator creates orchestrator resources asynchronously after the Backstage CR is applied. The cleanup now polls for up to 60s for the sonataflow jobs to appear before attempting deletion, instead of running immediately when the resources may not exist yet. Addresses review feedback: redhat-developer#4423 (comment) [skip-build] Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
/test e2e-eks-operator-nightly |
|
/test e2e-eks-operator-nightly |
|
/test e2e-eks-operator-nightly |
|
@zdrapela now the issues were resolved! |
|
/test e2e-eks-operator-nightly |
|
/test e2e-ocp-helm |
The operator creates orchestrator resources asynchronously after the Backstage CR is applied. The cleanup now polls for up to 60s for the sonataflow jobs to appear before attempting deletion, instead of running immediately when the resources may not exist yet. Addresses review feedback: redhat-developer#4423 (comment) [skip-build] Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
f955465 to
851cb28
Compare
zdrapela
left a comment
There was a problem hiding this comment.
Shouldn't wait_for_operator_rollout be used in ocp-operator.sh after deploy_rhdh_operator too? Or is this K8s specific?
…deploy Address review comment from zdrapela on PR redhat-developer#4423: ocp-operator.sh was missing wait_for_operator_rollout calls after deploy_rhdh_operator, inconsistent with AKS/EKS/GKE scripts. Added the wait in all 5 call sites across initiate_operator_deployments, initiate_operator_deployments_osd_gcp, and run_operator_runtime_config_change_tests to prevent the same race condition on OCP deployments. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Thanks, you are right. I just fixed it |
|
@gustavolira: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
…figMap
The value files use Helm escaping for {{inherit}} tags:
{{ "{{" }}inherit{{ "}}" }}. Helm renders this automatically, but operator
deployments use create_dynamic_plugins_config() which extracts the YAML
directly without Helm rendering. The install-dynamic-plugins.py init
container then fails because it receives the raw Helm escape syntax
instead of {{inherit}}.
Add sed substitutions to strip the Helm escaping when generating the
dynamic plugins ConfigMap for operator deployments.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The RHDH operator's internal Helm chart creates orchestrator/SonataFlow infrastructure (database jobs, platform resources) even on non-OpenShift environments where it's not supported. This causes CreateContainerConfigError on GKE/AKS/EKS because required secrets and operators are not available. Add cleanup_orchestrator_resources() that removes SonataFlow jobs and resources after operator deployment on K8s. Called in all GKE, AKS, and EKS operator deployment scripts for both showcase and showcase-rbac. [skip-build] Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The operator creates orchestrator resources asynchronously after the Backstage CR is applied. The cleanup now polls for up to 60s for the sonataflow jobs to appear before attempting deletion, instead of running immediately when the resources may not exist yet. Addresses review feedback: redhat-developer#4423 (comment) [skip-build] Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The RBAC diff files for AKS/EKS/GKE had `plugins: []` which left orchestrator plugins from the base file enabled after merge. This caused init containers to download unnecessary OCI plugins and the operator to create sonataflow-database jobs that fail (missing PostgreSQL secrets on K8s). Add explicit orchestrator plugin disable entries to all K8s RBAC diff files and fix cleanup_orchestrator_resources to match job names by prefix instead of exact field-selector (jobs have random suffixes). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…unction Fix prettier code style in utils.sh and add explicit return statement at the end of cleanup_orchestrator_resources (Sonar S7682). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…oyments The cleanup function deletes resources managed by the RHDH operator, triggering reconciliation that creates a second ReplicaSet (double rollout). On EKS this causes PostgreSQL EBS Multi-Attach errors because the volume can't be reattached to a different node during the rollout. Since orchestrator plugins are now disabled in all K8s RBAC diff files, the failing sonataflow-database jobs are harmless background noise that don't block Backstage from starting. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add --set orchestrator.enabled=false to all K8s helm upgrade commands (AKS, EKS, GKE) to prevent the chart from creating sonataflow-database jobs and other orchestrator infrastructure that is not supported on K8s. The orchestrator: null in diff files gets removed by yq merge's del(.. | select(. == null)), so the chart falls back to its default (enabled: true). The --set flag takes highest precedence in Helm. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The RHDH operator updates the Deployment spec multiple times after the Backstage CR is applied, creating multiple ReplicaSets (double rollout). Two competing pods cause 503 errors as they conflict on the database. Add wait_for_operator_rollout() that waits for the deployment to exist and for kubectl rollout status to complete before proceeding, ensuring only one ReplicaSet is active. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…d code Move `orchestrator.enabled: false` from `--set` flags in helm commands to the diff-values YAML files for all K8s platforms (EKS, AKS, GKE, OSD-GCP, upgrade). This follows the existing pattern and makes the configuration more readable and declarative. Also removes the unused `cleanup_orchestrator_resources()` function. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…deploy Address review comment from zdrapela on PR redhat-developer#4423: ocp-operator.sh was missing wait_for_operator_rollout calls after deploy_rhdh_operator, inconsistent with AKS/EKS/GKE scripts. Added the wait in all 5 call sites across initiate_operator_deployments, initiate_operator_deployments_osd_gcp, and run_operator_runtime_config_change_tests to prevent the same race condition on OCP deployments. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7268891 to
4cd1983
Compare
|
|
/test e2e-aks-helm-nightly |
5cc4db2
into
redhat-developer:release-1.9



Summary
Fixes multiple CI issues affecting K8s operator deployments (AKS, EKS, GKE, OSD-GCP) on the release-1.9 branch.
1. Render Helm template escapes in operator ConfigMap
Value files use
{{ "{{" }}inherit{{ "}}" }}which Helm renders automatically, but operator deployments use these files directly viayqwithout Helm rendering. Added sed post-processing inconfig::create_dynamic_plugins_configto convert the escapes to{{inherit}}.Related: #4414 (merged to main)
2. Wait for operator rollout to stabilize
Added
wait_for_operator_rollout()to AKS, EKS, and GKE operator deployment scripts. The RHDH operator may update the Deployment spec multiple times after the Backstage CR is applied, causing race conditions with subsequent steps (e.g., ingress patching, spot instance configuration).3. Orchestrator config in diff-values files
Moved orchestrator-related plugin configuration to the appropriate diff-values files and disabled orchestrator plugins on K8s RBAC deployments where they are not needed.
Changed files
.ci/pipelines/utils.sh—{{inherit}}sed fix +wait_for_operator_rollout()function.ci/pipelines/cluster/{aks,eks,gke}/*-operator-deployment.sh— callwait_for_operator_rollout.ci/pipelines/value_files/diff-values_showcase*.yaml— orchestrator config adjustmentsTest plan
{{inherit}}is correctly rendered in operator dynamic-plugins ConfigMap🤖 Generated with Claude Code