Skip to content

Commit 47fe03f

Browse files
Jont828nellykams0
authored
Add Helm chart for AKS managed cluster (#4)
Note: this is originated from the following repo: https://github.com/nellyk/azure-managed-cluster-capz-helm Co-authored-by: Nelly Kiboi <3062772+nellyk@users.noreply.github.com> Co-authored-by: Alessandro Vozza <alessandro.vozza@microsoft.com>
1 parent 7e99e61 commit 47fe03f

File tree

11 files changed

+599
-0
lines changed

11 files changed

+599
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.code-workspace
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: v2
2+
name: azure-managed-cluster
3+
description: A Helm chart to deploy an AKS cluster via the cluster-api-provider-azure ManagedCluster
4+
type: application
5+
maintainers:
6+
- email: jt572@cornell.edu
7+
name: Jont828
8+
version: 0.2.0
9+
appVersion: 1.16.0
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
{{/*
2+
Expand the name of the chart.
3+
*/}}
4+
{{- define "azure-managed-cluster.name" -}}
5+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
6+
{{- end }}
7+
8+
{{/*
9+
Create a default fully qualified app name.
10+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
11+
If release name contains chart name it will be used as a full name.
12+
*/}}
13+
{{- define "azure-managed-cluster.fullname" -}}
14+
{{- if .Values.fullnameOverride }}
15+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
16+
{{- else }}
17+
{{- $name := default .Chart.Name .Values.nameOverride }}
18+
{{- if contains $name .Release.Name }}
19+
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
20+
{{- else }}
21+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
22+
{{- end }}
23+
{{- end }}
24+
{{- end }}
25+
26+
{{/*
27+
Create chart name and version as used by the chart label.
28+
*/}}
29+
{{- define "azure-managed-cluster.chart" -}}
30+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
31+
{{- end }}
32+
33+
{{/*
34+
Common labels
35+
*/}}
36+
{{- define "azure-managed-cluster.labels" -}}
37+
helm.sh/chart: {{ include "azure-managed-cluster.chart" . }}
38+
{{ include "azure-managed-cluster.selectorLabels" . }}
39+
{{- if .Chart.AppVersion }}
40+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
41+
{{- end }}
42+
app.kubernetes.io/managed-by: {{ .Release.Service }}
43+
{{- end }}
44+
45+
{{/*
46+
Selector labels
47+
*/}}
48+
{{- define "azure-managed-cluster.selectorLabels" -}}
49+
app.kubernetes.io/name: {{ include "azure-managed-cluster.name" . }}
50+
app.kubernetes.io/instance: {{ .Release.Name }}
51+
{{- end }}
52+
53+
{{/*
54+
Create the name of the service account to use
55+
*/}}
56+
{{- define "azure-managed-cluster.serviceAccountName" -}}
57+
{{- if .Values.serviceAccount.create }}
58+
{{- default (include "azure-managed-cluster.fullname" .) .Values.serviceAccount.name }}
59+
{{- else }}
60+
{{- default "default" .Values.serviceAccount.name }}
61+
{{- end }}
62+
{{- end }}
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
{{- if not .Values.agentpools }}
2+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
3+
kind: AzureManagedMachinePool
4+
metadata:
5+
name: {{ .Values.cluster.name | default .Release.Name }}pool0
6+
spec:
7+
name: {{ .Values.cluster.name | default .Release.Name }}pool0
8+
scaling:
9+
minSize: {{ .Values.defaults.agentPool.scaling.minSize }}
10+
maxSize: {{ .Values.defaults.agentPool.scaling.maxSize }}
11+
osDiskSizeGB: {{ .Values.defaults.agentPool.osDiskSizeGB }}
12+
sku: {{ .Values.defaults.agentPool.sku }}
13+
availabilityZones:
14+
{{- range .Values.defaults.agentPool.availabilityZones }}
15+
- {{ . | quote }}
16+
{{- end }}
17+
nodeLabels:
18+
{{- range $nodeLabels := .Values.defaults.agentPool.nodeLabels }}
19+
{{ $nodeLabels.key }}: {{ $nodeLabels.value }}
20+
{{- end }}
21+
mode: System
22+
maxPods: {{ .Values.defaults.agentPool.maxPods }}
23+
osDiskType: {{ .Values.defaults.agentPool.osDiskType }}
24+
enableUltraSSD: {{ .Values.defaults.agentPool.enableUltraSSD }}
25+
osType: {{ .Values.defaults.agentPool.osType }}
26+
enableNodePublicIP: {{ .Values.defaults.agentPool.enableNodePublicIP }}
27+
nodePublicIPPrefixID: {{ .Values.defaults.agentPool.nodePublicIPPrefixID }}
28+
scaleSetPriority: {{ .Values.defaults.agentPool.scaleSetPriority }}
29+
scaleDownMode: {{ .Values.defaults.agentPool.scaleDownMode }}
30+
spotMaxPrice: {{ .Values.defaults.agentPool.spotMaxPrice }}
31+
kubeletConfig: {{ .Values.defaults.agentPool.kubeletConfig }}
32+
kubeletDiskType: {{ .Values.defaults.agentPool.kubeletDiskType }}
33+
linuxOSConfig: {{ .Values.defaults.agentPool.linuxOSConfig }}
34+
subnetName: {{ .Values.defaults.agentPool.subnetName }}
35+
enableFIPS: {{ .Values.defaults.agentPool.enableFIPS }}
36+
enableEncryptionAtHost: {{ .Values.defaults.agentPool.enableEncryptionAtHost }}
37+
---
38+
apiVersion: cluster.x-k8s.io/v1beta1
39+
kind: MachinePool
40+
metadata:
41+
name: {{ .Values.cluster.name | default .Release.Name }}pool0
42+
spec:
43+
clusterName: {{ .Values.cluster.name | default .Release.Name }}
44+
replicas: {{ .Values.defaults.agentPool.nodecount }}
45+
template:
46+
metadata: {}
47+
spec:
48+
bootstrap:
49+
dataSecretName: ""
50+
clusterName: {{ .Values.cluster.name | default .Release.Name }}
51+
infrastructureRef:
52+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
53+
kind: AzureManagedMachinePool
54+
name: {{ .Values.cluster.name | default .Release.Name }}pool0
55+
namespace: {{ $.Release.Namespace }}
56+
version: {{ .Values.controlplane.kubernetes_version }}
57+
---
58+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
59+
kind: AzureManagedMachinePool
60+
metadata:
61+
name: {{ .Values.cluster.name | default .Release.Name }}pool1
62+
spec:
63+
name: {{ .Values.cluster.name | default .Release.Name }}pool1
64+
scaling:
65+
minSize: {{ .Values.defaults.agentPool.scaling.minSize }}
66+
maxSize: {{ .Values.defaults.agentPool.scaling.maxSize }}
67+
osDiskSizeGB: {{ .Values.defaults.agentPool.osDiskSizeGB }}
68+
sku: {{ .Values.defaults.agentPool.sku }}
69+
availabilityZones:
70+
{{- range .Values.defaults.agentPool.availabilityZones }}
71+
- {{ . | quote }}
72+
{{- end }}
73+
nodeLabels:
74+
{{- range $nodeLabels := .Values.defaults.agentPool.nodeLabels }}
75+
{{ $nodeLabels.key }}: {{ $nodeLabels.value }}
76+
{{- end }}
77+
mode: User
78+
maxPods: {{ .Values.defaults.agentPool.maxPods }}
79+
osDiskType: {{ .Values.defaults.agentPool.osDiskType }}
80+
enableUltraSSD: {{ .Values.defaults.agentPool.enableUltraSSD }}
81+
osType: {{ .Values.defaults.agentPool.osType }}
82+
enableNodePublicIP: {{ .Values.defaults.agentPool.enableNodePublicIP }}
83+
nodePublicIPPrefixID: {{ .Values.defaults.agentPool.nodePublicIPPrefixID }}
84+
scaleSetPriority: {{ .Values.defaults.agentPool.scaleSetPriority }}
85+
scaleDownMode: {{ .Values.defaults.agentPool.scaleDownMode }}
86+
spotMaxPrice: {{ .Values.defaults.agentPool.spotMaxPrice }}
87+
kubeletConfig: {{ .Values.defaults.agentPool.kubeletConfig }}
88+
kubeletDiskType: {{ .Values.defaults.agentPool.kubeletDiskType }}
89+
linuxOSConfig: {{ .Values.defaults.agentPool.linuxOSConfig }}
90+
subnetName: {{ .Values.defaults.agentPool.subnetName }}
91+
enableFIPS: {{ .Values.defaults.agentPool.enableFIPS }}
92+
enableEncryptionAtHost: {{ .Values.defaults.agentPool.enableEncryptionAtHost }}
93+
---
94+
apiVersion: cluster.x-k8s.io/v1beta1
95+
kind: MachinePool
96+
metadata:
97+
name: {{ .Values.cluster.name | default .Release.Name }}pool1
98+
spec:
99+
clusterName: {{ .Values.cluster.name | default .Release.Name }}
100+
replicas: {{ .Values.defaults.agentPool.nodecount }}
101+
template:
102+
metadata: {}
103+
spec:
104+
bootstrap:
105+
dataSecretName: ""
106+
clusterName: {{ .Values.cluster.name | default .Release.Name }}
107+
infrastructureRef:
108+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
109+
kind: AzureManagedMachinePool
110+
name: {{ .Values.cluster.name | default .Release.Name }}pool1
111+
namespace: {{ $.Release.Namespace }}
112+
version: {{ .Values.controlplane.kubernetes_version }}
113+
---
114+
{{- else }}
115+
{{- range $index, $agentPool := .Values.agentPools }}
116+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
117+
kind: AzureManagedMachinePool
118+
metadata:
119+
name: {{ $agentPool.name }}
120+
spec:
121+
name: {{ $agentPool.name }}
122+
scaling:
123+
{{- if $agentPool.scaling }}
124+
minSize: {{ $agentPool.scaling.minSize | default .Values.defaults.agentPool.scaling.minSize }}
125+
maxSize: {{ $agentPool.scaling.maxSize | default .Values.defaults.agentPool.scaling.maxSize }}
126+
{{- else }}
127+
minSize: {{ .Values.defaults.agentPool.scaling.minSize }}
128+
maxSize: {{ .Values.defaults.agentPool.scaling.maxSize }}
129+
{{- end }}
130+
{{- if $agentPool.additionalTags }}
131+
additionalTags:
132+
{{- range $additionalTags := $agentPool.additionalTags }}
133+
{{ $additionalTags.key }}: {{ $additionalTags.value }}
134+
{{- end }}
135+
{{- end }}
136+
osDiskSizeGB: {{ $agentPool.osDiskSizeGB | default .Values.defaults.agentPool.osDiskSizeGB }}
137+
sku: {{ $agentPool.sku | default .Values.defaults.agentPool.sku }}
138+
availabilityZones:
139+
{{- if $agentPool.availabilityZones }}
140+
{{- range $agentPool.availabilityZones }}
141+
- {{ . | quote }}
142+
{{- end }}
143+
{{- else }}
144+
{{- range .Values.defaults.agentPool.availabilityZones }}
145+
- {{ . | quote }}
146+
{{- end }}
147+
{{- end }}
148+
{{- if $agentPool.nodeLabels }}
149+
nodeLabels:
150+
{{- range $nodeLabels := $agentPool.nodeLabels }}
151+
{{ $nodeLabels.key }}: {{ $nodeLabels.value }}
152+
{{- end }}
153+
{{- end }}
154+
{{- if .Values.defaults.agentPool.nodeLabels }}
155+
taints:
156+
{{- range $taints := $agentPool.taints }}
157+
- key: {{ $taints.key }}
158+
value: {{ $taints.value }}
159+
effect: {{ $taints.effect }}
160+
{{- end }}
161+
{{- end }}
162+
mode: {{ $agentPool.mode | default .Values.defaults.agentPool.mode }}
163+
maxPods: {{ $agentPool.maxPods | default .Values.defaults.agentPool.maxPods }}
164+
osDiskType: {{ $agentPool.osDiskType | default .Values.defaults.agentPool.osDiskType }}
165+
enableUltraSSD: {{ $agentPool.enableUltraSSD | default .Values.defaults.agentPool.enableUltraSSD }}
166+
osType: {{ $agentPool.osType | default .Values.defaults.agentPool.osType }}
167+
enableNodePublicIP: {{ $agentPool.enableNodePublicIP | default .Values.defaults.agentPool.enableNodePublicIP }}
168+
nodePublicIPPrefixID: {{ $agentPool.nodePublicIPPrefixID | default .Values.defaults.agentPool.nodePublicIPPrefixID }}
169+
scaleSetPriority: {{ $agentPool.scaleSetPriority | default .Values.defaults.agentPool.scaleSetPriority }}
170+
scaleDownMode: {{ $agentPool.scaleDownMode | default .Values.defaults.agentPool.scaleDownMode }}
171+
spotMaxPrice: {{ $agentPool.spotMaxPrice | default .Values.defaults.agentPool.spotMaxPrice }}
172+
kubeletConfig: {{ $agentPool.kubeletConfig | default .Values.defaults.agentPool.kubeletConfig }}
173+
kubeletDiskType: {{ $agentPool.kubeletDiskType | default .Values.defaults.agentPool.kubeletDiskType }}
174+
linuxOSConfig: {{ $agentPool.linuxOSConfig | default .Values.defaults.agentPool.linuxOSConfig }}
175+
subnetName: {{ $agentPool.subnetName | default .Values.defaults.agentPool.subnetName }}
176+
enableFIPS: {{ $agentPool.enableFIPS | default .Values.defaults.agentPool.enableFIPS }}
177+
enableEncryptionAtHost: {{ $agentPool.enableEncryptionAtHost | default .Values.defaults.agentPool.enableEncryptionAtHost }}
178+
---
179+
apiVersion: cluster.x-k8s.io/v1beta1
180+
kind: MachinePool
181+
metadata:
182+
name: {{ $agentPool.name }}
183+
spec:
184+
clusterName: {{ $.Values.cluster.name }}
185+
replicas: {{ $agentPool.nodecount }}
186+
template:
187+
metadata: {}
188+
spec:
189+
bootstrap:
190+
dataSecretName: ""
191+
clusterName: {{ $.Values.cluster.name }}
192+
infrastructureRef:
193+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
194+
kind: AzureManagedMachinePool
195+
name: {{ $agentPool.name }}
196+
namespace: {{ $.Release.Namespace }}
197+
version: {{ $.Values.controlplane.kubernetes_version }}
198+
---
199+
{{- end }}
200+
{{- end }}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{{- if not (lookup "infrastructure.cluster.x-k8s.io/v1beta1" "AzureClusterIdentity" .Values.identity.clusterIdentityNamespace .Values.identity.clusterIdentityName) }}
2+
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
3+
kind: AzureClusterIdentity
4+
metadata:
5+
labels:
6+
clusterctl.cluster.x-k8s.io/move-hierarchy: "true"
7+
annotations:
8+
helm.sh/resource-policy: keep
9+
name: {{ $.Values.identity.clusterIdentityName }}
10+
spec:
11+
allowedNamespaces:
12+
list:
13+
- {{ $.Values.identity.clusterIdentitySecretNamespace }}
14+
clientSecret:
15+
name: {{ $.Values.identity.clusterIdentitySecretName }}
16+
namespace: {{ $.Values.identity.clusterIdentitySecretNamespace }}
17+
clientID: {{ $.Values.identity.clientID }}
18+
tenantID: {{ $.Values.identity.tenantID }}
19+
type: {{ $.Values.identity.type }}
20+
resourceID: {{ $.Values.identity.resourceID }}
21+
{{- end }}

0 commit comments

Comments
 (0)