Skip to content

Commit ec29028

Browse files
committed
docs: talos example
Scaling up the cluster in a Talos Kubernetes distribution. Signed-off-by: Serge Logvinov <[email protected]>
1 parent 5db4e02 commit ec29028

17 files changed

+624
-24
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
.devcontainer/
77
.vscode/
88
#
9+
_cfgs/
910
bin/
1011
charts/
1112
docs/

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ go.work.sum
3232
/kubeconfig
3333
/kubeconfig*
3434
/cloud.yaml
35+
/_cfgs/
3536

3637
# IDEs and editors
3738
/.idea

charts/karpenter-provider-proxmox/Chart.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ maintainers:
1818
url: https://github.com/sergelogvinov
1919
#
2020
# Versions are expected to follow Semantic Versioning (https://semver.org/)
21-
version: 0.1.1
21+
version: 0.2.0
2222
# This is the version number of the application being deployed. This version number should be
2323
# incremented each time you make changes to the application. Versions are not expected to
2424
# follow Semantic Versioning. They should reflect the version the application is using.
2525
# It is recommended to use it with quotes.
2626
appVersion: v0.3.0
27+
#
28+
annotations:
29+
artifacthub.io/alternativeName: karpenter-provider-proxmox

charts/karpenter-provider-proxmox/README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# karpenter-provider-proxmox
22

