Skip to content

feat: upgrade geoserver to 3.0.1 (MAPCO-9312) - #6

Open
roicohen326 wants to merge 6 commits into
masterfrom
feat/mapco-9312-geoserver-3.0.1
Open

roicohen326 wants to merge 6 commits into
masterfrom
feat/mapco-9312-geoserver-3.0.1

Conversation

@roicohen326

@roicohen326 roicohen326 commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor
Question Answer
Bug fix ✖
New feature ✔
Breaking change ✖
Deprecations ✖
Documentation ✖
Tests added ✖
Chore ✖

Related issues: #MAPCO-9312

Further information:

@roicohen326
roicohen326 requested a review from a team as a code owner September 22, 2026 14:40
@NivGreenstein

Copy link
Copy Markdown
Contributor

@roicohen326 , Thank you for the PR🚀!
Please deploy it at a non-prod environment and check that everything is still valid.
Until then, mark this pr as draft.
If the image introduce breaking changes, change the PR's title to feat!:
Update Repo's helm if needed.
Don't forget to deploy it with Metrics and Telemetry enabled.
Once done, contact me.

Also, make sure to remove AI comments

Upgrades the kartoza base image from 2.27.1--v2025.07.17 to
3.0.1--v2026.09.04, which addresses CVE-2026-76904 (critical,
unauthenticated PostGIS SQL injection via GeoTools).

BREAKING CHANGE: GeoServer 3.0 moves to Java 21 and Tomcat 11
(Jakarta EE). The data_dir migration is one-way -- once 3.0.1 rewrites
the catalog, 2.27 may not be able to read it back. Back up the data dir
before deploying.

kartoza restructured their entrypoint scripts in 3.0: functions.sh was
split into scripts/lib/*.sh and entrypoint.sh is now a thin orchestrator.
The single line this image used to patch out did three things, and in
3.0.1 those three live in three places:

  chmod o+rw CERT_DIR  -> lib/utils.sh, own line       (sed)
  gwc_file_perms       -> geo_data_file_perms, guarded (env vars)
  find ... chmod 400   -> lib/utils.sh, own line       (sed)

All three fail with EPERM under OpenShift's arbitrary UID and abort the
entrypoint (set -e), so all three still need to be disabled.

The sed is also given grep pre/post assertions. sed exits 0 when it
matches nothing, so the previous form would silently no-op on a
restructured upstream and produce an image that builds green and only
fails at runtime.
@roicohen326
roicohen326 force-pushed the feat/mapco-9312-geoserver-3.0.1 branch from c3a9556 to b306b2d Compare September 23, 2026 10:35
@roicohen326 roicohen326 changed the title feat: upgrade geoserver to 3.0.1 (MAPCO-9312) feat!: upgrade geoserver to 3.0.1 (MAPCO-9312) Sep 23, 2026
@roicohen326
roicohen326 marked this pull request as draft September 23, 2026 10:36
@roicohen326 roicohen326 reopened this Sep 24, 2026
@roicohen326

Copy link
Copy Markdown
Contributor Author

@roicohen326 , Thank you for the PR🚀! Please deploy it at a non-prod environment and check that everything is still valid. Until then, mark this pr as draft. If the image introduce breaking changes, change the PR's title to feat!: Update Repo's helm if needed. Don't forget to deploy it with Metrics and Telemetry enabled. Once done, contact me.

Also, make sure to remove AI comments

Hi Niv, thanks for the review. Going through your points:
Non-prod deployment: Deployed to raster-dev as pp-geoserver. We ran basic edge cases: WFS queries from the catalog and viewing polygon parts. We found no breaking changes between 2.26.0 and 3.0.1, so I changed the PR to a regular feat:. The pod starts under OpenShift's arbitrary UID with no permission errors.

Image tag: Follows the existing scheme, v2.1.0-3.0.1 (package.json bumped to 2.1.0). The image is already built and pushed to ACR.
Repo helm: Updated the image tag in helm/values.yaml to geoserver-os:v2.1.0-3.0.1.

  • Metrics: the pod's scrape annotation points at port 9117, and nothing listens there. I port-forwarded the pp-geoserver nginx exporter and confirmed /metrics on 9113 serves data, so that part of the pipeline works.
  • Traces: working.
    Let me know if you'd like anything else checked before I move it out of draft.

@NivGreenstein

NivGreenstein commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

@roicohen326 , Thank you for the PR🚀! Please deploy it at a non-prod environment and check that everything is still valid. Until then, mark this pr as draft. If the image introduce breaking changes, change the PR's title to feat!: Update Repo's helm if needed. Don't forget to deploy it with Metrics and Telemetry enabled. Once done, contact me.

Also, make sure to remove AI comments

Hi Niv, thanks for the review. Going through your points:

Non-prod deployment: Deployed to raster-dev as pp-geoserver. We ran basic edge cases: WFS queries from the catalog and viewing polygon parts. We found no breaking changes between 2.26.0 and 3.0.1, so I changed the PR to a regular feat:. The pod starts under OpenShift's arbitrary UID with no permission errors.

Image tag: Follows the existing scheme, v2.1.0-3.0.1 (package.json bumped to 2.1.0). The image is already built and pushed to ACR.

Repo helm: Updated the image tag in helm/values.yaml to geoserver-os:v2.1.0-3.0.1.

  • Metrics: the pod's scrape annotation points at port 9117, and nothing listens there. I port-forwarded the pp-geoserver nginx exporter and confirmed /metrics on 9113 serves data, so that part of the pipeline works.

  • Traces: working.

Let me know if you'd like anything else checked before I move it out of draft.

Did you check PostgreSQL SSL connection with certificates?

Also, if you locally built and pushed v2.1.0-3.0.1 to our ACR, this is VERY wrong and should never do such a thing. We have release-please workflow and docker build and push workflow that handles release and build. Please delete it ASAP. Thanks.

If the PR is ready for my review, please mark it back from draft pr.
And change the title if needed

@roicohen326 roicohen326 changed the title feat!: upgrade geoserver to 3.0.1 (MAPCO-9312) feat: upgrade geoserver to 3.0.1 (MAPCO-9312) Oct 1, 2026
@roicohen326

Copy link
Copy Markdown
Contributor Author

@roicohen326 , Thank you for the PR🚀! Please deploy it at a non-prod environment and check that everything is still valid. Until then, mark this pr as draft. If the image introduce breaking changes, change the PR's title to feat!: Update Repo's helm if needed. Don't forget to deploy it with Metrics and Telemetry enabled. Once done, contact me.

Also, make sure to remove AI comments

Hi Niv, thanks for the review. Going through your points:
Non-prod deployment: Deployed to raster-dev as pp-geoserver. We ran basic edge cases: WFS queries from the catalog and viewing polygon parts. We found no breaking changes between 2.26.0 and 3.0.1, so I changed the PR to a regular feat:. The pod starts under OpenShift's arbitrary UID with no permission errors.
Image tag: Follows the existing scheme, v2.1.0-3.0.1 (package.json bumped to 2.1.0). The image is already built and pushed to ACR.
Repo helm: Updated the image tag in helm/values.yaml to geoserver-os:v2.1.0-3.0.1.

  • Metrics: the pod's scrape annotation points at port 9117, and nothing listens there. I port-forwarded the pp-geoserver nginx exporter and confirmed /metrics on 9113 serves data, so that part of the pipeline works.
  • Traces: working.

Let me know if you'd like anything else checked before I move it out of draft.

Did you check PostgreSQL SSL connection with certificates?

Also, if you locally built and pushed v2.1.0-3.0.1 to our ACR, this is VERY wrong and should never do such a thing. We have release-please workflow and docker build and push workflow that handles release and build. Please delete it ASAP. Thanks.

If the PR is ready for my review, please mark it back from draft pr. And change the title if needed

Thanks Niv, and sorry: my previous comment was inaccurate on a few points.
Correcting:

ACR: v2.1.0-3.0.1 was not pushed.
I did build locally and push test images, only to validate on raster-dev .
The local build and push for raster was coordinated with Shlomi.

Versioning: reverted my manual package.json bump; the version is left to the release.

PostgreSQL SSL: not checked yet. Our raster-dev deployment doesn't use certificate auth, and cert-start.sh is unchanged in this PR. I'll verify it against a Postgres that requires client certificates and update here.

Title: changed to feat: (no breaking changes found).

@syncush

syncush commented Oct 1, 2026

Copy link
Copy Markdown

@roicohen326 you will need to make sure you keep the ACR nice and neat, clean up after you are done testing.
@ronenkapelian our PG cert is expired; you will need to invoke new one to let Roi test it over SSL connection.

@NivGreenstein

NivGreenstein commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

@roicohen326

Make sure that if you push to ACR (to test on our Dev env), you push it with rc* postfix tag.

Also, I noticed we don't have a release-please workflow on this repository. Are you keen to submit the release-please workflow in a separate PR?

@roicohen326

Copy link
Copy Markdown
Contributor Author

@roicohen326

Make sure that if you push to ACR (to test on our Dev env), you push it with rc* postfix tag.

Also, I noticed we don't have a release-please workflow on this repository. Are you keen to submit the release-please workflow in a separate PR?

Sure , no probelm .

@roicohen326
roicohen326 marked this pull request as ready for review October 8, 2026 13:54
@roicohen326

Copy link
Copy Markdown
Contributor Author

@NivGreenstein the release-please workflow is up in #7. It starts from 2.0.0, since every environment already runs geoserver-os:v2.0.0-2.26.0, so this PR will release as 2.1.0 and produce the image v2.1.0-3.0.1. I updated the repo helm tag and the PR description to match.

One question:

  • The repo doesn't have a build-and-push workflow yet, so a release will create a tag but no image. Should I add one in a separate PR?

Still open:

  • PG SSL with client certs: waiting for the new certificate from @ronenkapelian. I'll test and update here.
  • ACR: noted. Any future test images will use an rc tag. I'll delete my test tags once the SSL test is done, because raster-dev is still running one of them.

@roicohen326

Copy link
Copy Markdown
Contributor Author

@NivGreenstein PG SSL with client certs: tested and works on 3.0.1.

Comment thread helm/values.yaml
logScraping: true

image:
geoserverRepository: geoserver-os

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@NivGreenstein if it is a common image why should we nest it under vector ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Historically, Geoserver was Vector's domain. We may change it to common.
We may also change repo's owner from Vector team

Comment thread helm/values.yaml
geoserverRepository: geoserver-os
geoserverTag: "v1.0.0-2.19.1"
geoserverRepository: vector/geoserver-os
geoserverTag: "v2.1.0-3.0.1"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be v1.0.0

Comment thread Dockerfile
Comment on lines 23 to 28
@@ -24,7 +27,14 @@ RUN chmod -R g=u ${CATALINA_HOME} /opt /usr/local/tomcat /settings /etc/certs \
/scripts /tmp/ /home /community_plugins/ \
${GEOSERVER_HOME} /usr/share/fonts/

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@syncush, Mayble let's contribute this part to Kartoza/docker-geoserver ?

Comment thread index.mjs
try {
const packageVersion = await require('./package.json').version;
const imageName = `${IMAGE_REPO}:v${packageVersion}-${GEOSERVER_VERSION}`;
const imageName = `${IMAGE_REPO}:v${packageVersion}-${GEOSERVER_VERSION.split('--')[0]}`;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why split?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants