38 Commits

Author SHA1 Message Date
Serge Logvinov
750949124b fix: csr dns name check
The certificate’s DNS name cannot be set to kubernetes,
because that name is reserved for the default service (kubernetes.default.svc) and is already used by the kube-api server daemons.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-09-16 13:06:58 +07:00
Serge Logvinov
4b4c7587eb fix: service account name
Redefine the default service account name using environment variables.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-09-16 07:03:17 +07:00
Serge Logvinov
9c000cf546 chore: bump deps
Update deps

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-07-29 14:38:53 +07:00
Serge Logvinov
95b4c4be60 fix: ipv6 small subnets
Additionally, check the subnet mask — it should not be set as /128

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-05-15 11:08:37 +07:00
Serge Logvinov
a0e8169dd2 chore: bump deps
Update deps

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-05-06 19:43:53 +07:00
Serge Logvinov
094360a00b fix: hostname in transformation rules
The hostname is very important for transformation rules.
It should be set if the metaserver returns an empty string.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-03-25 10:29:57 +07:00
Serge Logvinov
2c0bd2f3d7 feat: add special transformer func
As in helm, these functions are very useful.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-02-17 12:19:21 +02:00
Serge Logvinov
5a31bb2874 feat: add system information for transformer
Add SystemInformation resource values to transformer templater.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-02-14 12:17:26 +02:00
Serge Logvinov
82c154a238 feat: add taints capabilities
Add the capability to taint nodes during the initialization stage.
It applies only once, as other controllers may later untaint the node.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2025-02-02 12:05:17 +02:00
Serge Logvinov
2cfa7c64ac chore: bump deps
Update talos deps to 1.8.3

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-11-25 20:58:47 +02:00
Serge Logvinov
82009ed898 feat: ipv6 small subnets
Set a limit of 32 pods per node in your Kubernetes cluster.
Some cloud providers offer a /123 IPv6 subnet for nodes, which is typically sufficient for most use cases.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-10-21 18:47:21 +03:00
Serge Logvinov
68d41338b1 fix: node allocator
If a node has a large subnet, such as a /56 or larger, we need to allocate a /64 subnet for each individual node.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-10-14 16:57:01 +03:00
Serge Logvinov
8350f49123 chore: bump deps
Update talos deps to 1.8.0

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-09-24 09:41:56 +03:00
Serge Logvinov
01145da4f4 docs: update deploy documentation
Add example of deployment.
Clean up unused params.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-08-29 13:48:57 +03:00
Serge Logvinov
09a5b9e24d refactor: csr approval controller
Move CSR Approval to separate controller.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-08-28 17:12:08 +03:00
Serge Logvinov
326fc53c84 feat: gcp spot instances
Remove node kubernetes resource on spot node eviction event.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-07-11 14:45:01 +03:00
Serge Logvinov
e1a0e0e5a4 feat: node ipam controller
Add node IPAM controller.

It supports two modes:
* RangeAllocator - classic mode (kubernetes does the same)
* CloudAllocator - Talos is responsible for setting PodCIDRs

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-07-05 11:27:03 +03:00
Serge Logvinov
3b20bb0d45 refactor: contextual logging
Migrate to contextual logging.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-06-18 16:41:31 +03:00
Serge Logvinov
3a4ae03854 feat: prefer permanent ipv6
In ipDiscovery() we prefer permanent ipv6 addresses over temporary ones.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-06-17 09:31:31 +03:00
Serge Logvinov
53034c8151 chore: clean flag
Since the introduction of transformation rules, this logic is no longer necessary.
The skipForeignNode flag was undocumented before, making its removal straightforward.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-05-16 14:53:29 +03:00
Serge Logvinov
9dde8aa331 fix: empty terms
We crush if terms is empty.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-05-13 13:50:22 +03:00
Serge Logvinov
749a01d538 fix: make possible mutate provider-id
We should allow changing the Provider ID string in CCM.
And add label key/value validation.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-05-09 10:08:42 +03:00
Serge Logvinov
386958d6af feat: transformer functions
Add functions to template executer.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-05-08 13:58:11 +03:00
Serge Logvinov
0e8728c11d feat: expose metrics
Expose API call metrics and node CSR approve statistics.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-05-06 10:48:29 +03:00
Serge Logvinov
0faf0ae2b4 fix: refresh talos token
Due to the failover process, we also need to refresh the Talos token.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-05-06 08:47:54 +03:00
Serge Logvinov
85e2022f1e feat: node transformer feature flags
Introduce feature flags:
* PublicIPDiscovery enables the Cloud Controller Manager (CCM) to identify global/public IPs on the node.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-05-06 08:42:29 +03:00
Serge Logvinov
22e398449c feat: node transformer
Node transformer allows you to add extra labels/annotations and modify platform metadata.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-05-03 00:11:26 +03:00
Serge Logvinov
9403bc592a fix: refresh talos tls certs
Addressing the short lifetime of Talos certificates by implementing a routine for regular recreation of the Talos client.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-02-05 18:30:21 +02:00
Serge Logvinov
b4e136b781 feat: support CloudDualStackNodeIPs
Talos CCM now supports the `CloudDualStackNodeIPs` feature gate. This feature
allows the user(cloud) to specify a list of IPv4 and IPv6 addresses for each node in
the cluster. https://github.com/kubernetes/kubernetes/pull/120275

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-02-05 16:53:02 +02:00
Serge Logvinov
33faa60ccb chore: bump deps
Update:
  K8s to 0.29.1
  Github Actions deps
  Talos 1.6.4

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2024-02-05 10:51:04 +02:00
Serge Logvinov
5d41626e75 fix: azure providerID
Set resourceGroup name to low case.
It helps azure-node-autoscaller to find the node.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2023-11-16 09:54:11 +02:00
Serge Logvinov
b3d55f0810 test: add basic tests
Tests:
* cloud-config
* helper funcs

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2023-05-29 12:23:40 +03:00
Serge Logvinov
5d65b1d694 fix: csr keyusage check
DeepEqual sees different in unsorted slices.
We will check allowed keyUsage options,
and makes chore that it has two important flags.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2023-05-08 10:23:49 +03:00
Serge Logvinov
2b53c2b9e7 feat: add node certificate approval
TalosCCM now can verify node CSR, and approve it if it OK.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2023-04-21 12:03:07 +03:00
Serge Logvinov
7a039d9f13 fix: node spec ip
Always update the node IPs.
Network ip/hostname can change after node eviction (spot instance).

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2023-04-06 16:26:56 +03:00
Serge Logvinov
8583f5959f chore: bump deps
Update golang to 1.20.3 and bump deps.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2023-04-05 22:34:32 +03:00
Serge Logvinov
c80d5520ae feat: label spot instanses
Set label `node.cloudprovider.kubernetes.io/lifecycle=spot` to spot instance.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2023-03-11 20:35:01 +02:00
Serge Logvinov
345c59f4e9 feat: init ccm
* Add base function of CCM
* Helm-chart deployment

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
2022-11-18 07:49:54 +02:00