-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelmfile.yaml.gotmpl
More file actions
100 lines (91 loc) · 3.64 KB
/
Copy pathhelmfile.yaml.gotmpl
File metadata and controls
100 lines (91 loc) · 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# Root helmfile — orchestrates all add-ons across clusters.
#
# Usage:
# helmfile -e <environment> sync # install / upgrade
# helmfile -e <environment> diff # dry-run diff
# helmfile -e <environment> destroy # uninstall
#
# Environments map 1-to-1 with EKS clusters.
# Each environment file sets a `profile:` key (dev / test / prod) which loads
# the matching profile YAML for profile-specific tuning.
environments:
eks-karpenter-vpa:
values:
- environments/eks-karpenter-vpa.yaml
- profiles/dev.yaml
---
repositories:
- name: karpenter
url: public.ecr.aws/karpenter
oci: true
- name: metrics-server
url: https://kubernetes-sigs.github.io/metrics-server/
- name: fairwinds-stable
url: https://charts.fairwinds.com/stable
releases:
# ── 1. metrics-server ────────────────────────────────────────────────────
# VPA recommender reads live CPU/memory usage from metrics-server.
# Must be deployed before VPA.
- name: metrics-server
namespace: kube-system
createNamespace: false
chart: metrics-server/metrics-server
version: "3.12.2"
values:
- vpa/metrics-server-values.yaml
# ── 2. VPA (Fairwinds chart) ──────────────────────────────────────────────
# Installs the VPA CRDs + recommender + updater + admission controller.
# Feature gate InPlaceOrRecreate enables live container resize (K8s 1.35).
- name: vpa
namespace: vpa
createNamespace: true
chart: fairwinds-stable/vpa
version: "4.12.1"
values:
- vpa/values.yaml.gotmpl
hooks:
# Apply the gp3 WaitForFirstConsumer StorageClass before any stateful
# workloads are created. Ensures PVC-bound pods never hit zone conflicts.
- events: ["presync"]
showlogs: true
command: kubectl
args:
- apply
- -f
- storage/manifests/gp3-storageclass.yaml
# ── 3. Goldilocks ─────────────────────────────────────────────────────────
# Auto-creates a VPA object per Deployment in labeled namespaces and
# exposes a right-sizing dashboard.
#
# Opt a namespace in:
# kubectl label namespace <ns> goldilocks.fairwinds.com/enabled=true
# kubectl label namespace <ns> goldilocks.fairwinds.com/vpa-update-mode=InPlaceOrRecreate
- name: goldilocks
namespace: goldilocks
createNamespace: true
chart: fairwinds-stable/goldilocks
version: "9.0.1"
values:
- vpa/goldilocks-values.yaml.gotmpl
# ── 4. Karpenter ──────────────────────────────────────────────────────────
# Dynamic node provisioner. Pinned to managed nodes at startup to avoid a
# chicken-and-egg scheduling problem.
#
# Before running: helm registry login public.ecr.aws (ECR OCI auth)
- name: karpenter
namespace: kube-system
createNamespace: false
chart: karpenter/karpenter
version: {{ .Values.karpenter_version }}
values:
- karpenter/values.yaml.gotmpl
hooks:
# Karpenter v1.x bundles CRDs inside the chart — no separate CRD step.
# Apply the profile-specific EC2NodeClass + NodePool after install.
- events: ["postsync"]
showlogs: true
command: kubectl
args:
- apply
- -f
- {{ .Values.karpenter_manifest_dir }}