Skip to content

Conversation

@tmater
Copy link
Contributor

@tmater tmater commented Nov 27, 2025

Summary

This PR adds a NOTES.txt template to the Helm chart to improve the user experience after installation. Users will immediately see how to access Polaris (via port-forward commands), check the health endpoint, and view logs for troubleshooting.

For now, this focuses on the essential getting-started information. In the future, we could extend this to include database bootstrap commands (polaris-admin), credential information, or other advanced setup instructions.

During helm install or helm upgrade, it prints the following:

Current output

1. ClusterIP / ClusterIP
------------------------------------------
Command: helm install polaris ./helm/polaris 

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  kubectl port-forward -n default svc/polaris 8181:8181

  API: http://localhost:8181

  kubectl port-forward -n default svc/polaris-mgmt 8182:8182

  Health: http://localhost:8182/q/health

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f


2. ClusterIP / NodePort
------------------------------------------
Command: helm install polaris ./helm/polaris --set managementService.type=NodePort

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  kubectl port-forward -n default svc/polaris 8181:8181

  API: http://localhost:8181

  export NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="ExternalIP")].address}')
  export HEALTH_PORT=$(kubectl get svc -n default polaris-mgmt -o jsonpath='{.spec.ports[0].nodePort}')
  echo "Health: http://$NODE_IP:$HEALTH_PORT/q/health"

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f


3. ClusterIP / LoadBalancer
------------------------------------------
Command: helm install polaris ./helm/polaris --set managementService.type=LoadBalancer

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  kubectl port-forward -n default svc/polaris 8181:8181

  API: http://localhost:8181

  export HEALTH_IP=$(kubectl get svc -n default polaris-mgmt -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  echo "Health: http://$HEALTH_IP:8182/q/health"

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f


========== NodePort Main Service ==========

4. NodePort / ClusterIP
------------------------------------------
Command: helm install polaris ./helm/polaris --set service.type=NodePort

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  export NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="ExternalIP")].address}')
  export API_PORT=$(kubectl get svc -n default polaris -o jsonpath='{.spec.ports[0].nodePort}')
  echo "API: http://$NODE_IP:$API_PORT"

  kubectl port-forward -n default svc/polaris-mgmt 8182:8182

  Health: http://localhost:8182/q/health

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f


5. NodePort / NodePort
------------------------------------------
Command: helm install polaris ./helm/polaris --set service.type=NodePort --set managementService.type=NodePort

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  export NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="ExternalIP")].address}')
  export API_PORT=$(kubectl get svc -n default polaris -o jsonpath='{.spec.ports[0].nodePort}')
  echo "API: http://$NODE_IP:$API_PORT"

  export HEALTH_PORT=$(kubectl get svc -n default polaris-mgmt -o jsonpath='{.spec.ports[0].nodePort}')
  echo "Health: http://$NODE_IP:$HEALTH_PORT/q/health"

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f


6. NodePort / LoadBalancer
------------------------------------------
Command: helm install polaris ./helm/polaris --set service.type=NodePort --set managementService.type=LoadBalancer

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  export NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="ExternalIP")].address}')
  export API_PORT=$(kubectl get svc -n default polaris -o jsonpath='{.spec.ports[0].nodePort}')
  echo "API: http://$NODE_IP:$API_PORT"

  export HEALTH_IP=$(kubectl get svc -n default polaris-mgmt -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  echo "Health: http://$HEALTH_IP:8182/q/health"

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f


========== LoadBalancer Main Service ==========

7. LoadBalancer / ClusterIP
------------------------------------------
Command: helm install polaris ./helm/polaris --set service.type=LoadBalancer

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  export API_IP=$(kubectl get svc -n default polaris -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  echo "API: http://$API_IP:8181"

  kubectl port-forward -n default svc/polaris-mgmt 8182:8182

  Health: http://localhost:8182/q/health

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f


8. LoadBalancer / NodePort
------------------------------------------
Command: helm install polaris ./helm/polaris --set service.type=LoadBalancer --set managementService.type=NodePort

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  export API_IP=$(kubectl get svc -n default polaris -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  echo "API: http://$API_IP:8181"

  export NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="ExternalIP")].address}')
  export HEALTH_PORT=$(kubectl get svc -n default polaris-mgmt -o jsonpath='{.spec.ports[0].nodePort}')
  echo "Health: http://$NODE_IP:$HEALTH_PORT/q/health"

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f


9. LoadBalancer / LoadBalancer
------------------------------------------
Command: helm install polaris ./helm/polaris --set service.type=LoadBalancer --set managementService.type=LoadBalancer

NOTES:
Apache Polaris deployed successfully!

Release:    polaris
Namespace:  default
Version:    1.2.0-incubating-SNAPSHOT (App: 1.2.0-incubating-SNAPSHOT)

⚠️  WARNING: Using IN-MEMORY persistence - data will be lost on pod restart!

Access Polaris:

  export API_IP=$(kubectl get svc -n default polaris -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  echo "API: http://$API_IP:8181"

  export HEALTH_IP=$(kubectl get svc -n default polaris-mgmt -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  echo "Health: http://$HEALTH_IP:8182/q/health"

View logs:

  kubectl logs -l app.kubernetes.io/name=polaris -n default --tail=50 -f

Provides port-forward commands, health check endpoint, and log viewing for users after installation.
adutra
adutra previously approved these changes Dec 2, 2025

Access Polaris:

kubectl port-forward -n {{ .Release.Namespace }} svc/{{ include "polaris.fullname" . }} {{ (first .Values.service.ports).port }}:{{ (first .Values.service.ports).port }}
Copy link
Contributor

Choose a reason for hiding this comment

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

I wonder if we should customize the instructions if .Values.service.type is not ClusterIP? E.g. if the service is a NodePort or LoadBalancer, there are other ways to connect to the service than port-forwarding.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point, I wasn’t sure how detailed the output should be and I’m still a bit unsure.
I’ve rewritten NOTES.txt with all the combinations and updated the description to reflect that.

@github-project-automation github-project-automation bot moved this from PRs In Progress to Ready to merge in Basic Kanban Board Dec 2, 2025
@tmater tmater requested a review from adutra December 9, 2025 13:27
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.

2 participants