Skip to content

Improve Token Model implementation. #5

Description

@bsctl

In Talos, Token Model generation requires to run this ONCE per cluster:

$ talosctl gen secrets -o secrets.yaml

This generates ONE token for the entire cluster, example: 32gegb.6te1tl2s8wfy5g16

Token Distribution:

                  talosctl gen secrets
                         ↓
                    secrets.yaml
                         ↓
        ┌────────────────┴────────────────┐
        ↓                                 ↓
     CSR Signer                       ALL Workers
   token: 32gegb...                  token: 32gegb... (SAME)

Both Talos and CSR Signer implements same model:

  • One token per cluster
  • All workers share the same token
  • Token in both controlplane.yaml AND worker.yaml (same value)
  • CSR Signer validates this exact token (stored in K8s secret)
  • Talos trustd validates this exact token (stored in Talos state)

A possible improvement of the CSR Signer is to expose an API to generate the token instead to leverage on talosctl. This would be a similar to kubeadm does for kubernetes join token:

# Create k8s join token
$ kubeadm --kubeconfig $TENANT.kubeconfig token create
abcdef.0123456789abcdef

# List k8s join tokens
$ kubeadm --kubeconfig $TENANT.kubeconfig token create
TOKEN                     TTL         EXPIRES
abcdef.0123456789abcdef   23h         2024-10-30T12:00:00Z

# Delete k8s join token
$ kubeadm --kubeconfig $TENANT.kubeconfig token delete abcdef.0123456789abcdef

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions