Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Changelog

## Chart 0.4.2 — 2026-10-19

Found while running the daemon on the live cluster (ai-rm end-to-end run).

### Fixed
- Writable `/tmp` under the read-only root: `rbln-stat` (PyInstaller) unpacks itself under `TMPDIR`
and failed with "Could not create temporary directory", so no ATOM was published.
- `hostDev` (default on) mounts the host's `/dev` live. A privileged container sees `/dev` as it was at
start; an ATOM that the driver re-created after a pod released it dropped out of discovery.

### Added
- Site extension points, all empty by default: `command`, `extraEnv`, `initContainers`,
`extraVolumes`, `extraVolumeMounts` (run the daemon from a stock Python image until the
`rm-abstract-node` image is published).

## 0.4.1 — 2026-10-19

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion deploy/helm/rm-abstract-node/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ apiVersion: v2
name: rm-abstract-node
description: ai-rm L1 node daemon - publishes each node's accelerators as AcceleratorProfiles and node labels
type: application
version: 0.4.1
version: 0.4.2
appVersion: "0.4.1"
34 changes: 34 additions & 0 deletions deploy/helm/rm-abstract-node/templates/daemonset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,20 @@ spec:
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.initContainers }}
initContainers:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: daemon
image: "{{ required "image.repository is required" .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.command }}
command:
{{- toYaml .Values.command | nindent 12 }}
{{- else }}
command: ["python", "-m", "rm_abstract.airm.daemon"]
{{- end }}
env:
- name: AIRM_NODE_NAME
valueFrom:
Expand All @@ -47,6 +56,9 @@ spec:
value: {{ .Values.removeAfter | quote }}
- name: AIRM_METRICS_PORT
value: {{ .Values.airm.metricsPort | quote }}
{{- with .Values.extraEnv }}
{{- toYaml . | nindent 12 }}
{{- end }}
{{- if .Values.airm.metricsPort }}
ports:
- name: metrics
Expand All @@ -59,4 +71,26 @@ spec:
resources:
{{- toYaml . | nindent 12 }}
{{- end }}
volumeMounts:
# read-only root: rbln-stat (PyInstaller) unpacks itself under $TMPDIR
- name: tmp
mountPath: /tmp
{{- if .Values.hostDev }}
- name: dev
mountPath: /dev
{{- end }}
{{- with .Values.extraVolumeMounts }}
{{- toYaml . | nindent 12 }}
{{- end }}
volumes:
- name: tmp
emptyDir: {}
{{- if .Values.hostDev }}
- name: dev
hostPath:
path: /dev
{{- end }}
{{- with .Values.extraVolumes }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
12 changes: 12 additions & 0 deletions deploy/helm/rm-abstract-node/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,23 @@ removeAfter: 3 # remove a device's profile after this many discoveries w

# Vendor tools read the device nodes, which needs a privileged container.
privileged: true
# Mount the host's /dev live. A privileged container otherwise sees /dev as it was at start, and a
# device that a driver re-creates (e.g. after a pod releases an ATOM) drops out of discovery.
hostDev: true

serviceAccount:
create: true
name: ""

# Site extension points (all empty by default). A site without the published image can run a
# stock Python image: an init container installs rm-abstract[k8s] into a volume on PYTHONPATH,
# and the host's vendor tools are mounted read-only and appended to PATH.
command: [] # default: python -m rm_abstract.airm.daemon
extraEnv: [] # [{name, value}] appended to the daemon's env
initContainers: [] # pod initContainers, verbatim
extraVolumes: [] # pod volumes, verbatim
extraVolumeMounts: [] # daemon volumeMounts, verbatim

nodeAffinity: {} # default: every node; restrict with airm.ai-computing.io/<vendor>.<model> labels
tolerations:
- operator: Exists # run on tainted accelerator nodes too
Expand Down
Loading