Skip to content

CAI deploy application v3.6.0 (2026-08-21)

To see how you can use the CAI deploy application, read Deploy AI Security to the cloud.

Features

  • Google Cloud Platform: Bump Google Kubernetes Engine cluster version to 1.34
  • Microsoft Azure: Bump Azure Kubernetes Service cluster version to 1.34
  • Amazon Web Services: Bump Elastic Kubernetes Service cluster version to 1.34

Bug fixes

  • Configuration: Propagate application_url to Azure and GCP provider configs
  • NGINX Ingress: Set ingressClassName explicitly so F5 NGINX Ingress Controller claims the moderator ingress
  • Oracle Cloud Infrastructure (OCI): Fully qualify the NGINX Ingress Controller image for OCI Kubernetes Engine (OKE) short-name mode
    • OKE nodes reject the nginx-ingress chart's default nginx/nginx-ingress repository as an ambiguous short name, leaving the controller pod in ImageInspectError. Pin the repository to docker.io and let the chart's appVersion supply the tag.
  • NGINX Ingress: Replace end-of-life ingress-nginx with F5 NGINX Ingress Controller
    • The community kubernetes/ingress-nginx controller passed end of life in March 2026 and no longer receives security patches; its designated successor, InGate, was retired without shipping. OCI and Azure were the two providers deploying it AWS (ALB) and GCP (GCE Ingress) are not affected.
    • Both now install the actively maintained F5 nginx-ingress chart 2.6.4 from https://helm.nginx.com/stable. As this is the OSS edition, the installer requires no NGINX Plus license or private registry credentials. Azure also drops the pulumi-kubernetes-ingress-nginx component, which wrapped the same retired chart and hid its version from this repo. The controllers are not drop-in equivalents, so four behaviours are now explicitly preserved:
    • The moderator ingress now sets spec.tls.
    • F5 NIC serves a named host over HTTPS only when that host is listed there. The previous controller's default-ssl-certificate covered every host. The certificate is served from controller.wildcardTLS. It stays in the NGINX Ingress namespace. It is no longer copied into each application namespace.
    • The HTTPS redirect uses nginx.org/ssl-redirect. The nginx.org/redirect-to-httpsalternative keys off X-Forwarded-Proto, which the L4 cloud load balancers in front of these clusters never set.
    • The /internal 403 moves to nginx.org/location-snippets, the same nginx context the previous configuration-snippet occupied, gated by controller.enableSnippets.
    • Azure enables controller.healthStatus at /healthz, which its load balancer probes and which NIC does not serve by default.
    • Ingress class selection moves from the deprecated kubernetes.io/ingress.class annotation to controller.ingressClass.setAsDefaultIngress, since F5 NIC matches on spec.ingressClassName.
    • AGIC on Azure is unchanged. Azure's use-forwarded-headers and compute-full-forwarded-for have no F5 equivalent and are dropped rather than approximated; both were already inert behind a load balancer that does not inject X-Forwarded-For.
  • Docker: Purge unused linux-libc-dev to clear CVE findings
  • Prefect: Set default prefectUiApiUrl
    • Update values based on new prefect chart structure
    • Removes redundant prefect server values overrides, updates harbor repo name

Refactors (1)

  • Configuration: Drop per-file ruff ignores and make config modules lint-clean

Updated at: