Skip to content

Commit 7ab7dff

Browse files
authored
helm chart for kueue addon (open-cluster-management-io#37)
Signed-off-by: Qing Hao <qhao@redhat.com>
1 parent 653c753 commit 7ab7dff

14 files changed

Lines changed: 334 additions & 126 deletions
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: v2
2+
name: kueue-addon
3+
description: A Helm chart for Open Cluster Management Kueue Addon
4+
type: application
5+
version: 0.1.0
6+
appVersion: "0.9.0"
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
apiVersion: addon.open-cluster-management.io/v1alpha1
2+
kind: AddOnTemplate
3+
metadata:
4+
name: kueue-addon-{{ .Chart.Version }}
5+
spec:
6+
addonName: kueue-addon
7+
agentSpec:
8+
workload:
9+
manifests:
10+
- apiVersion: rbac.authorization.k8s.io/v1
11+
kind: ClusterRoleBinding
12+
metadata:
13+
name: kueue-resourceflavor-ocm-rolebinding
14+
roleRef:
15+
apiGroup: rbac.authorization.k8s.io
16+
kind: ClusterRole
17+
name: kueue-resourceflavor-editor-role
18+
subjects:
19+
- kind: ServiceAccount
20+
name: klusterlet-work-sa
21+
namespace: open-cluster-management-agent
22+
- apiVersion: rbac.authorization.k8s.io/v1
23+
kind: ClusterRoleBinding
24+
metadata:
25+
name: kueue-clusterqueue-ocm-rolebinding
26+
roleRef:
27+
apiGroup: rbac.authorization.k8s.io
28+
kind: ClusterRole
29+
name: kueue-clusterqueue-editor-role
30+
subjects:
31+
- kind: ServiceAccount
32+
name: klusterlet-work-sa
33+
namespace: open-cluster-management-agent
34+
- apiVersion: rbac.authorization.k8s.io/v1
35+
kind: ClusterRoleBinding
36+
metadata:
37+
name: kueue-localqueue-ocm-rolebinding
38+
roleRef:
39+
apiGroup: rbac.authorization.k8s.io
40+
kind: ClusterRole
41+
name: kueue-localqueue-editor-role
42+
subjects:
43+
- kind: ServiceAccount
44+
name: klusterlet-work-sa
45+
namespace: open-cluster-management-agent
46+
- apiVersion: kueue.x-k8s.io/v1beta1
47+
kind: ResourceFlavor
48+
metadata:
49+
name: {{ .Values.resourceFlavor.name}}
50+
- apiVersion: kueue.x-k8s.io/v1beta1
51+
kind: ClusterQueue
52+
metadata:
53+
name: {{ .Values.clusterQueue.name}}
54+
spec:
55+
namespaceSelector: {{ .Values.clusterQueue.namespaceSelector }}
56+
resourceGroups:
57+
{{- toYaml .Values.clusterQueue.resourceGroups | nindent 12 }}
58+
- apiVersion: kueue.x-k8s.io/v1beta1
59+
kind: LocalQueue
60+
metadata:
61+
namespace: {{ .Values.localQueue.namespace}}
62+
name: {{ .Values.localQueue.name}}
63+
spec:
64+
clusterQueue: {{ .Values.clusterQueue.name}}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: addon.open-cluster-management.io/v1alpha1
2+
kind: ClusterManagementAddOn
3+
metadata:
4+
name: kueue-addon
5+
spec:
6+
addOnMeta:
7+
displayName: kueue-addon
8+
description: kueue-addon
9+
supportedConfigs:
10+
- group: addon.open-cluster-management.io
11+
resource: addontemplates
12+
installStrategy:
13+
type: Placements
14+
placements:
15+
- name: {{ .Values.placement.name }}
16+
namespace: {{ .Release.Namespace }}
17+
configs:
18+
- name: kueue-addon-{{ .Chart.Version }}
19+
group: addon.open-cluster-management.io
20+
resource: addontemplates
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
kind: ClusterRole
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
metadata:
4+
name: open-cluster-management:kueue-addon:controller
5+
rules:
6+
- apiGroups: [ "" ]
7+
resources: [ "nodes","configmaps", "pods", "events", "secrets"]
8+
verbs: [ "get", "list", "watch", "create", "update", "delete", "deletecollection", "patch" ]
9+
- apiGroups: [ "coordination.k8s.io" ]
10+
resources: [ "leases" ]
11+
verbs: [ "create", "get", "list", "update", "watch", "patch" ]
12+
# Allow hub to managedclusters, placements, placementdecisions
13+
- apiGroups: ["cluster.open-cluster-management.io"]
14+
resources: ["managedclusters", "placements", "placementdecisions"]
15+
verbs: ["get", "list", "watch"]
16+
# Allow hub to clusterpermission
17+
- apiGroups: ["rbac.open-cluster-management.io"]
18+
resources: ["clusterpermissions"]
19+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
20+
# Allow hub to managedserviceaccount
21+
- apiGroups: ["authentication.open-cluster-management.io"]
22+
resources: ["managedserviceaccounts"]
23+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
24+
# Allow hub to manage multikueueconfig
25+
- apiGroups: ["kueue.x-k8s.io"]
26+
resources: ["multikueueconfigs"]
27+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
28+
# Allow hub to manage multikueueclusters
29+
- apiGroups: ["kueue.x-k8s.io"]
30+
resources: ["multikueueclusters"]
31+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
32+
# Allow hub to manage admissionchecks
33+
- apiGroups: ["kueue.x-k8s.io"]
34+
resources: ["admissionchecks"]
35+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
36+
- apiGroups: ["kueue.x-k8s.io"]
37+
resources: ["admissionchecks/status"]
38+
verbs: ["update", "patch"]
39+
40+
---
41+
42+
kind: ClusterRoleBinding
43+
apiVersion: rbac.authorization.k8s.io/v1
44+
metadata:
45+
name: open-cluster-management:kueue-addon:controller
46+
roleRef:
47+
apiGroup: rbac.authorization.k8s.io
48+
kind: ClusterRole
49+
name: open-cluster-management:kueue-addon:controller
50+
subjects:
51+
- kind: ServiceAccount
52+
name: kueue-addon-controller-sa
53+
namespace: {{ .Release.Namespace }}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
kind: Deployment
2+
apiVersion: apps/v1
3+
metadata:
4+
name: kueue-addon-controller
5+
namespace: {{ .Release.Namespace }}
6+
spec:
7+
replicas: 1
8+
selector:
9+
matchLabels:
10+
app: kueue-addon-controller
11+
template:
12+
metadata:
13+
labels:
14+
app: kueue-addon-controller
15+
spec:
16+
serviceAccount: kueue-addon-controller-sa
17+
containers:
18+
- name: kueue-addon-controller
19+
image: {{ .Values.image }}:{{ .Values.tag | default (print "v" .Chart.Version) }}
20+
imagePullPolicy: Always
21+
args:
22+
- "/kueue-addon-controller"
23+
- "hub"
24+
25+
---
26+
27+
kind: ServiceAccount
28+
apiVersion: v1
29+
metadata:
30+
name: kueue-addon-controller-sa
31+
namespace: {{ .Release.Namespace }}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{{ if not .Values.skipClusterSetBinding }}
2+
apiVersion: cluster.open-cluster-management.io/v1beta2
3+
kind: ManagedClusterSetBinding
4+
metadata:
5+
name: global
6+
namespace: {{ .Release.Namespace }}
7+
spec:
8+
clusterSet: global
9+
{{- end }}
10+
11+
---
12+
13+
apiVersion: cluster.open-cluster-management.io/v1beta1
14+
kind: Placement
15+
metadata:
16+
name: {{ .Values.placement.name }}
17+
namespace: {{ .Release.Namespace }}
18+
spec:
19+
clusterSets:
20+
- global
21+
tolerations:
22+
- key: cluster.open-cluster-management.io/unreachable
23+
operator: Equal
24+
- key: cluster.open-cluster-management.io/unavailable
25+
operator: Equal
26+
predicates:
27+
- requiredClusterSelector:
28+
labelSelector:
29+
matchExpressions:
30+
- key: local-cluster
31+
operator: DoesNotExist
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Default values for kueue-addon.
2+
# This is a YAML-formatted file.
3+
4+
# Image configuration
5+
image: quay.io/open-cluster-management/kueue-addon
6+
tag: latest
7+
8+
# Skip cluster set binding
9+
skipClusterSetBinding: false
10+
11+
# Placement configuration
12+
placement:
13+
name: spoke
14+
15+
# Resource flavor
16+
resourceFlavor:
17+
name: default-flavor
18+
19+
# Cluster queue
20+
clusterQueue:
21+
name: cluster-queue
22+
namespaceSelector: "{}" # match all namespaces
23+
resourceGroups:
24+
- coveredResources: ["cpu", "memory", "nvidia.com/gpu"]
25+
flavors:
26+
- name: "default-flavor"
27+
resources:
28+
- name: "cpu"
29+
nominalQuota: 9
30+
- name: "memory"
31+
nominalQuota: 36Gi
32+
- name: "nvidia.com/gpu"
33+
nominalQuota: 3
34+
35+
# Local queue
36+
localQueue:
37+
name: user-queue
38+
namespace: default

kueue-addon/deploy/kustomization.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
resources:
2-
- resources/addon-template-hub.yaml
3-
- resources/addon-template-spoke.yaml
2+
- resources/addon-template.yaml
43
- resources/cluster-management-addon.yaml
54
- resources/placement.yaml
5+
- resources/deployment.yaml
6+
- resources/cluster-role.yaml
67

78
images:
89
- name: kueue-addon-image

kueue-addon/deploy/resources/addon-template-hub.yaml

Lines changed: 0 additions & 97 deletions
This file was deleted.

kueue-addon/deploy/resources/addon-template-spoke.yaml renamed to kueue-addon/deploy/resources/addon-template.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: addon.open-cluster-management.io/v1alpha1
22
kind: AddOnTemplate
33
metadata:
4-
name: kueue-addon-spoke
4+
name: kueue-addon
55
spec:
66
addonName: kueue-addon
77
agentSpec:

0 commit comments

Comments
 (0)