Upgrade KubeRocketCI v3.13 to 3.14
This section provides detailed instructions for upgrading KubeRocketCI to version 3.14. Follow the steps and requirements outlined below:
We suggest backing up the KubeRocketCI environment before starting the upgrade procedure.
3.14 is a feature release. Upgrading from 3.13 requires no forced resource migrations and introduces no breaking Custom Resource schema or label changes. The platform dependencies added in 3.13 β cert-manager for the operator admission webhooks, GitFusion, Tekton Results, and Tekton Pipelines with the tekton.dev/v1 API β are unchanged and are already in place if you are on 3.13.x. Most of what is new in 3.14 is opt-in.
Envoy Gateway support is optional and disabled by default. A cluster without Envoy Gateway or the Gateway API CRDs upgrades to 3.14 without any changes β by default the platform renders standard nginx Ingress resources and zero HTTPRoute objects. Envoy Gateway is enabled explicitly, per component, as described in Step 4.
Step 1. (Required) Verify Prerequisitesβ
Confirm the platform is currently on a 3.13.x release before upgrading. The CHART column shows the installed edp-install version:
helm list -n <namespace>
The following platform dependencies are carried over from 3.13 and must remain in place. If you are upgrading from 3.13.x they are already satisfied β the commands below are a quick confirmation:
# cert-manager β required for the codebase-operator and cd-pipeline-operator admission webhooks
kubectl get crd certificates.cert-manager.io
# Tekton Pipelines β must expose the tekton.dev/v1 API (GA since v0.44); 3.14 is validated with v1.6.2
kubectl get deployment tekton-pipelines-controller -n tekton-pipelines \
-o jsonpath='{.spec.template.spec.containers[0].image}'; echo
# GitFusion and Tekton Results β required by krci-portal (repository browsing and pipeline history)
kubectl get deployment -n <namespace> | grep -E 'gitfusion|krci-portal'
Tekton Pipelines is bumped to the tested version 1.6.2 and Tekton cache to 0.4.5 in 3.14. No API migration is required β the tekton.dev/v1 API introduced in 3.13 is unchanged. When Tekton is managed through edp-cluster-add-ons, these versions are applied for you.
Step 2. (Recommended) Configure clusterName for Pipeline URLsβ
3.14 adds a clusterName value used to build correct krci-portal pipeline URLs (/c/<clusterName>/...). Set it to the same value as the portal's DEFAULT_CLUSTER_NAME. If left empty, it falls back to the first segment of global.dnsWildCard, which may not match.
global:
# Must match krci-portal.configEnv.DEFAULT_CLUSTER_NAME
clusterName: core
edp-tekton:
# Same value; used to construct pipeline links surfaced by Tekton
clusterName: core
You can skip this step only if the first segment of global.dnsWildCard already equals your DEFAULT_CLUSTER_NAME. Setting clusterName explicitly is safe and recommended.
Step 3. (Optional) Enable Cancel-in-Progress for Review Pipelinesβ
3.14 can automatically cancel a review PipelineRun when a newer commit arrives on the same Pull Request / Merge Request / Gerrit change, saving executor capacity. Cancellation is graceful (spec.status: CancelledRunFinally) β the finally tasks of the superseded run still execute and report status back to the git provider. It is disabled by default.
edp-tekton:
pipelines:
cancelInProgress: true
Step 4. (Optional) Enable Envoy Gateway and HTTPRoute Exposureβ
3.14 introduces optional Envoy Gateway exposure for Tekton EventListeners, GitServer webhooks, application Helm chart scaffolding, and the portal Networking tab. It is off by default, and the existing nginx Ingress path is unchanged. Skip this step entirely to keep nginx.
To opt in, a Gateway API-capable Envoy Gateway must already be deployed (for example, via edp-cluster-add-ons), then enable it per component:
global:
# Parent Gateway that HTTPRoutes attach to; the Gateway itself must already exist
gatewayApi:
gatewayName: main-gateway
gatewayNamespace: envoy-gateway-system
codebase-operator:
# Register new GitServer webhooks against the HTTPRoute host instead of the Ingress host
ingressController: envoy
edp-tekton:
gitServers:
my-github:
# ...existing gitServer configuration...
eventListener:
ingress:
enabled: true # kept as a fallback during cutover
httproute:
enabled: true # opt-in HTTPRoute for this EventListener
The cutover is reversible and per-gitServer. The Ingress continues to render as a fallback while httproute.enabled: true, so the webhook keeps working during cutover. To roll back, set ingressController: nginx and httproute.enabled: false β the HTTPRoute disappears on the next reconcile and the Ingress remains the active path. External reachability additionally requires the edge (ALB or load balancer) to route the host to Envoy.
Step 5. (Optional) Enable Kubernetes Audit Trailβ
The portal Admin β Audit Events page and the Triggered By field on PipelineRun details depend on the krci-audit add-on. The add-on is disabled by default. Upgrading to 3.14 does not enable it automatically.
To turn it on:
-
Follow Audit Trails Setup: create the database credentials Secret, set
krci-audit.enable: truein your add-ons values, and sync the add-on. -
Ensure the portal can reach the read API. The default in-cluster URL is:
krci-portal values (configEnv)configEnv:KRCI_AUDIT_URL: http://krci-audit-api.krci-audit:8080 -
To open Administration β Audit Events, sign in with OIDC as a user in a Keycloak group mapped to the portal
administratorrole (default group name:administrator, overridable withPORTAL_ADMIN_GROUPS). Service Account token sessions do not receive portal admin roles, so that menu is hidden for token login.
Skip this step if you do not need an in-platform audit trail yet. Without krci-audit, Triggered By shows N/A for runs that have no initiator in the trail.
Step 6. (Optional) Enable In-App Notificationsβ
3.14.1 adds an in-app notifications hub (header bell, unread badge, toasts) for platform events such as failed PipelineRuns. The UI can appear after upgrade, but ingestion stays off until you configure it.
-
Add a shared secret to the portal Secret wired through
extraEnvFrom(see the portal chartsecrets-example):portal-secret (excerpt)stringData:INTERNAL_EVENTS_TOKEN: "<generate-a-long-random-secret>" -
Deploy or update an in-cluster Argo Events Sensor that
POSTs to the portal internal events endpoint and sends the same value in thex-internal-events-tokenheader. UntilINTERNAL_EVENTS_TOKENis set, the portal responds503on that endpoint and no events are stored. -
After rotating the token, update both the portal Secret and the Sensor copy, then restart the portal Deployment so the new environment variable is loaded.
Notifications are an alpha capability: storage is local SQLite on a single portal replica, and every authenticated portal user currently sees the same event stream. Skip this step if you are not ready to operate the Sensor and token.
Step 7. (Informational) Review Pipeline Reporterβ
From 3.14.1, finished review PipelineRuns can publish a self-updating pull or merge request comment (per-task status table plus trailing logs of failed steps) via tekton-reporter inside edp-tekton / the pipelines-library chart.
-
The reporter ships enabled by default (
reporter.enabled: true). No upgrade action is required to keep the feature. -
To disable it, set:
values.yamledp-tekton:# Path may be under the pipelines-library / edp-tekton values your umbrella chart exposesreporter:enabled: false -
Comment links into the portal use
portalHostandclusterName. SetclusterNameas in Step 2 so those URLs resolve correctly.
Published logs come from steps that run pull request code. Secret masking is best-effort; enable the reporter only where that risk is acceptable for your pipelines.
Step 8. (Informational) New Portal Capabilitiesβ
krci-portal 0.6.0 (and the 3.14.1 portal updates) add the following capabilities. Most require no upgrade action beyond installing the new chart version:
- Service Account token login β operators can sign in with a Kubernetes Service Account token; OIDC configuration is now optional.
- Expanded Kubernetes mode β redesigned cluster overview, Custom Resource and CRD browsing for users without cluster-wide CRD access, and scale / restart / rollback actions for Deployments, StatefulSets, and DaemonSets.
- GitLab CI β a dedicated pipeline list and log viewer for codebases with
ciTool: gitlab. - Networking tab on stage details showing Gateways, HTTPRoutes, and Ingresses, plus HTTPRoute-derived external URLs in the Applications table. HTTPRoute data is most useful when Step 4 is enabled.
- Monitoring tab on PipelineRun details (per-step CPU and memory from Prometheus). Set
krci-portal.configEnv.PROMETHEUS_URLto your in-cluster Prometheus base URL (for examplehttp://prometheus.monitoring.svc:9090). If unset, the tab returns a precondition error. - Current deployed version in the CD stage deploy dropdown, a branch column on the applications table, and a stale badge for branches missing in git.
Admin β Audit Events and Triggered By are covered in Step 5. The notifications hub is covered in Step 6.
Step 9. (Informational) Resource Migrationsβ
No Custom Resource migrations or configuration-schema / label changes are required for this upgrade. Codebase, CodebaseBranch, CDPipeline, Stage, Tekton resources, and Argo CD ApplicationSet definitions created under 3.13 remain valid under 3.14. The 3.14 chart applies the updated CRDs in place, and existing resources are reconciled without manual conversion.
If you maintain custom Tekton pipelines or resource templates, no parameter or API changes are required in 3.14. The tekton.dev/v1 migration and the security-task parameter renames were completed in 3.13 β see Upgrade v3.12 to 3.13.
Step 10. (Informational) Breaking Changes and Deprecationsβ
There are no new breaking changes in 3.14. Deprecations carried over from 3.13 remain in effect:
edp-headlampstays disabled and is replaced bykrci-portal. If you completed the 3.13 portal migration, no further action is needed.
Step 11. Upgradeβ
- edp-cluster-add-ons (recommended)
- Helm
The recommended approach is to manage the upgrade through edp-cluster-add-ons via ArgoCD. Update the chart version and values in your add-ons repository, then let ArgoCD apply the changes.
1. In your edp-cluster-add-ons repository, update the chart version in clusters/core/addons/kuberocketci/Chart.yaml:
apiVersion: v2
name: edp-install
version: 3.14.1
appVersion: 3.14.1
dependencies:
- name: edp-install
version: 3.14.1
repository: https://epam.github.io/edp-helm-charts/stable
2. Apply any optional values changes from Steps 2-7 to clusters/core/addons/kuberocketci/values.yaml (and enable krci-audit in your add-ons apps values if you follow Step 5).
3. Commit and push the changes. ArgoCD will detect the diff and sync automatically, or trigger a manual sync from the ArgoCD UI.
For environments managed directly with Helm:
# Update the Helm repository
helm repo update
# Confirm the target chart version is available
helm search repo epamedp/edp-install --versions | grep 3.14.1
# Preview changes against your values
helm diff upgrade <release-name> epamedp/edp-install \
--version 3.14.1 \
-f values.yaml \
-n <namespace>
# Run the upgrade
helm upgrade --install <release-name> epamedp/edp-install \
--version 3.14.1 \
-f values.yaml \
-n <namespace> \
--timeout 10m \
--wait
The upgrade applies the updated CRDs and rolls the operators, edp-tekton, gitfusion, and krci-portal to their 3.14 versions. Allow 3-5 minutes for all pods to reach the Running state.
Step 12. Post-Upgrade Verificationβ
# All pods should return to Running
kubectl get pods -n <namespace>
# Confirm the operators, portal, and tekton are on their 3.14 image tags
kubectl get deployment -n <namespace> \
-o custom-columns=NAME:.metadata.name,IMAGE:'.spec.template.spec.containers[0].image' \
| grep -E 'codebase-operator|cd-pipeline-operator|krci-portal|gitfusion|tekton'
Then verify in the browser:
- Portal loads at
https://<PORTAL_URL>and authentication completes - Pipeline history and live logs load (requires Tekton Results)
- Pull Request / Merge Request browsing works (requires GitFusion)
- Pipeline URLs open the correct cluster path
/c/<clusterName>/...(see Step 2) - A superseded review pipeline run cancels correctly β only if
cancelInProgress: truewas enabled (see Step 3) - (If Envoy Gateway was enabled) the stage details Networking tab lists Gateways and HTTPRoutes, and the webhook still reaches the EventListener
- (If krci-audit was enabled) Triggered By resolves on a new PipelineRun, and an OIDC administrator can open Administration β Audit Events (see Step 5)
- (If notifications were enabled) the header bell receives a test or real platform event (see Step 6)
- (If the review reporter is enabled) a finished review PipelineRun updates the pull or merge request comment (see Step 7)