Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
db4d832
Draft initial implementation
simu Jun 18, 2026
8e4ccc8
Refactor component to generate unique names for manifests with immuta…
simu Jun 23, 2026
902bec5
Adjust Talos machineconfig to deploy Cilium via `ClusterResourceSet` …
simu Jun 23, 2026
c38b80e
Update TalosControlPlane api version to v1beta1
simu Jun 23, 2026
06ee198
Add parameter to set API URL as extra Talos API server cert SAN
simu Jun 26, 2026
16f8b57
Add talosconfig patch todo
simu Jun 26, 2026
e145cb8
CAPI provider canonical Kubernetes version format is prefixed with `v`
simu Jul 2, 2026
414ef43
Set Talos `MachineConfig` `install.wipe=true` by default
simu Jul 2, 2026
6488ddc
Give users more control over TalosControlPlane config
simu Jul 3, 2026
31bc412
Add parameter `strategicPatches` to apply custom patches to all nodes
simu Jul 3, 2026
9a955f4
Set `machine.install.image` on all nodes
simu Jul 3, 2026
b7d76ec
Configure ArgoCD to ignore changes to `spec.replicas` of MachineDeplo…
simu Jul 3, 2026
0742b1a
Make MachineDeployment deletion order configurable
simu Jul 3, 2026
fb31f45
Update component to make parameter `talosVersion` less misleading
simu Jul 6, 2026
a964e3d
Add logic to render and configure a K8s API server `AuthenticationCon…
simu Aug 3, 2026
526248e
Enable server-side apply in ArgoCD app
simu Aug 12, 2026
152f37b
Enable kubelet server certificate rotation
simu Aug 13, 2026
5cb0b86
Use CAPI component libraries to render manifests
simu Sep 10, 2026
06258cd
Refactor control plane machineconfiguration patch rendering
simu Sep 11, 2026
1d25541
Remove bootstrap ClusterResourceSet from component
simu Sep 14, 2026
fc5146b
Update component defaults to K8s 1.36.4
simu Sep 16, 2026
282ff6f
Update documentation
simu Sep 16, 2026
4de862e
Assert that CAPI components are present
simu Sep 16, 2026
0de5260
Ensure stable order for Talos `MachineConfiguration` strategic patches
simu Sep 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 60 additions & 1 deletion class/defaults.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,64 @@
parameters:
talos_capi_cluster_cloudscale:
=_metadata:
multi_instance: true
multi_tenant: true
namespace: syn-talos-capi-cluster-cloudscale
namespace: syn-cluster-api

clusterName: ${cluster:name}

talosVersion: '1.13'
# NOTE(sg): this is the well-known default schematic UUID
talosSchematicUUID: 376567988ad370138ad8b2698212367b8edcb69b5fd68c80be1f2ec7d603b4ba
kubernetesVersion: 'v1.36.4'
apiURL: ""

cni: cilium

cloudscale:
# TODO(sg): document this
customImageSlug: talos-v${talos_capi_cluster_cloudscale:talosVersion}-37656798
# TODO(sg): decide on default sizing
privateNetwork:
# TODO(sg): does this need to match the privnet name on cloudscale?
name: privnet-${talos_capi_cluster_cloudscale:clusterName}
uuid: TO_BE_REPLACED
region: ${facts:region}

controlPlane:
count: 1
flavor: plus-16-4
rootVolumeSize: 50

workerGroups:
worker:
count: 1
flavor: plus-16-4
rootVolumeSize: 50

cluster:
spec:
clusterNetwork:
pods:
cidrBlocks:
- 10.128.0.0/14
services:
cidrBlocks:
- 172.30.0.0/16
serviceDomain: cluster.local

cloudscaleCluster:
spec:
region: ${talos_capi_cluster_cloudscale:cloudscale:region}
credentialsRef:
name: capcs-cloudscale

talosControlPlane:
metadata: {}
spec: {}
strategicPatches: {}

talosStrategicPatches: {}

kubernetesApiServer:
authenticationConfigurationJWT: {}
18 changes: 17 additions & 1 deletion component/app.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,23 @@ local inv = kap.inventory();
local params = inv.parameters.talos_capi_cluster_cloudscale;
local argocd = import 'lib/argocd.libjsonnet';

local app = argocd.App('talos-capi-cluster-cloudscale', params.namespace);
local app = argocd.App('talos-capi-cluster-cloudscale', params.namespace) {
spec+: {
ignoreDifferences+: [
{
group: 'cluster.x-k8s.io',
kind: 'MachineDeployment',
jsonPointers: [ '/spec/replicas' ],
},
],
syncPolicy+: {
syncOptions+: [
'RespectIgnoreDifferences=true',
'ServerSideApply=true',
],
},
},
};

local appPath =
local project = std.get(std.get(app, 'spec', {}), 'project', 'syn');
Expand Down
Loading
Loading