Adding limits

This commit is contained in:
juvdiaz 2026-07-02 17:32:25 -06:00
parent acc88d1ca6
commit 8bc44edaf8
7 changed files with 355 additions and 0 deletions

View File

@ -59,6 +59,7 @@ spec:
cpu: 50m cpu: 50m
memory: 64Mi memory: 64Mi
limits: limits:
cpu: 200m
memory: 256Mi memory: 256Mi
volumeMounts: volumeMounts:
- name: registry-vol - name: registry-vol

View File

@ -51,6 +51,7 @@ spec:
cpu: 15m cpu: 15m
memory: 32Mi memory: 32Mi
limits: limits:
cpu: 100m
memory: 128Mi memory: 128Mi
volumeMounts: volumeMounts:
- name: nginx-cache - name: nginx-cache

View File

@ -90,6 +90,7 @@ spec:
cpu: 100m cpu: 100m
memory: 384Mi memory: 384Mi
limits: limits:
cpu: 500m
memory: 1Gi memory: 1Gi
volumeMounts: volumeMounts:
- name: n8n-data - name: n8n-data

View File

@ -96,6 +96,7 @@ spec:
cpu: 100m cpu: 100m
memory: 128Mi memory: 128Mi
limits: limits:
cpu: 400m
memory: 384Mi memory: 384Mi
volumeMounts: volumeMounts:
- name: apache-run - name: apache-run
@ -184,6 +185,7 @@ spec:
cpu: 25m cpu: 25m
memory: 64Mi memory: 64Mi
limits: limits:
cpu: 200m
memory: 160Mi memory: 160Mi
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false

View File

@ -411,6 +411,82 @@ EOT
} }
} }
resource "null_resource" "kube_system_resource_policy" {
depends_on = [null_resource.kubeadm_control_plane]
triggers = {
kubeconfig_path = var.kubeconfig_path
resource_policy_version = "1"
}
provisioner "local-exec" {
interpreter = ["/bin/bash", "-lc"]
command = <<EOT
set -euo pipefail
patch_static_pod_resources() {
name="$1"
request_cpu="$2"
request_memory="$3"
limit_cpu="$4"
limit_memory="$5"
manifest="/etc/kubernetes/manifests/$${name}.yaml"
if ! sudo test -f "$manifest"; then
echo "Static pod manifest not found, skipping: $manifest"
return 0
fi
tmp="$(mktemp)"
sudo kubectl set resources -f "$manifest" --local -o yaml \
--requests="cpu=$${request_cpu},memory=$${request_memory}" \
--limits="cpu=$${limit_cpu},memory=$${limit_memory}" >"$tmp"
sudo install -m 0644 "$tmp" "$manifest"
rm -f "$tmp"
}
patch_cluster_workload_resources() {
namespace="$1"
target="$2"
container="$3"
request_cpu="$4"
request_memory="$5"
limit_cpu="$6"
limit_memory="$7"
for _ in $(seq 1 60); do
if kubectl --kubeconfig "${self.triggers.kubeconfig_path}" -n "$namespace" get "$target" >/dev/null 2>&1; then
break
fi
sleep 5
done
kubectl --kubeconfig "${self.triggers.kubeconfig_path}" -n "$namespace" get "$target" >/dev/null
kubectl --kubeconfig "${self.triggers.kubeconfig_path}" -n "$namespace" set resources "$target" \
--containers="$container" \
--requests="cpu=$${request_cpu},memory=$${request_memory}" \
--limits="cpu=$${limit_cpu},memory=$${limit_memory}"
}
patch_static_pod_resources etcd 100m 256Mi 500m 1Gi
patch_static_pod_resources kube-apiserver 100m 256Mi 500m 1Gi
patch_static_pod_resources kube-controller-manager 50m 128Mi 250m 512Mi
patch_static_pod_resources kube-scheduler 50m 128Mi 200m 256Mi
for _ in $(seq 1 60); do
if kubectl --kubeconfig "${self.triggers.kubeconfig_path}" get --raw=/readyz >/dev/null 2>&1; then
break
fi
sleep 5
done
kubectl --kubeconfig "${self.triggers.kubeconfig_path}" get --raw=/readyz >/dev/null
patch_cluster_workload_resources kube-system deployment/coredns coredns 50m 128Mi 200m 256Mi
patch_cluster_workload_resources kube-system daemonset/kube-proxy kube-proxy 50m 64Mi 200m 256Mi
EOT
}
}
resource "null_resource" "worker_nodes_required" { resource "null_resource" "worker_nodes_required" {
triggers = { triggers = {
worker_count = tostring(length(var.worker_nodes)) worker_count = tostring(length(var.worker_nodes))
@ -429,6 +505,7 @@ resource "null_resource" "kubeadm_worker" {
depends_on = [ depends_on = [
null_resource.kubeadm_control_plane, null_resource.kubeadm_control_plane,
null_resource.kube_system_resource_policy,
null_resource.worker_nodes_required, null_resource.worker_nodes_required,
] ]

View File

@ -332,6 +332,16 @@ resource "helm_release" "calico" {
"kubernetes.io/os" = "linux" "kubernetes.io/os" = "linux"
"kubernetes.io/hostname" = var.calico_operator_node_name "kubernetes.io/hostname" = var.calico_operator_node_name
} }
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
apiServer = { apiServer = {
enabled = false enabled = false
} }
@ -343,6 +353,52 @@ resource "helm_release" "calico" {
} }
installation = { installation = {
controlPlaneReplicas = 1 controlPlaneReplicas = 1
calicoKubeControllersDeployment = {
spec = {
template = {
spec = {
containers = [
{
name = "calico-kube-controllers"
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
},
]
}
}
}
}
calicoNodeDaemonSet = {
spec = {
template = {
spec = {
containers = [
{
name = "calico-node"
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
},
]
}
}
}
}
cni = { cni = {
type = "Calico" type = "Calico"
} }
@ -359,6 +415,29 @@ resource "helm_release" "calico" {
} }
] ]
} }
typhaDeployment = {
spec = {
template = {
spec = {
containers = [
{
name = "calico-typha"
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
},
]
}
}
}
}
} }
}) })
] ]
@ -450,6 +529,7 @@ resource "helm_release" "metrics_server" {
memory = "128Mi" memory = "128Mi"
} }
limits = { limits = {
cpu = "200m"
memory = "256Mi" memory = "256Mi"
} }
} }
@ -793,9 +873,33 @@ resource "helm_release" "metallb" {
values = [ values = [
yamlencode({ yamlencode({
controller = {
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
}
frrk8s = { frrk8s = {
enabled = false enabled = false
} }
speaker = {
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
}
}) })
] ]
} }
@ -894,6 +998,7 @@ resource "helm_release" "traefik" {
memory = "96Mi" memory = "96Mi"
} }
limits = { limits = {
cpu = "200m"
memory = "256Mi" memory = "256Mi"
} }
} }
@ -913,6 +1018,20 @@ resource "helm_release" "openebs" {
values = [ values = [
yamlencode({ yamlencode({
"localpv-provisioner" = {
localpv = {
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
}
}
engines = { engines = {
local = { local = {
lvm = { lvm = {
@ -989,36 +1108,106 @@ resource "helm_release" "argocd" {
nodeSelector = local.argocd_node_selector nodeSelector = local.argocd_node_selector
affinity = local.argocd_component_affinity.application_set affinity = local.argocd_component_affinity.application_set
topologySpreadConstraints = local.argocd_component_topology_spread_constraints.application_set topologySpreadConstraints = local.argocd_component_topology_spread_constraints.application_set
resources = {
requests = {
cpu = "100m"
memory = "256Mi"
}
limits = {
cpu = "300m"
memory = "512Mi"
}
}
} }
controller = { controller = {
nodeSelector = local.argocd_node_selector nodeSelector = local.argocd_node_selector
affinity = local.argocd_component_affinity.controller affinity = local.argocd_component_affinity.controller
topologySpreadConstraints = local.argocd_component_topology_spread_constraints.controller topologySpreadConstraints = local.argocd_component_topology_spread_constraints.controller
resources = {
requests = {
cpu = "100m"
memory = "256Mi"
}
limits = {
cpu = "300m"
memory = "512Mi"
}
}
} }
dex = { dex = {
nodeSelector = local.argocd_node_selector nodeSelector = local.argocd_node_selector
affinity = local.argocd_component_affinity.dex affinity = local.argocd_component_affinity.dex
topologySpreadConstraints = local.argocd_component_topology_spread_constraints.dex topologySpreadConstraints = local.argocd_component_topology_spread_constraints.dex
resources = {
requests = {
cpu = "100m"
memory = "256Mi"
}
limits = {
cpu = "300m"
memory = "512Mi"
}
}
} }
notifications = { notifications = {
nodeSelector = local.argocd_node_selector nodeSelector = local.argocd_node_selector
affinity = local.argocd_component_affinity.notifications affinity = local.argocd_component_affinity.notifications
topologySpreadConstraints = local.argocd_component_topology_spread_constraints.notifications topologySpreadConstraints = local.argocd_component_topology_spread_constraints.notifications
resources = {
requests = {
cpu = "100m"
memory = "256Mi"
}
limits = {
cpu = "300m"
memory = "512Mi"
}
}
} }
redis = { redis = {
nodeSelector = local.argocd_node_selector nodeSelector = local.argocd_node_selector
affinity = local.argocd_component_affinity.redis affinity = local.argocd_component_affinity.redis
topologySpreadConstraints = local.argocd_component_topology_spread_constraints.redis topologySpreadConstraints = local.argocd_component_topology_spread_constraints.redis
resources = {
requests = {
cpu = "100m"
memory = "256Mi"
}
limits = {
cpu = "300m"
memory = "512Mi"
}
}
} }
repoServer = { repoServer = {
nodeSelector = local.argocd_node_selector nodeSelector = local.argocd_node_selector
affinity = local.argocd_component_affinity.repo_server affinity = local.argocd_component_affinity.repo_server
topologySpreadConstraints = local.argocd_component_topology_spread_constraints.repo_server topologySpreadConstraints = local.argocd_component_topology_spread_constraints.repo_server
resources = {
requests = {
cpu = "100m"
memory = "256Mi"
}
limits = {
cpu = "300m"
memory = "512Mi"
}
}
} }
server = { server = {
nodeSelector = local.argocd_node_selector nodeSelector = local.argocd_node_selector
affinity = local.argocd_component_affinity.server affinity = local.argocd_component_affinity.server
topologySpreadConstraints = local.argocd_component_topology_spread_constraints.server topologySpreadConstraints = local.argocd_component_topology_spread_constraints.server
resources = {
requests = {
cpu = "100m"
memory = "256Mi"
}
limits = {
cpu = "300m"
memory = "512Mi"
}
}
} }
}) })
] ]
@ -1162,6 +1351,7 @@ resource "helm_release" "kyverno" {
memory = "128Mi" memory = "128Mi"
} }
limits = { limits = {
cpu = "200m"
memory = "384Mi" memory = "384Mi"
} }
} }
@ -1177,6 +1367,7 @@ resource "helm_release" "kyverno" {
memory = "96Mi" memory = "96Mi"
} }
limits = { limits = {
cpu = "100m"
memory = "256Mi" memory = "256Mi"
} }
} }
@ -1192,6 +1383,7 @@ resource "helm_release" "kyverno" {
memory = "64Mi" memory = "64Mi"
} }
limits = { limits = {
cpu = "50m"
memory = "192Mi" memory = "192Mi"
} }
} }
@ -1207,6 +1399,7 @@ resource "helm_release" "kyverno" {
memory = "96Mi" memory = "96Mi"
} }
limits = { limits = {
cpu = "100m"
memory = "256Mi" memory = "256Mi"
} }
} }
@ -1302,10 +1495,23 @@ resource "helm_release" "loki" {
memory = "256Mi" memory = "256Mi"
} }
limits = { limits = {
cpu = "500m"
memory = "768Mi" memory = "768Mi"
} }
} }
} }
sidecar = {
resources = {
requests = {
cpu = "25m"
memory = "64Mi"
}
limits = {
cpu = "100m"
memory = "128Mi"
}
}
}
read = { read = {
replicas = 0 replicas = 0
} }
@ -1473,6 +1679,7 @@ resource "helm_release" "promtail" {
memory = "64Mi" memory = "64Mi"
} }
limits = { limits = {
cpu = "100m"
memory = "128Mi" memory = "128Mi"
} }
} }
@ -1521,13 +1728,36 @@ resource "helm_release" "prometheus_stack" {
memory = "128Mi" memory = "128Mi"
} }
limits = { limits = {
cpu = "200m"
memory = "384Mi" memory = "384Mi"
} }
} }
prometheusConfigReloader = {
resources = {
requests = {
cpu = "25m"
memory = "64Mi"
}
limits = {
cpu = "100m"
memory = "128Mi"
}
}
}
} }
alertmanager = { alertmanager = {
alertmanagerSpec = { alertmanagerSpec = {
nodeSelector = local.prometheus_stack_node_selector nodeSelector = local.prometheus_stack_node_selector
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
storage = { storage = {
volumeClaimTemplate = { volumeClaimTemplate = {
spec = { spec = {
@ -1553,6 +1783,7 @@ resource "helm_release" "prometheus_stack" {
memory = "512Mi" memory = "512Mi"
} }
limits = { limits = {
cpu = "500m"
memory = "1Gi" memory = "1Gi"
} }
} }
@ -1579,6 +1810,16 @@ resource "helm_release" "prometheus_stack" {
grafana = { grafana = {
nodeSelector = local.prometheus_stack_node_selector nodeSelector = local.prometheus_stack_node_selector
sidecar = { sidecar = {
resources = {
requests = {
cpu = "25m"
memory = "64Mi"
}
limits = {
cpu = "100m"
memory = "128Mi"
}
}
dashboards = { dashboards = {
enabled = true enabled = true
label = "grafana_dashboard" label = "grafana_dashboard"
@ -1620,6 +1861,7 @@ resource "helm_release" "prometheus_stack" {
memory = "128Mi" memory = "128Mi"
} }
limits = { limits = {
cpu = "200m"
memory = "384Mi" memory = "384Mi"
} }
} }
@ -1628,6 +1870,28 @@ resource "helm_release" "prometheus_stack" {
affinity = local.kube_state_metrics_affinity affinity = local.kube_state_metrics_affinity
nodeSelector = local.prometheus_stack_node_selector nodeSelector = local.prometheus_stack_node_selector
topologySpreadConstraints = local.kube_state_metrics_topology_spread_constraints topologySpreadConstraints = local.kube_state_metrics_topology_spread_constraints
resources = {
requests = {
cpu = "50m"
memory = "128Mi"
}
limits = {
cpu = "200m"
memory = "256Mi"
}
}
}
"prometheus-node-exporter" = {
resources = {
requests = {
cpu = "25m"
memory = "64Mi"
}
limits = {
cpu = "100m"
memory = "128Mi"
}
}
} }
}) })
] ]

View File

@ -287,7 +287,16 @@ variable "extra_helm_releases" {
cpu: 100m cpu: 100m
memory: 128Mi memory: 128Mi
limits: limits:
cpu: 500m
memory: 512Mi memory: 512Mi
export:
resources:
requests:
cpu: 25m
memory: 64Mi
limits:
cpu: 100m
memory: 128Mi
EOT EOT
set_values = {} set_values = {}
} }