Skip to content

Commit 7846540

Browse files
authored
Merge pull request #317 from devtron-labs/ai-agent
misc: Added ai-helm chart
2 parents 46cf8c9 + 823ce32 commit 7846540

File tree

7 files changed

+387
-0
lines changed

7 files changed

+387
-0
lines changed

charts/ai-agent/.helmignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/

charts/ai-agent/Chart.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: v2
2+
appVersion: 0.0.1
3+
description: Devtron AI Agent Helm chart for Kubernetes
4+
name: ai-agent
5+
keywords:
6+
- Devtron
7+
- kubernetes
8+
- devops
9+
- genai
10+
- ai
11+
- ai-gent
12+
type: application
13+
version: 0.0.1
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
{{- if .Values.createServiceAccount }}
2+
kind: ClusterRole
3+
apiVersion: rbac.authorization.k8s.io/v1
4+
metadata:
5+
name: {{ .Release.Name }}-ai-agent-cluster-role
6+
namespace : {{ .Release.Namespace }}
7+
rules:
8+
{{- if .Values.customClusterRoleRules }}
9+
{{ toYaml .Values.customClusterRoleRules | indent 2 }}
10+
{{- end }}
11+
- apiGroups:
12+
- "storage.k8s.io"
13+
resources:
14+
- storageclasses
15+
verbs:
16+
- list
17+
- get
18+
- watch
19+
- apiGroups:
20+
- "metrics.k8s.io"
21+
resources:
22+
- pods
23+
- nodes
24+
verbs:
25+
- get
26+
- list
27+
- apiGroups:
28+
- ""
29+
resources:
30+
- configmaps
31+
- daemonsets
32+
- deployments
33+
- events
34+
- namespaces
35+
- persistentvolumes
36+
- persistentvolumeclaims
37+
- pods
38+
- pods/status
39+
- pods/log
40+
- replicasets
41+
- replicationcontrollers
42+
- services
43+
- serviceaccounts
44+
- endpoints
45+
verbs:
46+
- get
47+
- list
48+
- watch
49+
50+
- apiGroups:
51+
- ""
52+
resources:
53+
- nodes
54+
verbs:
55+
- get
56+
- list
57+
- watch
58+
59+
- apiGroups:
60+
- "apiregistration.k8s.io"
61+
resources:
62+
- apiservices
63+
verbs:
64+
- get
65+
- list
66+
67+
- apiGroups:
68+
- "rbac.authorization.k8s.io"
69+
resources:
70+
- clusterroles
71+
- clusterrolebindings
72+
verbs:
73+
- get
74+
- list
75+
- watch
76+
- apiGroups:
77+
- "autoscaling"
78+
resources:
79+
- horizontalpodautoscalers
80+
verbs:
81+
- get
82+
- list
83+
- watch
84+
85+
- apiGroups:
86+
- apps
87+
resources:
88+
- daemonsets
89+
- deployments
90+
- deployments/scale
91+
- replicasets
92+
- replicasets/scale
93+
- statefulsets
94+
verbs:
95+
- get
96+
- list
97+
- watch
98+
99+
- apiGroups:
100+
- extensions
101+
resources:
102+
- daemonsets
103+
- deployments
104+
- deployments/scale
105+
- ingresses
106+
- replicasets
107+
- replicasets/scale
108+
- replicationcontrollers/scale
109+
verbs:
110+
- get
111+
- list
112+
- watch
113+
114+
- apiGroups:
115+
- batch
116+
resources:
117+
- cronjobs
118+
- jobs
119+
verbs:
120+
- get
121+
- list
122+
- watch
123+
124+
- apiGroups:
125+
- "events.k8s.io"
126+
resources:
127+
- events
128+
verbs:
129+
- get
130+
- list
131+
132+
- apiGroups:
133+
- networking.k8s.io
134+
resources:
135+
- ingresses
136+
- networkpolicies
137+
verbs:
138+
- get
139+
- list
140+
- watch
141+
- apiGroups:
142+
- autoscaling
143+
resources:
144+
- horizontalpodautoscalers
145+
verbs:
146+
- get
147+
- list
148+
- apiGroups:
149+
- "policy"
150+
resources:
151+
- poddisruptionbudgets
152+
- podsecuritypolicies
153+
verbs:
154+
- get
155+
- list
156+
- apiGroups:
157+
- rbac.authorization.k8s.io
158+
resources:
159+
- clusterroles
160+
- clusterrolebindings
161+
- roles
162+
- rolebindings
163+
verbs:
164+
- get
165+
- list
166+
167+
# Prometheus CRDs
168+
- apiGroups:
169+
- monitoring.coreos.com
170+
resources:
171+
- alertmanagers
172+
- alertmanagers/finalizers
173+
- alertmanagers/status
174+
- alertmanagerconfigs
175+
- prometheuses
176+
- prometheuses/finalizers
177+
- prometheuses/status
178+
- prometheusagents
179+
- prometheusagents/finalizers
180+
- prometheusagents/status
181+
- thanosrulers
182+
- thanosrulers/finalizers
183+
- thanosrulers/status
184+
- scrapeconfigs
185+
- servicemonitors
186+
- podmonitors
187+
- probes
188+
- prometheusrules
189+
verbs:
190+
- get
191+
- list
192+
- watch
193+
194+
---
195+
apiVersion: v1
196+
kind: ServiceAccount
197+
metadata:
198+
name: {{ .Release.Name }}-ai-agent-service-account
199+
namespace: {{ .Release.Namespace }}
200+
{{- if .Values.serviceAccount.annotations }}
201+
annotations:
202+
{{- with .Values.serviceAccount.annotations }}
203+
{{- toYaml . | nindent 4}}
204+
{{- end }}
205+
{{- end }}
206+
{{- if .Values.serviceAccount.imagePullSecrets }}
207+
imagePullSecrets:
208+
{{- toYaml .Values.serviceAccount.imagePullSecrets | nindent 2}}
209+
{{- end }}
210+
---
211+
apiVersion: rbac.authorization.k8s.io/v1
212+
kind: ClusterRoleBinding
213+
metadata:
214+
name: {{ .Release.Name }}-ai-agent-cluster-role-binding
215+
roleRef:
216+
apiGroup: rbac.authorization.k8s.io
217+
kind: ClusterRole
218+
name: {{ .Release.Name }}-ai-agent-cluster-role
219+
subjects:
220+
- kind: ServiceAccount
221+
name: {{ .Release.Name }}-ai-agent-service-account
222+
namespace: {{ .Release.Namespace }}
223+
{{- end }}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ .Release.Name }}-ai-agent
5+
namespace: {{ .Release.Namespace }}
6+
labels:
7+
app: ai-agent
8+
spec:
9+
replicas: 1
10+
selector:
11+
matchLabels:
12+
app: ai-agent
13+
template:
14+
metadata:
15+
labels:
16+
app: ai-agent
17+
spec:
18+
{{- if .Values.customServiceAccountName }}
19+
serviceAccountName: {{ .Values.customServiceAccountName }}
20+
{{ else }}
21+
serviceAccountName: {{ .Release.Name }}-ai-agent-service-account
22+
{{- end }}
23+
{{- if .Values.imagePullSecrets }}
24+
imagePullSecrets:
25+
{{- toYaml .Values.imagePullSecrets | nindent 6 }}
26+
{{- end }}
27+
containers:
28+
- name: ai-agent
29+
image: "{{ .Values.registry }}/{{ .Values.image }}"
30+
imagePullPolicy: Always
31+
command: ["python3", "-u", "server.py"]
32+
env:
33+
- name: CUSTOM_TOOLSET_LOCATION
34+
value: /etc/ai-agent/config/custom_toolset.yaml
35+
- name: LOG_LEVEL
36+
value: {{ .Values.logLevel }}
37+
- name: ALLOWED_TOOLSETS
38+
value: {{ .Values.allowedToolsets }}
39+
{{ if .Values.certificate -}}
40+
- name: CERTIFICATE
41+
value: {{ .Values.certificate }}
42+
{{- end }}
43+
{{- if .Values.additionalEnvVars -}}
44+
{{ toYaml .Values.additionalEnvVars | nindent 10 }}
45+
{{- end }}
46+
lifecycle:
47+
preStop:
48+
exec:
49+
command: ["bash", "-c", "kill -SIGINT 1"]
50+
volumeMounts:
51+
- mountPath: /etc/ai-agent/config
52+
name: custom-toolsets-configmap
53+
subPath: custom_toolset.yaml
54+
resources:
55+
requests:
56+
cpu: {{ .Values.resources.requests.cpu }}
57+
memory: {{ .Values.resources.requests.memory }}
58+
limits:
59+
memory: {{ .Values.resources.limits.memory }}
60+
{{ if .Values.resources.limits.cpu }}cpu: {{ .Values.resources.limits.cpu | quote }}{{ end }}
61+
{{- if .Values.tolerations }}
62+
tolerations: {{ toYaml .Values.tolerations | nindent 8 }}
63+
{{- end }}
64+
volumes:
65+
- configMap:
66+
name: custom-toolsets-configmap
67+
optional: true
68+
name: custom-toolsets-configmap
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ .Release.Name }}-ai-agent
5+
namespace: {{ .Release.Namespace }}
6+
labels:
7+
app: ai-agent
8+
spec:
9+
selector:
10+
app: ai-agent
11+
ports:
12+
- name: http
13+
protocol: TCP
14+
port: 80
15+
targetPort: 5050
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{{- if gt (len .Values.toolsets) 0 }}
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: custom-toolsets-configmap
6+
namespace: {{ .Release.Namespace }}
7+
data:
8+
custom_toolset.yaml: |-
9+
toolsets:
10+
{{ toYaml .Values.toolsets | nindent 4 }}
11+
{{- end }}

charts/ai-agent/values.yaml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
certificate: "" # base64 encoded
2+
logLevel: INFO
3+
4+
additionalEnvVars: []
5+
imagePullSecrets: []
6+
7+
allowedToolsets: "kubernetes/core,internet"
8+
9+
image: ai-agent:0.0.1
10+
registry: quay.io/devtron
11+
12+
enableAccountsCreate: true
13+
14+
createServiceAccount: true
15+
customServiceAccountName: ""
16+
17+
customClusterRoleRules: []
18+
19+
postProcessingPrompt: "builtin://generic_post_processing.jinja2"
20+
21+
tolerations: []
22+
23+
serviceAccount:
24+
imagePullSecrets: []
25+
annotations: {}
26+
27+
toolsets: []
28+
29+
resources:
30+
requests:
31+
cpu: 100m
32+
memory: 1024Mi
33+
limits:
34+
memory: 1024Mi

0 commit comments

Comments
 (0)