Skip to content

Docs: update Helm Chart page to show usage without cloning Polaris github repo#2939

Merged
dimas-b merged 5 commits intoapache:mainfrom
olsoloviov:docs/improve-helm-chart-page
Nov 19, 2025
Merged

Docs: update Helm Chart page to show usage without cloning Polaris github repo#2939
dimas-b merged 5 commits intoapache:mainfrom
olsoloviov:docs/improve-helm-chart-page

Conversation

@olsoloviov
Copy link
Contributor

What changes were proposed in this pull request?

Minor documentation fix intended to let users know how to use Polaris Helm Charts

Why are the changes needed?

There was a mention in #2272 that it is not clear where to obtain released Polaris Helm charts, so it made sense to update the doc for users who want to use released distributives instead of working with Polaris code repo.

Does this PR introduce any user-facing change?

How was this patch tested?

CHANGELOG.md

adutra
adutra previously approved these changes Oct 30, 2025
@github-project-automation github-project-automation bot moved this from PRs In Progress to Ready to merge in Basic Kanban Board Oct 30, 2025
dimas-b
dimas-b previously approved these changes Oct 30, 2025
#
Title: Polaris Helm Chart
type: docs
weight: 675
Copy link
Contributor

Choose a reason for hiding this comment

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

For this file, you can use make helm-doc-generate to generate instead of manual edit.

Copy link
Contributor Author

@olsoloviov olsoloviov Nov 2, 2025

Choose a reason for hiding this comment

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

Thanks @MonkeyCanCode, I did not know it was automatically copied. But I see that there are already merged changes that diverge helm.md from helm/polaris/readme.md - markup for blockquotes was changed in #2656.
Also, there is a problem with rendering badges in the original page header when hosted on the apache.org:
image
Apparently apache.org content security policy does not allow embedding images from external hosts:

Refused to load the image 'https://img.shields.io/badge/Version-1.2.0--incubating--SNAPSHOT-informational?style=flat-square' because it violates the following Content Security Policy directive: "default-src 'self' data: blob: 'unsafe-inline' 'unsafe-eval' https://www.apachecon.com/ https://www.communityovercode.org/ https://*.apache.org/ https://apache.org/ https://*.scarf.sh/". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.

It was my motivation to remove the header from page version for the site.

As a sidenote, we have other pages on the site that are copies from getting-started docs (e.g. Keycloak setup page, Telemetry setup page), but they are not copied automatically. It would be good to have some unified approach for such cases.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes. That is correct. If u run local, it will all show up. Either we will need to update the policy or have a better way to handle these. Manually edit those can be fairly tedious. @flyrain

Copy link
Contributor

Choose a reason for hiding this comment

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

Agreed with @MonkeyCanCode to rely on automation. Can we also add a post-process step to make helm-doc-generate, e.g., generate helm.md automatically with minor adjustments (strip badges, convert blockquotes)?

Copy link
Contributor

Choose a reason for hiding this comment

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

I would love to see this automated, but unfortunately the two pages are different, especially the warning box style.

I think we would need two different templates.

Copy link
Contributor

Choose a reason for hiding this comment

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

FWIW, I think this needs to be addressed separately, in a follow-up PR.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I agree it is a good idea to converge helm.md back with helm chart readme and sync them automatically.
I see that we can go back from Hugo shortcodes to github-style blockqoutes for alert blocks - I made it work locally, but it requires updating Hugo version. It may bring additional concerns (full site testing etc.), so I would make it a separate PR as @adutra suggested.

@olsoloviov olsoloviov dismissed stale reviews from dimas-b and adutra via 63741e9 November 2, 2025 16:04
Comment on lines 65 to 69
Otherwise load ready images from Docker Hub:
```bash
minikube image pull apache/polaris:latest
minikube image pull apache/polaris-admin-tool:latest
```
Copy link
Contributor

Choose a reason for hiding this comment

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

Explicitly pulling isn't needed, Helm will pull images automatically if imagePullPolicy: IfNotPresent or Always is configured in the chart (which it is by default for most charts). All we need here is:

Otherwise, Helm will automatically pull released images during installation.

Copy link
Contributor

Choose a reason for hiding this comment

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

This isn't for Helm, but for the kubelet inside Minikube. The kubelet can only download images if they are publicly available.

If the image is from a private registry, or only present locally in the host machine (e.g. because you built a custom apache/polaris:latest image from sources and you want to use it), then this instruction is necessary.

All in all, I think it's fine to leave the instructions.

Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks for the clarification, that makes sense. Good point about the kubelet behavior inside Minikube. I agree it’s fine to keep the minikube image pull instructions for users running with private or locally built images.

That said, I still think it’d be clearer to separate the doc into two sections, one for the standard “Helm install from the official repo” path, and another “advanced / from source” section for developers. This way, most users can follow the simple flow without extra steps, while contributors still have the detailed Minikube setup if needed. More details are in this comment, #2939 (review).

Copy link
Contributor Author

@olsoloviov olsoloviov Nov 7, 2025

Choose a reason for hiding this comment

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

Thanks @flyrain for your comments. I agree that clear separation of "user" and "dev" flows is a good thing - I remember there was even an initiative to clearly split all of Polaris documentation that way.
Regarding this particular document, there is a couple of things to consider:

  • flows would be largely duplicating each other (we will need to download helm chart anyway to install persistent backend and create test setup for resources using helm/polaris/ci/fixtures)
  • current helm.md document is generated from helm/chart/readme.md, which assumes that helm chart was downloaded or github repo was cloned, so it kinda implies being "advanced" by default. I was specifically asked to keep the documents synced: Docs: update Helm Chart page to show usage without cloning Polaris github repo #2939 (comment)

So maybe it makes sense to create a separate document for a standard path and add a link to advanced path to it, wdyt?

Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks for the reply. I think it's more reasonable to put them in one place. Even helm chart was downloaded or github repo was cloned, user don't need or want to rebuild docker image, etc. In fact, helm chart can be downloaded separately without other Polaris source code, users won't be able to build the docker image in that case.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have updates the doc with two separate flows as you suggested, @flyrain.
helm.md still has some manual changes after being generated from helm/polaris/readme.md.gotmpl due to blockquotes not properly rendered in Hugo - I will fix it in a follow up PR

Copy link
Contributor

@flyrain flyrain left a comment

Choose a reason for hiding this comment

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

Thanks a lot @olsoloviov for working on this!
Since we are here, I’d suggest splitting this section into two parts:

  • Recommended: Installing from the official Helm repository. This is the simplest and most common way to deploy Polaris, without cloning or building locally.
  • Advanced: Building and running from source. For developers who want to test local changes or custom images.

This separation would make the “happy path” much clearer for most users, while still keeping the advanced instructions for contributors. It would also eliminate the need for commands like minikube image pull in the main flow since Helm automatically pulls images from the registry.

Something like the followng:

Install from official Helm repository (recommended)

minikube start
helm repo add polaris https://downloads.apache.org/incubator/polaris/helm-chart
helm repo update
kubectl create namespace polaris
helm install polaris polaris/polaris --namespace polaris

Build and install from source (advanced)

minikube start
eval $(minikube docker-env)
./gradlew :polaris-server:assemble :polaris-server:quarkusAppPartsBuild \
  :polaris-admin:assemble :polaris-admin:quarkusAppPartsBuild \
  -Dquarkus.container-image.build=true
helm upgrade --install polaris ./helm/polaris --namespace polaris

Copy link
Contributor

@flyrain flyrain left a comment

Choose a reason for hiding this comment

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

LGTM. Thanks @olsoloviov !

```bash
helm plugin install https://github.com/helm-unittest/helm-unittest.git
brew install chart-testing
brew install yamllint
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: I do not mind installing yamllint, but I could not find references to it from the examples... Why does it need to be installed?

Copy link
Contributor Author

@olsoloviov olsoloviov Nov 18, 2025

Choose a reason for hiding this comment

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

It is not used directly in our samples, but It is required by ct lint

Copy link
Contributor

Choose a reason for hiding this comment

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

thx!

@dimas-b dimas-b merged commit ceb1bbb into apache:main Nov 19, 2025
15 checks passed
@github-project-automation github-project-automation bot moved this from Ready to merge to Done in Basic Kanban Board Nov 19, 2025
@dimas-b
Copy link
Contributor

dimas-b commented Nov 19, 2025

Thanks for your contribution, @olsoloviov !

snazy added a commit to snazy/polaris that referenced this pull request Feb 11, 2026
* Docs: update Helm Chart page to show usage without cloning Polaris github repo (apache#2939)

* Docs: update Helm Chart page to show usage without cloning Polaris github repo

* Apply suggestions from code review

* Add separate flows in Helm Chart doc for installing released chart and images vs building from source

---------

Co-authored-by: Alexandre Dutra <[email protected]>

* docs: improve getting started and README documentation (apache#2267)

* The outdated config snippets and health-checks are removed from the index

* The binary guide stays focused and concise

* Update changelog with missing 1.3.0 features (apache#3087)

* Update registry.access.redhat.com/ubi9/openjdk-21-runtime Docker tag to v1.23-6.1763034977 (apache#3092)

* Update docker.io/jaegertracing/all-in-one Docker tag to v1.75.0 (apache#3093)

* feat: Make generate_clients.py windows compatible (apache#3084)

* Make generate_clients.py windows compatible

* Updated CHANGELOG.md

* PRs: Remove markdown-links-check from required checks (apache#3102)

The "Check Markdown links" workflow is known to produce false failures, leading to apache#3097.

This change is intended to unblock PRs due to these false failures.

* Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.1.0 (apache#3083)

* Update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.1.0

* spotlessApply

---------

Co-authored-by: Robert Stupp <[email protected]>

* chore(deps): update gradle to v9.2.1 (apache#3069)

* chore(deps): update gradle to v9.2.1

* Fix Grale wrapper SHA

---------

Co-authored-by: Robert Stupp <[email protected]>

* chore(deps): update mongo docker tag to v8.2.2 (apache#3100)

* chore(deps): update docker.io/mongo docker tag to v8.2.2 (apache#3099)

* Source-tarball - eliminate git-gzip risk (apache#3075)

Details in the `git archive` chapter in https://reproducible-builds.org/docs/archives/

* NoSQL: Allow `null` IndexKey (de)serialization (apache#3076)

This change adopts the implementation to the API specification.

* PRs: Re-add markdown-links-check step (apache#3103)

The step was disabled in apache#3102 to pass CI and enable merging.

* NoSQL: Add maintenance implementation (apache#3077)

* Inject DefaultFileIOFactory in tests (apache#3043)

* Inject DefaultFileIOFactory in tests

also simplify `TaskFileIOSupplier` usage in tests, which allows removal
of `TestFileIOFactory`.

* Update Quarkus Platform and Group to v3.29.4 (apache#3094)

* Site: Replace feather logo (apache#3101)

The ASF has a new logo, a leaf. There is sadly no free icon that matches the new logo, so replacing the feather-ASF with "The ASF" in the top-bar navigation.

* Update actions/checkout action to v6 (apache#3106)

* Core: resolveAll() must be called before reading resolution results (apache#3064)

* Site: Added GCS related Bucket Properties for vending credentials. (apache#3066)

* Publish/pom: don't include test-fixtures dependencies as runtime (apache#3085)

The list of dependencies in pom's includes the api/runtime elements of the test-fixtures, which is not what should be published, as it "pulls up" deps like junit, mockito and assertj as Maven runtime scope dependencies.
This change fixes this.

* Increase javadoc visibility in `persistence/nosql/persistence/cdi/weld` (apache#3110)

This is to fix javadoc error: `No public or protected classes found to document`

* Disable cloud storage tests that would use @tempdir (apache#3095)

Disable tests from ViewCatalogTests for cloud storage integration tests
(S3, ADLS, GCS) that would otherwise use @tempdir. Since @tempdir internally
uses Paths.get, it cannot point to cloud storage paths. These tests remain
enabled for file-based integration tests.

* Remove 'beta' label for Generic Table (apache#3096)

* remove beta label

* address comments for change log

---------

Co-authored-by: Pierre Laporte <[email protected]>

* Update dependency jupyterlab to v4.5.0 (apache#3074)

* chore: Fix md link check in GH action (apache#3128)

* Fix md link check in GH action

* Fix md link check in GH action

* Update dependency pre-commit to v4.5.0 (apache#3123)

* Update dependency software.amazon.awssdk:bom to v2.39.2 (apache#3127)

* NoSQL: authZ API, SPI, impl and store (apache#3078)

NoSQL base functionality for ACLs

* NoSQL: Quarkus distributed cache invalidation (apache#3105)

Adds support for distributed NoSQL cache invalidation leveraging Quarkus.

* NoSQL: adjustments / merge fixes

* Last merged commit e124348

---------

Co-authored-by: Oleg Soloviov <[email protected]>
Co-authored-by: Alexandre Dutra <[email protected]>
Co-authored-by: Subham <[email protected]>
Co-authored-by: Pierre Laporte <[email protected]>
Co-authored-by: Mend Renovate <[email protected]>
Co-authored-by: Yong Zheng <[email protected]>
Co-authored-by: Christopher Lambert <[email protected]>
Co-authored-by: Yufei Gu <[email protected]>
Co-authored-by: Saksham Ratra <[email protected]>
Co-authored-by: Dmitri Bourlatchkov <[email protected]>
Co-authored-by: Tamas Mate <[email protected]>
Co-authored-by: Yun Zou <[email protected]>
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.

5 participants