version v7.2.
For up-to-date documentation, see the
latest version.
ADR
7 minute read
You find here the detailed architecture decision record that references in the TASD .
For information part of theses decision are logged in Lewis Craftsmanship archi decisions list .
ADR001: From services to product to deploy services
Status: Accepted in September 2022
- Creation of sf-package in September 2022
- Recorded in [SWF organization] in April 2023
Context
- Software Factory services available on TDP C2, TDP C3, RTDP.
- Code for TDP C2 & TDP C3 + platform is similar (pipeline, terraform for IaaS, helm + kubectl for Kubernetes) but not in only one code base.
- Need to merge our different repos.
- Need to deploy a Software Factory on CASTLE.
- Plan to deploy Country Eyes Only Software Factories.
Decision
- New deliverable: a product.
- Deploy and update CASTLE with the product (1rst deployment in March 2023).
- In the mid/long term, platform TDP C2 & C3 will migrate to the product delivery.
- Keep in mind that RTDP is currently directly deployed on a VM and will not be compatible with the product.
Consequences
- Put in place Smart Delivery team that will manage the product.
ADR002: Deploy using Flux
Status: Accepted in January 2023
Context
- Software Factory product launch.
- Deploying SF on TDP C2 & TDP C3-CA with pipelines & runners.
- DevOps mode.
- Analysis on different deployment mode (DevOps with pipeline, GitOps with Flux / with ArgoCD) + POC.
- Pipeline require credential to be external of the Kubernetes Cluster.
- Flux deploy and update using one source of trust, and store internally secrets.
- GitLab choose Flux.
Decision
- Use Flux.
Consequences
- Refactor POC to become the product.
ADR003: Add components Black Duck and Synopsys Alert
Status: Accepted in June 2024
Context
- Software Factory product v0.x with GitLab, Artifactory and Xray
- SWaaP v0.x is deployed on CASTLE.
- Still deploying SF on TDP C2 & TDP C3-CA with pipelines & runners.
Decision
Consequences
- Update documents: TASD
- Add COTS and associated LLD
ADR004: Add components Xray, Orchestrator, Code companion and SF Documentation
as bundle and Add Boarding & Offer Management as add-on
Status: Accepted in September 2024
Context
- SWaaP v1.4 is delivered
Decision
- Add Xray
- Add SonarQube
- Add Code companion
- Plan for adding SF Documentation
- Offer Management and Boarding
Consequences
- Update documents: TASD
- Add COTS and associated LLD
ADR005: Remove Boarding & Offer Management; Add component Coverity
- Remove Boarding & Offer Management
- Add Coverity to SWaaP 3.2
Status: Accepted in April 2025
Context
- SWaaP v3.0 is delivered.
- Coverity introduction was partially done but not officially added to SWaaP.
Decision
Consequences
- Remove Boarding & Offer Management in TASD
- and in all architecture documents
- Add Coverity in TASD
- Create Coverity LLD
ADR006: Switch to a fork to build containers with Kaniko
Status: Accepted in September 2025
Context
- Risk DVa-13 No more acceptable to build container on Software Factory with Kaniko because OSS project is archived.
Decision
- Switch to mzihlmann kaniko fork
- For more details, see study
Consequences
- Implement the step in nextgen-cicd
- Check our built container use this step:
- Close the Risk DVa-13
ADR007: Add Diagram as code with Kroki component as bundle
Status: Accepted in September 2025
Context
- SWaaP v4.1 is delivered
Decision
Consequences
ADR008: Move from nginx Ingress to Gateway API
Status: Accepted in June 2026
Context
Introduction
The Kubernetes SIG Network and Security Committees announced recently the depreciation and retirement of Ingress-nginx in March 2026.
Ingress-nginx is the most popular implementation of the Ingress API and so is a critical component to be able to deploy and use the Software Factory. Indeed, all HTTP requests are managed and routed by the Ingress Controller.
SWaaP only support (see prerequisites
and TASD PRE_05
) one Ingress Controller:
the Ingress-nginx
Controller developed by the Kubernetes community.
All development and integration environments use the Ingress-nginx Controller.
Besides, the default provided SWaaP configuration relies on custom nginx annotations to configure the Ingresses that expose the services (for example: WAF configuration).
We also depend on what is made available by the different editors we integrate.
Ingress API status
It’s fundamental to dissociate the Ingress API defined by Kubernetes from its implementation. Various editors provide controllers that implement that specification.
The only thing that is retired is one implementation from the Kubernetes community based on nginx (called Ingress-nginx Controller).
Regarding the API, the official documentation clearly states that:
- The Ingress API is generally available
- The Ingress API is subject to the stability guarantees for GA APIs
- The Kubernetes project has no plans to remove Ingress from Kubernetes
But it also states that:
- The Ingress API has been frozen
- The Ingress API is no longer being developed, and will have no further changes or updates made to it.
And so, The Kubernetes project recommends using Gateway (Gateway SIGS ) instead of Ingress .
SWaaP status
- Support of Gateway API for SF on RTDP => opportunity to integrate in the product.
- GitLab move to Gateway API .
- Most of platform will also move to Gateway API, but some late.
Platfrom status
- TDP:
- Not using the product
- KaaS is supporting GW-API. On integration platform, need KaaS upgrade.
- RTDP:
- Already using GW-API with Istio x envoy - Developed on their side
- May use product as soon as delivery is ready, but as already implemented locally no hurry/dependency.
- TP-S3NS
- Already using GW-API with Google - Developed on their side
- Will use our delivery as soon as published, but as already implemented locally no hurry/dependency.
- CASTLE:
- Support GW-API Istio Reference
- Plan to be decommissioned after TP-S3NS migration, so may no have plan to migrate.
- R-Castle
- GW-API not supported. In their roadmap.
- CEO:
- TNL: Use VMware AVI Load Balancer (Tanzu)
- TAU: Use VMware AVI Load Balancer (Tanzu)
- TUK: Use nginx for now. Traefik is candidate
- So no plan regarding GW-APIs
- Air Gap
- Currently using KAST 7.1 with only nginx ingress.
- KAST publish a specific blog on this topic.
- latest KAST 7.4 supports GW-API with APISIX .
Others
In consequence, we will have every scenario from users that will stay on nginx and others ready to ship.
Currently some components of SWaaP integrate WAF. These annotations will be move to envoy.
DevEnv is required for testing both ingress & Gateway API.
Integration platform currently uses nginx ingress. A KaaS ‘upgrade’ (migration to a fresh new cluster) is planed between SWaaP 7.0 & SWaaP 7.1 delivery.
On components part:
- GitLab => already supporting Gateway API
- Artifactory + Xray => no native support. documentation
- SonarQube Helm chart seems to support Gateway API since 10.7
- Coverity => no native support.
- Black Duck => not support at all by the editor => we developed ingress. On developed ingress no native support.
- Black Duck Alert => not support at all by the editor => we developed ingress. On developed ingress no native support.
- sf-docs => not native support - to be developed in the chart
- Code companion (backend) - Already supported - just change default configuration
- Kroki => not requirement because no more endpoint.
- Orchestrator => not deployed. not native support - to be developed in the chart, but not hurry
Decision
- Move to Gateway API with Istyo implementation
- For DevEnv, support both nginx ingress and Gateway API
- Transition strategy:
- nginx recommended SWaaP <= 8.0.
- Gateway API recommended SWaaP >= 8.1 and nginx deprecated
- but nginx still supported until SWaaP 10.0.
- Integration platform will test Gateway API configuration inline with release description.
- WAF migartion with Istio envoy implementation
Consequences
- Add Gateway API support in SWaaP and dev-env
- Update components backend for at least SWaaP 8.1:
- GitLab
- Artifactory + Xray
- SonarQube
- sf-docs
- Code companion (backend) - Already supported - just change default configuration
- Update components backend for at least SWaaP 9.0:
- Coverity
- Black Duck => not dep
- Black Duck Alert
Don’t support for Kroki
Risk open & accepted to no more testing nginx Ingress on integration platform.
Communicate in release 7.2 on that plan.