|
| 1 | +{{/* Default Helm values for the app */}} |
| 2 | +{{/* See schema for the appropriate app version here https://github.com/giantswarm/karpenter-app/blob/main/helm/karpenter/values.schema.json */}} |
| 3 | +{{- define "defaultkarpenterHelmValues" }} |
| 4 | +additionalLabels: |
| 5 | + application.giantswarm.io/team: {{ index .Chart.Annotations "application.giantswarm.io/team" | default "phoenix" | quote }} |
| 6 | + giantswarm.io/managed-by: {{ .Release.Name | quote }} |
| 7 | + giantswarm.io/service-type: managed |
| 8 | +settings: |
| 9 | + clusterEndpoint: {{ printf "%s.%s.%s" "http://api" (include "resource.default.name" $) (required "global.connectivity.baseDomain is required" .Values.global.connectivity.baseDomain) }} |
| 10 | + clusterName: {{ include "resource.default.name" $ }} |
| 11 | + interruptionQueue: {{ include "resource.default.name" $ }}-karpenter |
| 12 | +controller: |
| 13 | + env: |
| 14 | + - name: AWS_REGION |
| 15 | + value: {{ include "aws-region" $ }} |
| 16 | + - name: AWS_ROLE_ARN |
| 17 | + value: arn:{{ include "aws-partition" $ }}:iam::{{ include "aws-account-id" $ }}:role/{{ include "resource.default.name" $ }}-karpenter |
| 18 | + - name: AWS_WEB_IDENTITY_TOKEN_FILE |
| 19 | + value: /var/run/secrets/eks.amazonaws.com/serviceaccount/token |
| 20 | + extraVolumeMounts: |
| 21 | + - name: aws-iam-token |
| 22 | + mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount/ |
| 23 | + readOnly: true |
| 24 | + image: |
| 25 | + repository: {{ include "awsContainerImageRegistry" . }}/giantswarm/karpenter-controller |
| 26 | +dnsPolicy: Default |
| 27 | +extraVolumes: |
| 28 | + - name: aws-iam-token |
| 29 | + projected: |
| 30 | + sources: |
| 31 | + - serviceAccountToken: |
| 32 | + audience: {{ include "awsApiServerApiAudiences" $ | trim }} |
| 33 | + expirationSeconds: 86400 |
| 34 | + path: token |
| 35 | +nodeSelector: |
| 36 | + node-role.kubernetes.io/control-plane: "" |
| 37 | +serviceAccount: |
| 38 | + annotations: |
| 39 | + eks.amazonaws.com/role-arn: arn:{{ include "aws-partition" $ }}:iam::{{ include "aws-account-id" $ }}:role/{{ include "resource.default.name" $ }}-karpenter |
| 40 | +tolerations: |
| 41 | + - key: "node-role.kubernetes.io/control-plane" |
| 42 | + operator: "Exists" |
| 43 | + effect: "NoSchedule" |
| 44 | +{{- end }} |
| 45 | +{{- if include "hasKarpenterNodePool" . }} |
| 46 | +apiVersion: helm.toolkit.fluxcd.io/v2 |
| 47 | +kind: HelmRelease |
| 48 | +metadata: |
| 49 | + name: {{ include "resource.default.name" $ }}-karpenter |
| 50 | + namespace: {{ $.Release.Namespace }} |
| 51 | + annotations: |
| 52 | + cluster.giantswarm.io/description: "{{ .Values.global.metadata.description }}" |
| 53 | + labels: |
| 54 | + cluster-apps-operator.giantswarm.io/watching: "" |
| 55 | + {{- include "labels.common" . | nindent 4 }} |
| 56 | +spec: |
| 57 | + suspend: false |
| 58 | + releaseName: karpenter |
| 59 | + targetNamespace: karpenter |
| 60 | + storageNamespace: karpenter |
| 61 | + chart: |
| 62 | + spec: |
| 63 | + chart: karpenter |
| 64 | + {{- $_ := set $ "appName" "karpenter" }} |
| 65 | + version: {{ include "cluster.app.version" $ }} |
| 66 | + sourceRef: |
| 67 | + kind: HelmRepository |
| 68 | + name: {{ include "resource.default.name" $ }}-{{ include "cluster.app.catalog" $ }} |
| 69 | + kubeConfig: |
| 70 | + secretRef: |
| 71 | + name: {{ include "resource.default.name" $ }}-kubeconfig |
| 72 | + interval: 5m |
| 73 | + timeout: 15m # We need a bigger timeout because it could take a while for IRSA (via CloudFront) to become available |
| 74 | + install: |
| 75 | + createNamespace: true |
| 76 | + remediation: |
| 77 | + retries: -1 |
| 78 | + upgrade: |
| 79 | + remediation: |
| 80 | + retries: -1 |
| 81 | + {{- $karpenterHelmValues := (include "defaultkarpenterHelmValues" .) | fromYaml -}} |
| 82 | + {{- $customkarpenterHelmValues := $.Values.global.apps.karpenter.values -}} |
| 83 | + {{- if $customkarpenterHelmValues }} |
| 84 | + {{- $karpenterHelmValues = merge (deepCopy $customkarpenterHelmValues) $karpenterHelmValues -}} |
| 85 | + {{- end }} |
| 86 | + {{- if $karpenterHelmValues }} |
| 87 | + values: {{- $karpenterHelmValues | toYaml | nindent 4 }} |
| 88 | + {{- end }} |
| 89 | + {{- if $.Values.global.apps.karpenter.extraConfigs }} |
| 90 | + {{- range $config := $.Values.global.apps.karpenter.extraConfigs }} |
| 91 | + - kind: {{ $config.kind }} |
| 92 | + name: {{ $config.name }} |
| 93 | + valuesKey: values |
| 94 | + optional: {{ $config.optional | default false }} |
| 95 | + {{- end }} |
| 96 | + {{- end }} |
| 97 | +{{- end }} |
0 commit comments