Skip to content

Commit 39edbf2

Browse files
authored
Merge pull request #1479 from porter-dev/ym/karpenter
feat: adding the karpenter helm chart
2 parents 36d1ace + 99dd7b4 commit 39edbf2

26 files changed

+984
-2645
lines changed

Tiltfile

+1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ local_resource(
8282
helm cm-push addons/langfuse local && \
8383
helm cm-push addons/grafana local && \
8484
helm cm-push addons/porter-agent local && \
85+
helm cm-push addons/karpenter local && \
8586
helm repo update local
8687
''',
8788
deps=[

addons/karpenter-aws/crds/karpenter.sh_nodeclaims.yaml

-829
This file was deleted.

addons/karpenter-aws/crds/karpenter.sh_nodepools.yaml

-1,080
This file was deleted.

addons/karpenter-aws/templates/secret-webhook-cert.yaml

-14
This file was deleted.
File renamed without changes.
File renamed without changes.

addons/karpenter-aws/Chart.yaml renamed to addons/karpenter/Chart.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: v2
22
name: karpenter
33
description: A Helm chart for Karpenter, an open-source node provisioning project built for Kubernetes.
44
type: application
5-
version: 0.37.0
6-
appVersion: 0.37.0
5+
version: 1.1.1
6+
appVersion: 1.1.1
77
keywords:
88
- cluster
99
- node

addons/karpenter-aws/README.md renamed to addons/karpenter/README.md

+15-16
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
A Helm chart for Karpenter, an open-source node provisioning project built for Kubernetes.
44

5-
![Version: 0.37.0](https://img.shields.io/badge/Version-0.37.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.37.0](https://img.shields.io/badge/AppVersion-0.37.0-informational?style=flat-square)
5+
![Version: 1.1.1](https://img.shields.io/badge/Version-1.1.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.1.1](https://img.shields.io/badge/AppVersion-1.1.1-informational?style=flat-square)
66

77
## Documentation
88

@@ -15,7 +15,7 @@ You can follow the detailed installation instruction in the [documentation](http
1515
```bash
1616
helm upgrade --install --namespace karpenter --create-namespace \
1717
karpenter oci://public.ecr.aws/karpenter/karpenter \
18-
--version 0.37.0 \
18+
--version 1.1.1 \
1919
--set "serviceAccount.annotations.eks\.amazonaws\.com/role-arn=${KARPENTER_IAM_ROLE_ARN}" \
2020
--set settings.clusterName=${CLUSTER_NAME} \
2121
--set settings.interruptionQueue=${CLUSTER_NAME} \
@@ -27,13 +27,13 @@ helm upgrade --install --namespace karpenter --create-namespace \
2727
As the OCI Helm chart is signed by [Cosign](https://github.com/sigstore/cosign) as part of the release process you can verify the chart before installing it by running the following command.
2828

2929
```shell
30-
cosign verify public.ecr.aws/karpenter/karpenter:0.37.0 \
30+
cosign verify public.ecr.aws/karpenter/karpenter:1.1.1 \
3131
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
3232
--certificate-identity-regexp='https://github\.com/aws/karpenter-provider-aws/\.github/workflows/release\.yaml@.+' \
3333
--certificate-github-workflow-repository=aws/karpenter-provider-aws \
3434
--certificate-github-workflow-name=Release \
35-
--certificate-github-workflow-ref=refs/tags/v0.37.0 \
36-
--annotations version=0.37.0
35+
--certificate-github-workflow-ref=refs/tags/v1.1.1 \
36+
--annotations version=1.1.1
3737
```
3838

3939
## Values
@@ -44,13 +44,14 @@ cosign verify public.ecr.aws/karpenter/karpenter:0.37.0 \
4444
| additionalClusterRoleRules | list | `[]` | Specifies additional rules for the core ClusterRole. |
4545
| additionalLabels | object | `{}` | Additional labels to add into metadata. |
4646
| affinity | object | `{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"karpenter.sh/nodepool","operator":"DoesNotExist"}]}]}},"podAntiAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":[{"topologyKey":"kubernetes.io/hostname"}]}}` | Affinity rules for scheduling the pod. If an explicit label selector is not provided for pod affinity or pod anti-affinity one will be created from the pod selector labels. |
47+
| controller.containerName | string | `"controller"` | Distinguishing container name (containerName: karpenter-controller). |
4748
| controller.env | list | `[]` | Additional environment variables for the controller pod. |
4849
| controller.envFrom | list | `[]` | |
4950
| controller.extraVolumeMounts | list | `[]` | Additional volumeMounts for the controller pod. |
5051
| controller.healthProbe.port | int | `8081` | The container port to use for http health probe. |
51-
| controller.image.digest | string | `"sha256:157f478f5db1fe999f5e2d27badcc742bf51cc470508b3cebe78224d0947674f"` | SHA256 digest of the controller image. |
52+
| controller.image.digest | string | `"sha256:fe383abf1dbc79f164d1cbcfd8edaaf7ce97a43fbd6cb70176011ff99ce57523"` | SHA256 digest of the controller image. |
5253
| controller.image.repository | string | `"public.ecr.aws/karpenter/controller"` | Repository path to the controller image. |
53-
| controller.image.tag | string | `"0.37.0"` | Tag of the controller image. |
54+
| controller.image.tag | string | `"1.1.1"` | Tag of the controller image. |
5455
| controller.metrics.port | int | `8080` | The container port to use for metrics. |
5556
| controller.resources | object | `{}` | Resources for the controller pod. |
5657
| controller.sidecarContainer | list | `[]` | Additional sidecarContainer config |
@@ -72,37 +73,35 @@ cosign verify public.ecr.aws/karpenter/karpenter:0.37.0 \
7273
| podDisruptionBudget.name | string | `"karpenter"` | |
7374
| podLabels | object | `{}` | Additional labels for the pod. |
7475
| podSecurityContext | object | `{"fsGroup":65532}` | SecurityContext for the pod. |
75-
| postInstallHook.image.digest | string | `"sha256:13a2ad1bd37ce42ee2a6f1ab0d30595f42eb7fe4a90d6ec848550524104a1ed6"` | SHA256 digest of the post-install hook image. |
76-
| postInstallHook.image.repository | string | `"public.ecr.aws/bitnami/kubectl"` | Repository path to the post-install hook. This minimally needs to have `kubectl` installed |
77-
| postInstallHook.image.tag | string | `"1.30"` | Tag of the post-install hook image. |
7876
| priorityClassName | string | `"system-cluster-critical"` | PriorityClass name for the pod. |
7977
| replicas | int | `2` | Number of replicas. |
8078
| revisionHistoryLimit | int | `10` | The number of old ReplicaSets to retain to allow rollback. |
79+
| schedulerName | string | `"default-scheduler"` | Specify which Kubernetes scheduler should dispatch the pod. |
80+
| service.annotations | object | `{}` | Additional annotations for the Service. |
8181
| serviceAccount.annotations | object | `{}` | Additional annotations for the ServiceAccount. |
8282
| serviceAccount.create | bool | `true` | Specifies if a ServiceAccount should be created. |
8383
| serviceAccount.name | string | `""` | The name of the ServiceAccount to use. If not set and create is true, a name is generated using the fullname template. |
8484
| serviceMonitor.additionalLabels | object | `{}` | Additional labels for the ServiceMonitor. |
8585
| serviceMonitor.enabled | bool | `false` | Specifies whether a ServiceMonitor should be created. |
8686
| serviceMonitor.endpointConfig | object | `{}` | Configuration on `http-metrics` endpoint for the ServiceMonitor. Not to be used to add additional endpoints. See the Prometheus operator documentation for configurable fields https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint |
87-
| settings | object | `{"batchIdleDuration":"1s","batchMaxDuration":"10s","clusterCABundle":"","clusterEndpoint":"","clusterName":"","featureGates":{"spotToSpotConsolidation":false},"interruptionQueue":"","isolatedVPC":false,"reservedENIs":"0","vmMemoryOverheadPercent":0.075}` | Global Settings to configure Karpenter |
87+
| settings | object | `{"batchIdleDuration":"1s","batchMaxDuration":"10s","clusterCABundle":"","clusterEndpoint":"","clusterName":"","eksControlPlane":false,"featureGates":{"nodeRepair":false,"spotToSpotConsolidation":false},"interruptionQueue":"","isolatedVPC":false,"reservedENIs":"0","vmMemoryOverheadPercent":0.075}` | Global Settings to configure Karpenter |
8888
| settings.batchIdleDuration | string | `"1s"` | The maximum amount of time with no new ending pods that if exceeded ends the current batching window. If pods arrive faster than this time, the batching window will be extended up to the maxDuration. If they arrive slower, the pods will be batched separately. |
8989
| settings.batchMaxDuration | string | `"10s"` | The maximum length of a batch window. The longer this is, the more pods we can consider for provisioning at one time which usually results in fewer but larger nodes. |
9090
| settings.clusterCABundle | string | `""` | Cluster CA bundle for TLS configuration of provisioned nodes. If not set, this is taken from the controller's TLS configuration for the API server. |
9191
| settings.clusterEndpoint | string | `""` | Cluster endpoint. If not set, will be discovered during startup (EKS only) |
9292
| settings.clusterName | string | `""` | Cluster name. |
93-
| settings.featureGates | object | `{"spotToSpotConsolidation":false}` | Feature Gate configuration values. Feature Gates will follow the same graduation process and requirements as feature gates in Kubernetes. More information here https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/#feature-gates-for-alpha-or-beta-features |
93+
| settings.eksControlPlane | bool | `false` | Marking this true means that your cluster is running with an EKS control plane and Karpenter should attempt to discover cluster details from the DescribeCluster API |
94+
| settings.featureGates | object | `{"nodeRepair":false,"spotToSpotConsolidation":false}` | Feature Gate configuration values. Feature Gates will follow the same graduation process and requirements as feature gates in Kubernetes. More information here https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/#feature-gates-for-alpha-or-beta-features |
95+
| settings.featureGates.nodeRepair | bool | `false` | nodeRepair is ALPHA and is disabled by default. Setting this to true will enable node repair. |
9496
| settings.featureGates.spotToSpotConsolidation | bool | `false` | spotToSpotConsolidation is ALPHA and is disabled by default. Setting this to true will enable spot replacement consolidation for both single and multi-node consolidation. |
9597
| settings.interruptionQueue | string | `""` | Interruption queue is the name of the SQS queue used for processing interruption events from EC2 Interruption handling is disabled if not specified. Enabling interruption handling may require additional permissions on the controller service account. Additional permissions are outlined in the docs. |
9698
| settings.isolatedVPC | bool | `false` | If true then assume we can't reach AWS services which don't have a VPC endpoint This also has the effect of disabling look-ups to the AWS pricing endpoint |
9799
| settings.reservedENIs | string | `"0"` | Reserved ENIs are not included in the calculations for max-pods or kube-reserved This is most often used in the VPC CNI custom networking setup https://docs.aws.amazon.com/eks/latest/userguide/cni-custom-network.html |
98-
| settings.vmMemoryOverheadPercent | float | `0.075` | The VM memory overhead as a percent that will be subtracted from the total memory for all instance types |
100+
| settings.vmMemoryOverheadPercent | float | `0.075` | The VM memory overhead as a percent that will be subtracted from the total memory for all instance types. The value of `0.075` equals to 7.5%. |
99101
| strategy | object | `{"rollingUpdate":{"maxUnavailable":1}}` | Strategy for updating the pod. |
100102
| terminationGracePeriodSeconds | string | `nil` | Override the default termination grace period for the pod. |
101103
| tolerations | list | `[{"key":"CriticalAddonsOnly","operator":"Exists"}]` | Tolerations to allow the pod to be scheduled to nodes with taints. |
102104
| topologySpreadConstraints | list | `[{"maxSkew":1,"topologyKey":"topology.kubernetes.io/zone","whenUnsatisfiable":"DoNotSchedule"}]` | Topology spread constraints to increase the controller resilience by distributing pods across the cluster zones. If an explicit label selector is not provided one will be created from the pod selector labels. |
103-
| webhook.enabled | bool | `true` | Whether to enable the webhooks and webhook permissions. |
104-
| webhook.metrics.port | int | `8001` | The container port to use for webhook metrics. |
105-
| webhook.port | int | `8443` | The container port to use for the webhook. |
106105

107106
----------------------------------------------
108107

0 commit comments

Comments
 (0)