From d1389969839501e837712c9069f528a472c1b20d Mon Sep 17 00:00:00 2001 From: Feng Ruohang Date: Tue, 10 Nov 2026 11:00:05 +0800 Subject: [PATCH] docs(helm): fix NOTES connection commands and document 20261109 upgrade gates Signed-off-by: Feng Ruohang --- helm/silo/README.md | 20 +++++++++++++++++--- helm/silo/templates/NOTES.txt | 33 +++++++++++++++++---------------- helm/silo/values.yaml | 4 ++-- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/helm/silo/README.md b/helm/silo/README.md index 6b1d293e4..255fc81db 100644 --- a/helm/silo/README.md +++ b/helm/silo/README.md @@ -34,9 +34,10 @@ helm install silo ./helm/silo \ --set rootPassword='replace-with-a-long-random-secret' ``` -The default server and post-install image is `docker.io/pgsty/silo`. The image -contains the `silo` server, `mcli`, and an `mc` compatibility symlink. It does -not contain a `minio` server binary. +The default server image is `docker.io/pgsty/silo` (which contains the `silo` +server, `mcli`, and an `mc` client compatibility symlink, without a `minio` +server binary). Post-install resource jobs use `mcImage` (`docker.io/pgsty/mc`) +by default. ## Compatibility contract @@ -100,6 +101,19 @@ new chart invokes `silo server`; an old image does not provide that executable. The new image accepts a legacy first argv token of `minio` only to support old chart commands during the forward migration. +When upgrading an existing Silo release to `RELEASE.2026-11-09T00-00-00Z` (chart +`7.0.4`): + +- `helm upgrade --reuse-values` keeps the previously saved `image.tag` and + `mcImage.tag`; pass `--set-string image.tag=RELEASE.2026-11-09T00-00-00Z` and + `--set-string mcImage.tag=RELEASE.2026-11-09T00-00-00Z` explicitly. +- Drain or cancel active batch jobs before upgrading; `20261026` cannot resume + new submitter-bound batch manifests on downgrade. +- Single-pool clusters whose erasure sets do not all share the same pods/hosts + require a drained stop-all upgrade rather than a rolling pod restart, and + `POST ?restore` returns `503` while mixed versions are serving. See the + [20261109 release notes](https://silo.pgsty.com/blog/release/silo-20261109/#upgrade). + ## Persistence and TLS The default PersistentVolumeClaim mounts at `/export`. Use an existing claim diff --git a/helm/silo/templates/NOTES.txt b/helm/silo/templates/NOTES.txt index 7aa734c9d..23e445486 100644 --- a/helm/silo/templates/NOTES.txt +++ b/helm/silo/templates/NOTES.txt @@ -1,43 +1,44 @@ +{{- $scheme := ternary "https" "http" .Values.tls.enabled -}} {{- if eq .Values.service.type "ClusterIP" "NodePort" }} Silo can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster: -{{ template "silo.fullname" . }}.{{ .Release.Namespace }}.{{ .Values.clusterDomain }} +{{ template "silo.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -To access Silo from localhost, run the below commands: +To access Silo from localhost, run the commands below: 1. export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - 2. kubectl port-forward $POD_NAME 9000 --namespace {{ .Release.Namespace }} + 2. kubectl port-forward $POD_NAME {{ .Values.service.port }}:{{ .Values.minioAPIPort | default 9000 }} --namespace {{ .Release.Namespace }} -Read more about port forwarding here: http://kubernetes.io/docs/user-guide/kubectl/kubectl_port-forward/ +Read more about port forwarding here: https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/ -You can now access Silo server on http://localhost:9000. Follow the below steps to connect to Silo server with mc client: +You can now access the Silo server on {{ $scheme }}://localhost:{{ .Values.service.port }}. Connect with the mcli client: - 1. Download the Silo mc client - https://silo.pgsty.com/reference/minio-mc/#quickstart + 1. Download mcli: https://silo.pgsty.com/download/#client - 2. export MC_HOST_{{ template "silo.fullname" . }}_local=http://$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "silo.secretName" . }} -o jsonpath="{.data.rootUser}" | base64 --decode):$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "silo.secretName" . }} -o jsonpath="{.data.rootPassword}" | base64 --decode)@localhost:{{ .Values.service.port }} + 2. mcli alias set local {{ $scheme }}://localhost:{{ .Values.service.port }} "$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "silo.secretName" . }} -o jsonpath="{.data.rootUser}" | base64 --decode)" "$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "silo.secretName" . }} -o jsonpath="{.data.rootPassword}" | base64 --decode)" - 3. mc ls {{ template "silo.fullname" . }}_local + 3. mcli ls local {{- end }} {{- if eq .Values.service.type "LoadBalancer" }} Silo can be accessed via port {{ .Values.service.port }} on an external IP address. Get the service external IP address by: -kubectl get svc --namespace {{ .Release.Namespace }} -l app={{ template "silo.fullname" . }} +kubectl get svc --namespace {{ .Release.Namespace }} -l "app={{ template "silo.name" . }},release={{ .Release.Name }}" -Note that the public IP may take a couple of minutes to be available. +Note that the public IP may take a couple of minutes to become available. -You can now access Silo server on http://:9000. Follow the below steps to connect to Silo server with mc client: +You can now access the Silo server on {{ $scheme }}://:{{ .Values.service.port }}. Connect with the mcli client: - 1. Download the Silo mc client - https://silo.pgsty.com/reference/minio-mc/#quickstart + 1. Download mcli: https://silo.pgsty.com/download/#client - 2. export MC_HOST_{{ template "silo.fullname" . }}_local=http://$(kubectl get secret {{ template "silo.secretName" . }} --namespace {{ .Release.Namespace }} -o jsonpath="{.data.rootUser}" | base64 --decode):$(kubectl get secret {{ template "silo.secretName" . }} -o jsonpath="{.data.rootPassword}" | base64 --decode)@:{{ .Values.service.port }} + 2. mcli alias set external {{ $scheme }}://:{{ .Values.service.port }} "$(kubectl get secret {{ template "silo.secretName" . }} --namespace {{ .Release.Namespace }} -o jsonpath="{.data.rootUser}" | base64 --decode)" "$(kubectl get secret {{ template "silo.secretName" . }} --namespace {{ .Release.Namespace }} -o jsonpath="{.data.rootPassword}" | base64 --decode)" - 3. mc ls {{ template "silo.fullname" . }} + 3. mcli ls external -Alternately, use a browser, an S3 SDK, or a MinIO-compatible SDK to access Silo - https://silo.pgsty.com/reference/minio-server/minio-server/ +Alternately, use a browser, an S3 SDK, or a MinIO-compatible SDK to access Silo: https://silo.pgsty.com/reference/minio-server/ {{- end }} {{ if and (.Values.networkPolicy.enabled) (not .Values.networkPolicy.allowExternal) }} Note: Since NetworkPolicy is enabled, only pods with label -{{ template "silo.fullname" . }}-client=true" +{{ template "silo.fullname" . }}-client=true will be able to connect to this Silo cluster. {{- end }} diff --git a/helm/silo/values.yaml b/helm/silo/values.yaml index a911417a6..c7ee7ded4 100644 --- a/helm/silo/values.yaml +++ b/helm/silo/values.yaml @@ -11,7 +11,7 @@ fullnameOverride: "" ## clusterDomain: cluster.local -## Set default image, imageTag, and imagePullPolicy. mode is used to indicate the +## Set default Silo server image repository, tag, and pull policy. ## image: repository: pgsty/silo @@ -517,7 +517,7 @@ postJob: ## Add environment variables for Silo. The MINIO_* names remain the stable ## configuration interface and are passed to the Silo container(s). environment: - ## Please refer for comprehensive list https://silo.pgsty.com/reference/minio-server/minio-server/ + ## See https://silo.pgsty.com/reference/minio-server/settings/ for available settings. ## MINIO_BROWSER: "off" ## The name of a secret in the same kubernetes namespace which contain secret values