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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.idea/*
charts/mlrun-ce/charts/*
.DS_Store
**/.DS_Store
*.DS_Store
2 changes: 1 addition & 1 deletion charts/mlrun-ce/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apiVersion: v1
name: mlrun-ce
version: 0.10.1-rc3
version: 0.10.1-rc4
description: MLRun Open Source Stack
home: https://iguazio.com
icon: https://www.iguazio.com/wp-content/uploads/2019/10/Iguazio-Logo.png
Expand Down
4 changes: 4 additions & 0 deletions charts/mlrun-ce/admin_installation_values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,9 @@ kube-prometheus-stack:
tdengine:
enabled: false

strimzi-kafka-operator:
enabled: true
watchAnyNamespace: true

kafka:
enabled: false
10 changes: 5 additions & 5 deletions charts/mlrun-ce/requirements.lock
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ dependencies:
- name: kube-prometheus-stack
repository: https://prometheus-community.github.io/helm-charts
version: 72.1.1
- name: kafka
repository: https://charts.bitnami.com/bitnami
version: 31.3.1
digest: sha256:d804805eb592a0f9a3be418429cee7c150170ed13f6a03b4c3152f3f8b6ae5ba
generated: "2025-12-02T13:37:34.112042+02:00"
- name: strimzi-kafka-operator
repository: https://strimzi.io/charts/
version: 0.48.0
digest: sha256:f45be2a1208958d753b2e8a95f33eee17718ad1e691317ec0b50e3c088a7cae8
generated: "2025-11-04T15:56:02.250773+02:00"
8 changes: 4 additions & 4 deletions charts/mlrun-ce/requirements.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ dependencies:
repository: "https://prometheus-community.github.io/helm-charts"
version: "72.1.1"
condition: kube-prometheus-stack.enabled
- name: kafka
repository: "https://charts.bitnami.com/bitnami"
version: "31.3.1"
condition: kafka.enabled
- name: strimzi-kafka-operator
repository: "https://strimzi.io/charts/"
version: "0.48.0"
condition: strimzi-kafka-operator.enabled
24 changes: 24 additions & 0 deletions charts/mlrun-ce/templates/kafka/kafka-bootstrap-alias.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{{- if .Values.kafka.bootstrapAlias.enabled }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.kafka.bootstrapAlias.name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: kafka
app.kubernetes.io/component: bootstrap-alias
{{- include "mlrun-ce.common.labels" . | nindent 4 }}
spec:
type: ClusterIP
ports:
- name: client
port: 9092
targetPort: 9092
protocol: TCP
selector:
strimzi.io/cluster: {{ .Values.kafka.name }}
strimzi.io/kind: Kafka
strimzi.io/name: {{ .Values.kafka.name }}-kafka
{{- end }}

29 changes: 29 additions & 0 deletions charts/mlrun-ce/templates/kafka/kafka-cluster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{{- if .Values.kafka.enabled }}
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: {{ .Values.kafka.name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: kafka
app.kubernetes.io/component: cluster
{{- include "mlrun-ce.common.labels" . | nindent 4 }}
spec:
kafka:
listeners:
{{- range .Values.kafka.listeners }}
- name: {{ .name }}
port: {{ .port }}
type: {{ .type }}
tls: {{ .tls }}
{{- end }}
config:
{{- toYaml .Values.kafka.config | nindent 6 }}
{{- if gt (.Values.kafka.zookeeper.replicas | int) 0 }}
zookeeper:
replicas: {{ .Values.kafka.zookeeper.replicas }}
storage:
type: persistent-claim
size: 8Gi
{{- end }}
{{- end }}
58 changes: 58 additions & 0 deletions charts/mlrun-ce/templates/kafka/kafka-network-policy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{{- if .Values.kafka.rbac.enabled -}}
{{- $operatorNamespace := .Values.kafka.rbac.operatorNamespace | default "controller" -}}
{{- $kafkaName := .Values.kafka.name | default "kafka-stream" -}}
{{- $currentNamespace := .Release.Namespace -}}
---
# NetworkPolicy: Allow egress from this namespace to Kafka namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-kafka-access
namespace: {{ $currentNamespace }}
labels:
app.kubernetes.io/name: mlrun-ce
app.kubernetes.io/component: kafka-rbac
app.kubernetes.io/managed-by: {{ .Release.Name }}
spec:
# Apply to all pods in this namespace
podSelector: {}

policyTypes:
- Egress

egress:
# Allow egress to Kafka namespace
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: {{ $operatorNamespace }}
podSelector:
matchLabels:
strimzi.io/cluster: {{ $kafkaName }}
ports:
- protocol: TCP
port: 9092 # client listener
- protocol: TCP
port: 9093 # controller listener
- protocol: TCP
port: 9094 # internal listener

# Allow DNS resolution (required for service discovery)
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- protocol: UDP
port: 53
- protocol: TCP
port: 53

# Allow egress within same namespace
- to:
- podSelector: {}
{{- end }}

30 changes: 30 additions & 0 deletions charts/mlrun-ce/templates/kafka/kafka-nodepool.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{{- if .Values.kafka.enabled }}
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaNodePool
metadata:
name: {{ .Values.kafka.name }}-pool
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: kafka
app.kubernetes.io/component: nodepool
strimzi.io/cluster: {{ .Values.kafka.name }}
{{- include "mlrun-ce.common.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.kafka.replicas }}
roles:
- controller
- broker
storage:
type: {{ .Values.kafka.storage.type }}
size: {{ .Values.kafka.storage.size }}
{{- if .Values.kafka.storage.class }}
class: {{ .Values.kafka.storage.class }}
{{- end }}
resources:
requests:
memory: {{ .Values.kafka.resources.requests.memory }}
cpu: {{ .Values.kafka.resources.requests.cpu }}
limits:
memory: {{ .Values.kafka.resources.limits.memory }}
cpu: {{ .Values.kafka.resources.limits.cpu }}
{{- end }}
90 changes: 90 additions & 0 deletions charts/mlrun-ce/templates/kafka/kafka-rbac.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
{{- if .Values.kafka.rbac.enabled -}}
{{- $operatorNamespace := .Values.kafka.rbac.operatorNamespace | default "controller" -}}
{{- $kafkaName := .Values.kafka.name | default "kafka-stream" -}}
{{- $currentNamespace := .Release.Namespace -}}
---
# ServiceAccount for Kafka client applications
apiVersion: v1
kind: ServiceAccount
metadata:
name: kafka-client
namespace: {{ $currentNamespace }}
labels:
app.kubernetes.io/name: mlrun-ce
app.kubernetes.io/component: kafka-rbac
app.kubernetes.io/managed-by: {{ .Release.Name }}
---
# Role: Allow managing Kafka resources via CRDs in the operator namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ $currentNamespace }}-kafka-resource-manager
namespace: {{ $operatorNamespace }}
labels:
app.kubernetes.io/name: mlrun-ce
app.kubernetes.io/component: kafka-rbac
app.kubernetes.io/managed-by: {{ .Release.Name }}
user-namespace: {{ $currentNamespace }}
rules:
# Allow creating and managing KafkaTopic CRDs
- apiGroups:
- kafka.strimzi.io
resources:
- kafkatopics
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
# Allow checking KafkaTopic status
- apiGroups:
- kafka.strimzi.io
resources:
- kafkatopics/status
verbs:
- get
- list
- watch
# Allow reading KafkaUser CRDs (if using SCRAM auth)
- apiGroups:
- kafka.strimzi.io
resources:
- kafkausers
verbs:
- get
- list
- watch
# Allow reading the Kafka cluster info
- apiGroups:
- kafka.strimzi.io
resources:
- kafkas
verbs:
- get
- list
- watch
---
# RoleBinding: Grant Kafka resource management permissions to ServiceAccount
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ $currentNamespace }}-kafka-resource-manager
namespace: {{ $operatorNamespace }}
labels:
app.kubernetes.io/name: mlrun-ce
app.kubernetes.io/component: kafka-rbac
app.kubernetes.io/managed-by: {{ .Release.Name }}
user-namespace: {{ $currentNamespace }}
subjects:
- kind: ServiceAccount
name: kafka-client
namespace: {{ $currentNamespace }}
roleRef:
kind: Role
name: {{ $currentNamespace }}-kafka-resource-manager
apiGroup: rbac.authorization.k8s.io
{{- end }}

Loading
Loading