Skip to content
Open
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
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ LOCALBIN ?= $(CURRENT_DIR)/bin
TEMPDIR ?= $(CURRENT_DIR)/tmp
# ARENA_ARTIFACTS
ARENA_ARTIFACTS_CHART_PATH ?= $(CURRENT_DIR)/arena-artifacts
ARENA_CHART_PATH ?= $(CURRENT_DIR)/arena-chart

# Versions
GOLANG_VERSION=$(shell grep -e '^go ' go.mod | cut -d ' ' -f 2)
Expand Down Expand Up @@ -253,6 +254,10 @@ $(ARENA_INSTALLER_TARBALL): arena kubectl helm
.PHONY: helm-unittest
helm-unittest: helm-unittest-plugin ## Run Helm chart unittests.
set -x && $(LOCALBIN)/$(HELM) unittest $(ARENA_ARTIFACTS_CHART_PATH) --strict --file "tests/**/*_test.yaml" --chart-tests-path $(CURRENT_DIR)
$(LOCALBIN)/$(HELM) unittest $(ARENA_CHART_PATH) --strict --file "tests/**/*_test.yaml" --with-subchart=false
for chart in $$(ls $(ARENA_CHART_PATH)/charts); do \
$(LOCALBIN)/$(HELM) unittest $(ARENA_CHART_PATH)/charts/$$chart --strict --file "tests/**/*_test.yaml"; \
done

##@ Dependencies

Expand Down
28 changes: 28 additions & 0 deletions arena-chart/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

# helm-unittest
tests
.debug
__snapshot__
69 changes: 69 additions & 0 deletions arena-chart/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#
# Copyright 2025 The Kubeflow authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

apiVersion: v2

name: arena

description: A Helm chart for installing arena dependencies.

type: application

kubeVersion: ">=1.16.0-0"

version: 0.15.2

appVersion: 0.15.2

keywords:
- AI
- Machine Learning
- Deep Learning
- Model Training
- Model Serving

home: https://github.com/kubeflow/arena

dependencies:
- name: pytorch-operator
repository: file://charts/pytorch-operator
condition: pytorch-operator.enabled,global.pytorch-operator.enabled
- name: tf-operator
repository: file://charts/tf-operator
condition: tf-operator.enabled,global.tf-operator.enabled
- name: mpi-operator
repository: file://charts/mpi-operator
condition: mpi-operator.enabled,global.mpi-operator.enabled
- name: et-operator
repository: file://charts/et-operator
condition: et-operator.enabled,global.et-operator.enabled
- name: cron-operator
repository: file://charts/cron-operator
condition: cron-operator.enabled,global.cron-operator.enabled
- name: tf-dashboard
repository: file://charts/tf-dashboard
condition: tf-dashboard.enabled,global.tf-dashboard.enabled
- name: elastic-job-supervisor
repository: file://charts/elastic-job-supervisor
condition: elastic-job-supervisor.enabled,global.elastic-job-supervisor.enabled
- name: gpu-exporter
repository: file://charts/gpu-exporter
condition: gpu-exporter.enabled,global.gpu-exporter.enabled

maintainers:
- name: ChenYi015
email: github@chenyicn.net
url: https://github.com/ChenYi015
23 changes: 23 additions & 0 deletions arena-chart/charts/cron-operator/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
24 changes: 24 additions & 0 deletions arena-chart/charts/cron-operator/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: v2
name: cron-operator
description: A Helm chart for Kubernetes

# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "v0.1.1"
142 changes: 142 additions & 0 deletions arena-chart/charts/cron-operator/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
{{- /*
Copyright 2025 The Kubeflow authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/ -}}

{{- /* Expand the name of the chart. */ -}}
{{- define "cron-operator.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{- /*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/ -}}
{{- define "cron-operator.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}

{{- /* Create chart name and version as used by the chart label. */ -}}
{{- define "cron-operator.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{- /* Common labels */ -}}
{{- define "cron-operator.labels" -}}
helm.sh/chart: {{ include "cron-operator.chart" . }}
{{ include "cron-operator.selectorLabels" . }}
{{- with .Chart.AppVersion }}
app.kubernetes.io/version: {{ . | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- with .Values.labels }}
{{- . | toYaml | nindent 0 }}
{{- end }}
{{- end }}

{{- /* Selector labels. */ -}}
{{- define "cron-operator.selectorLabels" -}}
app.kubernetes.io/name: {{ include "cron-operator.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}

{{- /* Common annotations. */ -}}
{{- define "cron-operator.annotations" -}}
{{- with .Values.annotations }}
{{- . | toYaml | nindent 0 }}
{{- end }}
{{- end -}}

{{- /* Create the name of the service account to use. */ -}}
{{- define "cron-operator.serviceAccount.name" -}}
{{- include "cron-operator.fullname" . }}
{{- end -}}

{{- /* Create the name of the cluster role to use. */ -}}
{{- define "cron-operator.clusterRole.name" -}}
{{- include "cron-operator.fullname" . }}
{{- end -}}

{{- /* Create the name of the cluster role binding to use. */ -}}
{{- define "cron-operator.clusterRoleBinding.name" -}}
{{- include "cron-operator.fullname" . }}
{{- end -}}

{{- /* Create the name of the deployment to use. */ -}}
{{- define "cron-operator.deployment.name" -}}
{{- include "cron-operator.fullname" . }}
{{- end -}}

{{- /* Create the name of the service to use. */ -}}
{{- define "cron-operator.service.name" -}}
{{- include "cron-operator.fullname" . }}
{{- end -}}

{{- /* Create the name of the image to use. */ -}}
{{- define "cron-operator.image" -}}
{{- $imageRegistry := .Values.image.registry | default .Values.global.imagePrefix | default .Values.global.image.registry }}
{{- $imageRepository := .Values.image.repository }}
{{- $imageTag := .Values.image.tag | default .Chart.AppVersion }}
{{- printf "%s/%s:%s" $imageRegistry $imageRepository $imageTag }}
{{- end -}}

{{- /* Create the nodeSelector of cron-operator pods to use. */ -}}
{{- define "cron-operator.nodeSelector" -}}
{{- with .Values.global.nodeSelector }}
{{- . | toYaml | nindent 0 }}
{{- end }}
{{- with .Values.nodeSelector }}
{{- . | toYaml | nindent 0 }}
{{- end }}
{{- if eq .Values.global.clusterProfile "Edge" }}
alibabacloud.com/is-edge-worker: "false"
{{- end }}
{{- end -}}

{{- /* Create the affinity of cron-operator pods to use. */ -}}
{{- define "cron-operator.affinity" -}}
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
{{- include "cron-operator.selectorLabels" . | nindent 10 }}
topologyKey: kubernetes.io/hostname
{{- end -}}

{{- /* Create the tolerations of cron-operator pods to use. */ -}}
{{- define "cron-operator.tolerations" -}}
{{- with .Values.global.tolerations }}
{{- . | toYaml | nindent 6 }}
{{- end }}
{{- with .Values.tolerations }}
{{- . | toYaml | nindent 6 }}
{{- end }}
{{- if eq .Values.global.clusterProfile "Edge" }}
- key: node-role.alibabacloud.com/addon
operator: Exists
effect: NoSchedule
{{- end }}
{{- end -}}
Loading
Loading