diff --git a/egress-sample.yaml b/egress-sample.yaml index 72df4f8..7d47f02 100644 --- a/egress-sample.yaml +++ b/egress-sample.yaml @@ -50,6 +50,14 @@ autoscaling: # metricName: my_metric_name # targetAverageValue: 70 +# PodDisruptionBudget - recommended for production to maintain availability during node drains +# Uncomment to enable: +# podDisruptionBudget: +# enabled: true +# minAvailable: 1 # Keep at least 1 pod available during disruptions + # OR use maxUnavailable instead: + # maxUnavailable: 1 # Allow at most 1 pod to be unavailable + # if egress should run only on specific nodes # this can be used to isolate designated nodes nodeSelector: {} diff --git a/egress/templates/poddisruptionbudget.yaml b/egress/templates/poddisruptionbudget.yaml new file mode 100644 index 0000000..ec6f4cd --- /dev/null +++ b/egress/templates/poddisruptionbudget.yaml @@ -0,0 +1,18 @@ +{{- if .Values.podDisruptionBudget.enabled }} +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: {{ include "egress.fullname" . }} + labels: + {{- include "egress.labels" . | nindent 4 }} +spec: + {{- if .Values.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} + {{- end }} + {{- if .Values.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} + {{- end }} + selector: + matchLabels: + {{- include "egress.selectorLabels" . | nindent 6 }} +{{- end }} diff --git a/egress/values.yaml b/egress/values.yaml index 1343c35..c273b74 100644 --- a/egress/values.yaml +++ b/egress/values.yaml @@ -21,6 +21,15 @@ fullnameOverride: "" autoscaling: enabled: false +# PodDisruptionBudget configuration +# Helps maintain availability during voluntary disruptions (node draining, cluster autoscaling, etc.) +# Recommended for production deployments with multiple replicas +podDisruptionBudget: + enabled: false + # minAvailable: 1 # Minimum number of pods that must be available + # maxUnavailable: 1 # Maximum number of pods that can be unavailable + # Note: Use either minAvailable or maxUnavailable, not both + nodeSelector: {} resources: {} diff --git a/ingress-sample.yaml b/ingress-sample.yaml index 28af89d..7de2f29 100644 --- a/ingress-sample.yaml +++ b/ingress-sample.yaml @@ -47,6 +47,14 @@ autoscaling: # metricName: my_metric_name # targetAverageValue: 70 +# PodDisruptionBudget - recommended for production to maintain availability during node drains +# Uncomment to enable: +# podDisruptionBudget: +# enabled: true +# minAvailable: 1 # Keep at least 1 pod available during disruptions + # OR use maxUnavailable instead: + # maxUnavailable: 1 # Allow at most 1 pod to be unavailable + # if ingress should run only on specific nodes # this can be used to isolate designated nodes nodeSelector: {} diff --git a/ingress/templates/poddisruptionbudget.yaml b/ingress/templates/poddisruptionbudget.yaml new file mode 100644 index 0000000..6185e49 --- /dev/null +++ b/ingress/templates/poddisruptionbudget.yaml @@ -0,0 +1,18 @@ +{{- if .Values.podDisruptionBudget.enabled }} +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: {{ include "ingress.fullname" . }} + labels: + {{- include "ingress.labels" . | nindent 4 }} +spec: + {{- if .Values.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} + {{- end }} + {{- if .Values.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} + {{- end }} + selector: + matchLabels: + {{- include "ingress.selectorLabels" . | nindent 6 }} +{{- end }} diff --git a/ingress/values.yaml b/ingress/values.yaml index 00d8b06..155ecd1 100644 --- a/ingress/values.yaml +++ b/ingress/values.yaml @@ -38,6 +38,15 @@ fullnameOverride: "" autoscaling: enabled: false +# PodDisruptionBudget configuration +# Helps maintain availability during voluntary disruptions (node draining, cluster autoscaling, etc.) +# Recommended for production deployments with multiple replicas +podDisruptionBudget: + enabled: false + # minAvailable: 1 # Minimum number of pods that must be available + # maxUnavailable: 1 # Maximum number of pods that can be unavailable + # Note: Use either minAvailable or maxUnavailable, not both + nodeSelector: {} resources: {} diff --git a/livekit-server/templates/poddisruptionbudget.yaml b/livekit-server/templates/poddisruptionbudget.yaml new file mode 100644 index 0000000..4197ec2 --- /dev/null +++ b/livekit-server/templates/poddisruptionbudget.yaml @@ -0,0 +1,18 @@ +{{- if .Values.podDisruptionBudget.enabled }} +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: {{ include "livekit-server.fullname" . }} + labels: + {{- include "livekit-server.labels" . | nindent 4 }} +spec: + {{- if .Values.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} + {{- end }} + {{- if .Values.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} + {{- end }} + selector: + matchLabels: + {{- include "livekit-server.selectorLabels" . | nindent 6 }} +{{- end }} diff --git a/livekit-server/values.yaml b/livekit-server/values.yaml index bcf6d51..52bb210 100644 --- a/livekit-server/values.yaml +++ b/livekit-server/values.yaml @@ -78,6 +78,15 @@ autoscaling: targetCPUUtilizationPercentage: 60 # targetMemoryUtilizationPercentage: 80 +# PodDisruptionBudget configuration +# Helps maintain availability during voluntary disruptions (node draining, cluster autoscaling, etc.) +# Recommended for production deployments with multiple replicas +podDisruptionBudget: + enabled: false + # minAvailable: 1 # Minimum number of pods that must be available + # maxUnavailable: 1 # Maximum number of pods that can be unavailable + # Note: Use either minAvailable or maxUnavailable, not both + # if LiveKit should run only on specific nodes # this can be used to isolate designated nodes nodeSelector: diff --git a/server-sample.yaml b/server-sample.yaml index 39ed684..37adc57 100644 --- a/server-sample.yaml +++ b/server-sample.yaml @@ -78,6 +78,13 @@ autoscaling: maxReplicas: 5 targetCPUUtilizationPercentage: 60 +# PodDisruptionBudget, recommended for production to maintain availability during node drains +# podDisruptionBudget: +# enabled: true +# minAvailable: 1 # Keep at least 1 pod available during disruptions + # OR use maxUnavailable instead: + # maxUnavailable: 1 # Allow at most 1 pod to be unavailable + # if LiveKit should run only on specific nodes # this can be used to isolate designated nodes nodeSelector: