Upgrading¶
Changes that affect existing deployments, newest first. Upgrade a release with the same values files as before, adapted as described here:
Unreleased¶
Probes of the API¶
The API's container has a startup, a readiness and a liveness probe now (see
Probes), which request the service info. After
helm install --wait or helm upgrade --wait, the API answers, and the
Ingress no longer returns 502 Bad Gateway while it starts. The pod's
selector and names are unchanged, so helm upgrade works as before, and
restarts the pod once. A container that doesn't start within 5 minutes is
restarted (raise tesk.startupProbe.failureThreshold on slow nodes). The probes work with your existing values; to turn
one off, set tesk.<name>Probe.enabled to false.
Values renamed to camelCase¶
The values of the chart follow Helm's conventions now: camelCase names,
image blocks (repository, tag, pullPolicy) and a resources block.
Your values files keep working unchanged: the old names still work, and
render the same objects as before. They are deprecated, though, and will be
removed in a later release; the notes that helm upgrade prints list those
that your values use. Rename them in your values files at your convenience:
| Old name (deprecated) | New name |
|---|---|
host_name |
hostName |
tesk.image (a string with the tag) |
tesk.image.repository and tesk.image.tag (default: the chart's appVersion) |
tesk.tes_api_base_path |
tesk.tesApiBasePath |
tesk.taskmaster_image_name |
tesk.taskmaster.image.repository |
tesk.taskmaster_image_version |
tesk.taskmaster.image.tag |
tesk.taskmaster_filer_image_name |
tesk.filer.image.repository |
tesk.taskmaster_filer_image_version |
tesk.filer.image.tag |
tesk.executor_retries |
tesk.executorRetries |
tesk.filer_retries |
tesk.filerRetries |
tesk.limitsCpu |
tesk.resources.limits.cpu |
tesk.limitsMemory |
tesk.resources.limits.memory |
tesk.requestsCpu |
tesk.resources.requests.cpu |
tesk.requestsMemory |
tesk.resources.requests.memory |
transfer.wes_base_path |
transfer.wesBasePath |
transfer.tes_base_path |
transfer.tesBasePath |
transfer.pvc_name |
transfer.pvcName |
auth.env_subgroup |
auth.envSubgroup |
auth.env_basegroup |
auth.envBasegroup |
auth.service_info_public |
auth.serviceInfoPublic |
auth.client_id |
auth.clientId |
auth.client_secret |
auth.clientSecret |
service.node_port |
service.nodePort |
ftp.classic_ftp_secret |
ftp.classicFtpSecret |
ftp.netrc_secret |
ftp.netrcSecret |
ingress.tls_secret_name |
ingress.tlsSecretName |
For example, these values
host_name: tes.example.org
tesk:
image: docker.io/elixircloud/tesk-api:1.2.0
limitsMemory: 4Gi
ingress:
tls_secret_name: tesk-tls
become
hostName: tes.example.org
tesk:
image:
tag: 1.2.0
resources:
limits:
memory: 4Gi
ingress:
tlsSecretName: tesk-tls
Things to know:
- An old name takes precedence over its new name if a values file sets both, even if the old one is empty or null. Remove the old names when you add the new ones.
--reuse-values:helm upgrade --reuse-valueskeeps the values of the installed release, including the defaults of the earlier chart with the old names, which then take precedence over new names set with--set(excepttesk.image.tagandtesk.image.pullPolicy), and which the notes list as deprecated. Upgrade with your values files (-f) instead, without--reuse-values, once you have renamed the values.- Labels: all objects get the standard labels of Helm charts
(
app.kubernetes.io/name,app.kubernetes.io/instance,app.kubernetes.io/version,app.kubernetes.io/managed-by,helm.sh/chart); the API's pods get the first two. The selectors are unchanged (app: tesk-api), sohelm upgradeworks as before; the new pod labels restart the API's pod once. - Schema: the chart checks the structure of the values
(
values.schema.json): e.g., a map where the chart expects a scalar fails the installation, as does a pull policy other thanAlways,IfNotPresentorNever. It accepts scalars of any type, unknown keys and the old names, so values that worked before still pass. - The resource names don't change. Names derived from the release name, so that several releases can share a namespace, will follow in a release of their own (#248).
Releases and chart versions¶
Charts are now released from signed vX.Y.Z tags as files attached to
GitHub releases, with
an attestation and a signature (see Releases).
The chart version equals the release version. As tags up to v0.2 exist
from earlier releases, chart versions continue with 0.3.0, although the
last chart released to the Helm repository at
https://elixir-cloud-aai.github.io/TESK/ was 0.1.1. That Helm repository
keeps charts 0.1.0 and 0.1.1, so existing helm repo add setups still
resolve, but gets no new versions: install charts from 0.3.0 on from their
GitHub release (see From a release).
Taskmaster and filer v0.10.6¶
The default taskmaster and filer are now v0.10.6 (were v0.10.2):
- Taskmaster v0.10.2 ends tasks in
SYSTEM_ERRORon Kubernetes 1.31 or later, as it reads only the first condition of a job. If your values settesk.taskmaster.image.tag, set it to v0.10.6 or later. - Resource limits: v0.10.6 sets the resources that a task requests
(
resources.cpu_cores,resources.ram_gb) as the limits of its executors too. A task that uses more memory than it requested is now killed (OOM), and its CPU is throttled. Tasks that relied on using more than they requested must request more.
Public service info¶
The new value auth.serviceInfoPublic (default true) controls whether
GET /service-info needs a token with auth.mode: auth. It needs tesk-api
1.2.0 or later; earlier versions ignore it and keep the endpoint public.
The default keeps the endpoint public; set it to false to require a
token.
Swagger UI with tesk-api 1.2.0¶
The new value tesk.swaggerUi.enabled (default false) controls whether
tesk-api serves the Swagger UI (see Swagger UI).
Upgrading the chart alone changes nothing: tesk-api before 1.2.0 (the
chart's default tesk.image.tag is still 1.1.0) ignores the value and always
serves the Swagger UI. tesk-api 1.2.0 or later serves it only if the value
is true. If you use the Swagger UI, set tesk.swaggerUi.enabled: true
when you upgrade to tesk-api 1.2.0 or later. Turning it on serves the
Swagger UI publicly; enable it only where needed.