3-
![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.3.0](https://img.shields.io/badge/AppVersion-v0.3.0-informational?style=flat-square)
3+
![Version: 0.2.0](https://img.shields.io/badge/Version-0.2.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.3.0](https://img.shields.io/badge/AppVersion-v0.3.0-informational?style=flat-square)
44

55
Karpenter for Proxmox VE.
66

@@ -101,3 +101,10 @@ helm upgrade -i --namespace=kube-system -f karpenter-provider-proxmox.yaml \
101101
| extraArgs | list | `[]` | Any extra arguments for Karpenter |
102102
| extraVolumes | list | `[]` | Additional volumes for Pods |
103103
| extraVolumeMounts | list | `[]` | Additional volume mounts for Pods |
104+
| customResources.nodeClass.default.enabled | bool | `false` | Create Proxmox Node Class 'default' |
105+
| customResources.nodeClass.default.spec | object | `{"bootDevice":{"size":"30Gi"},"instanceTemplateRef":{"kind":"ProxmoxUnmanagedTemplate","name":"default"},"securityGroups":[{"interface":"net0","name":"kubernetes"}],"tags":["karpenter"]}` | Raw spec of ProxmoxNodeClass refs: https://github.com/sergelogvinov/karpenter-provider-proxmox/blob/main/docs/nodeclass.md |
106+
| customResources.nodePools.default.enabled | bool | `false` | Create Karpenter Node Pool 'default' |
107+
| customResources.nodePools.default.spec | object | `{"limits":{"cpu":"64","memory":"512Gi"},"template":{"spec":{"nodeClassRef":{"group":"karpenter.proxmox.sinextra.dev","kind":"ProxmoxNodeClass","name":"default"}}}}` | Raw spec of Node Pool refs: https://karpenter.sh/docs/concepts/nodepools |
108+
| customResources.nodeTemplate.default.enabled | bool | `false` | Create Proxmox Virtual Machine Template 'default' |
109+
| customResources.nodeTemplate.default.kind | string | `"ProxmoxUnmanagedTemplate"` | Kind of template can be: ProxmoxUnmanagedTemplate or ProxmoxTemplate |
110+
| customResources.nodeTemplate.default.spec | object | `{"templateName":"talos"}` | Raw spec of Template refs: https://github.com/sergelogvinov/karpenter-provider-proxmox/blob/main/docs/nodetemplateclass.md |

charts/karpenter-provider-proxmox/crds/karpenter.proxmox.sinextra.dev_proxmoxnodeclasses.yaml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,9 @@ spec:
213213
description: MetadataOptions for the generated launch template of
214214
provisioned nodes.
215215
properties:
216-
secretRef:
216+
templatesRef:
217217
description: |-
218-
SecretRef is a reference to the secret that contains cloud-init metadata.
218+
templatesRef is a reference to the secret that contains cloud-init metadata templates.
219219
Secret must contain the following keys, each key is optional:
220220
- `user-data` - Userdata for cloud-init
221221
- `meta-data` - Metadata for cloud-init
@@ -240,6 +240,20 @@ spec:
240240
- none
241241
- cdrom
242242
type: string
243+
valuesRef:
244+
description: valuesRef is a reference to the secret that contains
245+
cloud-init custom template values.
246+
properties:
247+
name:
248+
description: name is unique within a namespace to reference
249+
a secret resource.
250+
type: string
251+
namespace:
252+
description: namespace defines the space within which the
253+
secret name must be unique.
254+
type: string
255+
type: object
256+
x-kubernetes-map-type: atomic
243257
type: object
244258
placementStrategy:
245259
default:
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{{- range $name, $class := .Values.customResources.nodeClass }}
2+
{{- if $class.enabled }}
3+
---
4+
apiVersion: karpenter.proxmox.sinextra.dev/v1alpha1
5+
kind: ProxmoxNodeClass
6+
metadata:
7+
name: {{ $name }}
8+
labels:
9+
{{- include "karpenter-provider-proxmox.labels" $ | nindent 4 }}
10+
spec:
11+
{{- $class.spec | toYaml | nindent 2 }}
12+
{{- end }}
13+
{{- end }}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{{- range $name, $pool := .Values.customResources.nodePools }}
2+
{{- if $pool.enabled }}
3+
---
4+
apiVersion: karpenter.sh/v1
5+
kind: NodePool
6+
metadata:
7+
name: {{ $name }}
8+
labels:
9+
{{- include "karpenter-provider-proxmox.labels" $ | nindent 4 }}
10+
spec:
11+
{{- $pool.spec | toYaml | nindent 2 }}
12+
{{- end }}
13+
{{- end }}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{{- range $name, $template := .Values.customResources.nodeTemplate }}
2+
{{- if $template.enabled }}
3+
---
4+
apiVersion: karpenter.proxmox.sinextra.dev/v1alpha1
5+
kind: {{ $template.kind }}
6+
metadata:
7+
name: {{ $name }}
8+
labels:
9+
{{- include "karpenter-provider-proxmox.labels" $ | nindent 4 }}
10+
spec:
11+
{{- $template.spec | toYaml | nindent 2 }}
12+
{{- end }}
13+
{{- end }}

charts/karpenter-provider-proxmox/values.yaml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,3 +205,51 @@ extraVolumeMounts:
205205
# - mountPath: /etc/ssl/certs/ca-certificates.crt
206206
# name: ca
207207
# subPath: ca.crt
208+
209+
customResources:
210+
nodeClass:
211+
default:
212+
# -- Create Proxmox Node Class 'default'
213+
enabled: false
214+
# -- Raw spec of ProxmoxNodeClass
215+
# refs: https://github.com/sergelogvinov/karpenter-provider-proxmox/blob/main/docs/nodeclass.md
216+
spec:
217+
instanceTemplateRef:
218+
kind: ProxmoxUnmanagedTemplate
219+
name: default
220+
bootDevice:
221+
size: 30Gi
222+
securityGroups:
223+
- name: kubernetes
224+
interface: net0
225+
tags:
226+
- karpenter
227+
228+
nodePools:
229+
default:
230+
# -- Create Karpenter Node Pool 'default'
231+
enabled: false
232+
# -- Raw spec of Node Pool
233+
# refs: https://karpenter.sh/docs/concepts/nodepools
234+
spec:
235+
limits:
236+
cpu: "64"
237+
memory: 512Gi
238+
template:
239+
spec:
240+
nodeClassRef:
241+
group: karpenter.proxmox.sinextra.dev
242+
kind: ProxmoxNodeClass
243+
name: default
244+
245+
nodeTemplate:
246+
default:
247+
# -- Create Proxmox Virtual Machine Template 'default'
248+
enabled: false
249+
# -- Kind of template
250+
# can be: ProxmoxUnmanagedTemplate or ProxmoxTemplate
251+
kind: ProxmoxUnmanagedTemplate
252+
# -- Raw spec of Template
253+
# refs: https://github.com/sergelogvinov/karpenter-provider-proxmox/blob/main/docs/nodetemplateclass.md
254+
spec:
255+
templateName: talos

docs/deploy/karpenter-provider-proxmox-edge.yml

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,9 @@ spec:
215215
description: MetadataOptions for the generated launch template of
216216
provisioned nodes.
217217
properties:
218-
secretRef:
218+
templatesRef:
219219
description: |-
220-
SecretRef is a reference to the secret that contains cloud-init metadata.
220+
templatesRef is a reference to the secret that contains cloud-init metadata templates.
221221
Secret must contain the following keys, each key is optional:
222222
- `user-data` - Userdata for cloud-init
223223
- `meta-data` - Metadata for cloud-init
@@ -242,6 +242,20 @@ spec:
242242
- none
243243
- cdrom
244244
type: string
245+
valuesRef:
246+
description: valuesRef is a reference to the secret that contains
247+
cloud-init custom template values.
248+
properties:
249+
name:
250+
description: name is unique within a namespace to reference
251+
a secret resource.
252+
type: string
253+
namespace:
254+
description: namespace defines the space within which the
255+
secret name must be unique.
256+
type: string
257+
type: object
258+
x-kubernetes-map-type: atomic
245259
type: object
246260
placementStrategy:
247261
default:
@@ -1718,7 +1732,7 @@ kind: ServiceAccount
17181732
metadata:
17191733
name: karpenter-provider-proxmox
17201734
labels:
1721-
helm.sh/chart: karpenter-provider-proxmox-0.1.0
1735+
helm.sh/chart: karpenter-provider-proxmox-0.2.0
17221736
app.kubernetes.io/name: karpenter-provider-proxmox
17231737
app.kubernetes.io/instance: karpenter-provider-proxmox
17241738
app.kubernetes.io/version: "v0.3.0"
@@ -1731,7 +1745,7 @@ kind: ClusterRole
17311745
metadata:
17321746
name: karpenter-provider-proxmox-core
17331747
labels:
1734-
helm.sh/chart: karpenter-provider-proxmox-0.1.0
1748+
helm.sh/chart: karpenter-provider-proxmox-0.2.0
17351749
app.kubernetes.io/name: karpenter-provider-proxmox
17361750
app.kubernetes.io/instance: karpenter-provider-proxmox
17371751
app.kubernetes.io/version: "v0.3.0"
@@ -1782,7 +1796,7 @@ kind: ClusterRole
17821796
metadata:
17831797
name: karpenter-provider-proxmox
17841798
labels:
1785-
helm.sh/chart: karpenter-provider-proxmox-0.1.0
1799+
helm.sh/chart: karpenter-provider-proxmox-0.2.0
17861800
app.kubernetes.io/name: karpenter-provider-proxmox
17871801
app.kubernetes.io/instance: karpenter-provider-proxmox
17881802
app.kubernetes.io/version: "v0.3.0"
@@ -1792,9 +1806,15 @@ rules:
17921806
- apiGroups: ["karpenter.proxmox.sinextra.dev"]
17931807
resources: ["proxmoxnodeclasses"]
17941808
verbs: ["get", "list", "watch"]
1809+
- apiGroups: ["karpenter.proxmox.sinextra.dev"]
1810+
resources: ["proxmoxtemplates","proxmoxunmanagedtemplates"]
1811+
verbs: ["get", "list", "watch"]
17951812
# Write
17961813
- apiGroups: ["karpenter.proxmox.sinextra.dev"]
1797-
resources: ["proxmoxnodeclasses", "proxmoxnodeclasses/status"]
1814+
resources: ["proxmoxnodeclasses","proxmoxnodeclasses/status"]
1815+
verbs: ["patch", "update"]
1816+
- apiGroups: ["karpenter.proxmox.sinextra.dev"]
1817+
resources: ["proxmoxtemplates","proxmoxtemplates/status","proxmoxunmanagedtemplates","proxmoxunmanagedtemplates/status"]
17981818
verbs: ["patch", "update"]
17991819
---
18001820
# Source: karpenter-provider-proxmox/templates/clusterrole-core.yaml
@@ -1803,7 +1823,7 @@ kind: ClusterRoleBinding
18031823
metadata:
18041824
name: karpenter-provider-proxmox-core
18051825
labels:
1806-
helm.sh/chart: karpenter-provider-proxmox-0.1.0
1826+
helm.sh/chart: karpenter-provider-proxmox-0.2.0
18071827
app.kubernetes.io/name: karpenter-provider-proxmox
18081828
app.kubernetes.io/instance: karpenter-provider-proxmox
18091829
app.kubernetes.io/version: "v0.3.0"
@@ -1823,7 +1843,7 @@ kind: ClusterRoleBinding
18231843
metadata:
18241844
name: karpenter-provider-proxmox
18251845
labels:
1826-
helm.sh/chart: karpenter-provider-proxmox-0.1.0
1846+
helm.sh/chart: karpenter-provider-proxmox-0.2.0
18271847
app.kubernetes.io/name: karpenter-provider-proxmox
18281848
app.kubernetes.io/instance: karpenter-provider-proxmox
18291849
app.kubernetes.io/version: "v0.3.0"
@@ -1844,7 +1864,7 @@ metadata:
18441864
name: karpenter-provider-proxmox
18451865
namespace: kube-system
18461866
labels:
1847-
helm.sh/chart: karpenter-provider-proxmox-0.1.0
1867+
helm.sh/chart: karpenter-provider-proxmox-0.2.0
18481868
app.kubernetes.io/name: karpenter-provider-proxmox
18491869
app.kubernetes.io/instance: karpenter-provider-proxmox
18501870
app.kubernetes.io/version: "v0.3.0"
@@ -1867,6 +1887,25 @@ rules:
18671887
- update
18681888
resourceNames:
18691889
- proxmox-karpenter-leader-election
1890+
# Metadata templates options
1891+
- apiGroups:
1892+
- ""
1893+
resources:
1894+
- configmaps
1895+
verbs:
1896+
- get
1897+
- list
1898+
- watch
1899+
resourceNames:
1900+
- kube-root-ca.crt
1901+
- apiGroups:
1902+
- ""
1903+
resources:
1904+
- secrets
1905+
verbs:
1906+
- get
1907+
- list
1908+
- watch
18701909
---
18711910
# Source: karpenter-provider-proxmox/templates/rolebinding.yaml
18721911
kind: RoleBinding
@@ -1890,7 +1929,7 @@ metadata:
18901929
name: karpenter-provider-proxmox
18911930
namespace: kube-system
18921931
labels:
1893-
helm.sh/chart: karpenter-provider-proxmox-0.1.0
1932+
helm.sh/chart: karpenter-provider-proxmox-0.2.0
18941933
app.kubernetes.io/name: karpenter-provider-proxmox
18951934
app.kubernetes.io/instance: karpenter-provider-proxmox
18961935
app.kubernetes.io/version: "v0.3.0"

0 commit comments

Comments
 (0)