Upgrading
To 7.1.412
- Nothing to change. The release frees the PHP-FPM pool between requests again: on 7.1.4-6 to 7.1.411 every PHP request bound its worker to NGINX for a minute after the response, so a few requests per minute left a site slow, its readiness probe timing out and NGINX answering 502. Upgrade every installation on those versions. An installation that pins the image by
image.digestkeeps the image of that digest whatever the chart version says: set the digest of the 7.1.412 image, or clear the value so that the chart's tag applies. Until then, a script incustomPostInitScriptshelps a site, since the image runs it before NGINX starts:sed -i 's/fastcgi_keep_conn on;/fastcgi_keep_conn off;/' /etc/nginx/custom.d/01-common.conf.
To 7.1.411
- The pod has no HTTPS port any more. The image listens on port 80 only and the chart renders no port
https: not on the container, not on the Service, not in the NetworkPolicy. TLS ends at the Ingress, as before; an installation that reaches the site through the Ingress or the Service's porthttpneeds nothing.- Whatever used the Service's port
https(443), which answered with a placeholder certificate, has to use the porthttp, or the Ingress: a Service of typeLoadBalancerorNodePortaddressed on 443, an Ingress or a route of your own that names the Service's porthttps, a rule that forwards to 443. containerPorts.https,service.ports.https,service.httpsTargetPortandservice.nodePorts.httpsare gone fromvalues.yaml. A values file that still sets them renders as before, apart from the missing port, and the notes afterhelm upgradename the ones that are set. Take them out.
- Whatever used the Service's port
- The readiness and the startup probe ask over HTTP. Their defaults followed
wordpressScheme, so a site withwordpressScheme: httpswas asked on the porthttps. They now ask/healthz.phpon the porthttpwith the schemeHTTP, whateverwordpressSchemeis; a release that leaves the probes at their defaults needs nothing. One that setsreadinessProbe.httpGet,startupProbe.httpGetor a custom probe with the porthttpsor 443, or the schemeHTTPS, has to change it tohttpandHTTP: the chart refuses to render such a probe, because its pods would never become ready.helm templatewith the release's values shows it before the upgrade. - Responses no longer carry an
Alt-Svcheader that announces HTTP/3 on port 443. An Ingress controller that serves HTTP/3 announces it itself. - The reindex endpoint of the search sidecar has a key from this version. With
idx.enabledand neitheridx.reindexApiKeynoridx.existingReindexApiKeySecret,POST /api/reindexwas switched off. The chart now generates a key at the upgrade, keeps it in the Secret<fullname>-idx, and hands it to the search plugin, so "Rebuild index" in wp-admin works. Nothing has to be done. A tool that renders the chart without access to the cluster (helm template, Argo CD) would generate a new key with every render: setidx.reindexApiKeyor name a Secret there. - The pod is ready a little later after the upgrade, and the index build needs room on the volume. With
idx.enabled, the sidecar builds its index anew once, at its first start with this version, and needs the database for that start. The pod is not ready before the index is written: with the chart's default update strategy the earlier pod serves the site until then, withRecreatethe site is away for that time.- The index is on the WordPress volume, under
idx/. The build needs room there for three to four times the new index file while it runs, next to the file of the earlier version, which is removed once the new index is written. On a site of 15,600 posts and pages the new file has 143 MB and the earlier one 415 MB. Check the free space on the volume before the upgrade of a large site: without room the build fails and is tried again every 5 seconds, and the pod does not get ready.
- The index is on the WordPress volume, under
To 7.1.410
- Back the database up before the upgrade. With
mariadb.enabledand the chart's defaultmariadb.image, the bundled MariaDB moves from 12.2 to 12.3 and starts on the existing data directory. It updates its system tables at that first start, and MariaDB does not support going back to the earlier series. An installation that setsmariadb.imageitself keeps its image, and an external database is not affected. - The search is ready a little later after the upgrade. With
idx.enabled, the sidecar builds its index anew once, at its first start with this version. Nothing has to be done by hand.
To 7.1.409
- The search sidecar's image carries the chart version as its tag. It is built by this project's release from now on: with
idx.enabled, the chart runsghcr.io/ioanalytica/wordpress-idx:7.1.409, where it ran a1.x.ytag before. An installation that takes the image from its default repository needs nothing. One that pointsidx.image.registryoridx.image.repositoryat a mirror copies the image there under the chart version before it upgrades;idx.image.digeststill wins over the tag. - Helm checks every value against the schema.
values.schema.jsonnow covers every value and refuses a value of a kind the chart cannot use, such as a list where the chart reads a single value.helm templatewith the release's values shows before the upgrade whether one of them is refused. wordpressExtraConfigContenttakes effect. A release that has set it, so far without effect, gets its PHP statements evaluated inwp-config.php. Check the content first: a statement PHP cannot parse stops every request.customHTAccessCMandmetrics.prometheusRuleare gone fromvalues.yaml. Neither had an effect, and a values file that still sets them renders as before.- The defaults under
containerSecurityContextchanged. They apply only withcontainerSecurityContext.enabled: true, which stays off by default. With the earlier defaults (user 1001, a read-only root filesystem, all capabilities dropped) neither container started; the defaults are now what the image runs with:runAsUser: 0,runAsGroup: 0,runAsNonRoot: false,readOnlyRootFilesystem: false,capabilities.drop: []. A release that enables the context and sets these values itself renders as before. - With
metrics.enabled, the NetworkPolicy admits the exporter's port, like the HTTP port: from every source withnetworkPolicy.allowExternal: true, the default. A rule innetworkPolicy.extraIngressthat admitted the scrape is no longer needed; a release whose rule admitted it from selected sources only has the port open to every source now, andnetworkPolicy.allowExternal: falsenarrows all of the pod's ports. metrics.serviceMonitor.metricRelabelingsandmetrics.serviceMonitor.selectortake effect: rules and labels set there, so far without effect, reach the ServiceMonitor with this version.- Both images and the chart are signed; Verify a release has the commands.
To 7.1.408
The chart version scheme changed: 7.1.408 follows 7.1.4-7. The build number moved from a -N suffix into the patch component (see Chart versions), so releases are stable SemVer versions and no longer pre-releases. Chart and image are otherwise the same as in 7.1.4-7; no values changes are required.
- A deployment that pins an exact version (
--version, a FluxHelmRelease, an Argo CDtargetRevision) changes the pin to the new form with its next upgrade. --develis no longer needed to install or upgrade without--version.- A range that named a pre-release to match the earlier versions needs a look at its upper bound:
- Without one, it keeps matching.
>=7.1.0-0selects the new versions too, and its pre-release part is no longer needed (>=7.1.0). - Bounded to one WordPress patch release, it matches nothing new and upgrades stop without an error:
>=7.1.4-0 <7.1.5-0accepts7.1.4-7but not7.1.408. The builds on WordPress 7.1.4 are now>=7.1.400 <7.1.500.
- Without one, it keeps matching.
- Earlier versions and their image tags stay published unchanged.
To 7.0.0-2
First-class Traefik support:
ingress.ingressClassName: traefikis now a fully supported steady-state value alongsidenginxandnginx-traefik. See "SupportedingressClassNamevalues" in the Ingress section for the per-class behaviour matrix (which provider serves the Ingress, whether nginx-style annotations are translated, silently ignored, or interpreted natively).New:
redirect:values block (see Ingress → Redirects section above). Backwards-compatible — opt-in, defaults to disabled. Renders akind:Ingressonnginxand akind:Middleware+kind:IngressRoute(+ optionalkind:Certificate) onnginx-traefik/traefik. Note: thenginx-path redirect drops the request path (annotation limitation); the Traefik-path redirect preserves it (redirectRegexwith capture group).Breaking: the bitnami-compatible
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"annotation is no longer honoured. If you relied on it for cert expansion only, setingress.tlsWwwPrefix: true(orsecondaryIngress.tlsWwwPrefix: true). If you relied on it for the actual www-magic redirect, declare the redirect explicitly via the newredirect:block.
To 7.0.0-1
Updates WordPress to 7.0.0. Review the WordPress 7.0 release notes for breaking changes before upgrading. No chart values changes required.
To 6.9.4-13
Two nginx behavior fixes:
- Removes an overly restrictive method allow-list in the image's nginx config that returned
444(TCP RST) for any method outsideGET/HEAD/POST. This silently broke the WordPress REST API forOPTIONS(capability discovery + CORS preflights),PUT,DELETE, andPATCH— methods the Gutenberg block editor and most REST clients rely on. After upgrading, all HTTP methods reach PHP-FPM, and WordPress handles unsupported methods itself with proper405 Method Not Allowedresponses. - Fixes a dead
volumeMountso thatnginxCustomServerBlockAddition/existingCustomServerBlockAdditionConfigMapactually take effect. Previously the ConfigMap volume was declared in the Deployment but never mounted, so user-supplied server-block additions were ignored.
No values changes are required. If you use existingCustomServerBlockAdditionConfigMap, ensure the ConfigMap exposes its content under the key 01_userconfig.conf.
To 6.9.4-9
Version 6.9.4-9 removes all Bitnami chart dependencies. Key changes:
- MariaDB: Now uses a native internal deployment (image:
mariadb:12.2.2-noble) instead of the Bitnami MariaDB subchart. Themariadb.imageparameter is new. Themariadb.architectureparameter (replication mode) is no longer supported for internal deployments. - Cache: The
memcached.enabledkey is preserved for backward compatibility. When enabled, it now deploys Dragonfly (serving both Redis and Memcached protocols) instead of the Bitnami Memcached subchart. New parameters:memcached.image,memcached.password,memcached.persistence.*. - Resource presets: Still available via
resourcesPresetbut now provided by theioanalytica/commonlibrary chart. - Volume permissions: The
volumePermissionssection has been removed. - Default credentials: Database defaults changed from
bitnami_wordpress/bn_wordpresstowordpress/wp_user. - Common chart: Switched from
bitnami/commontoioanalytica/common.