kubernetes/kops · error

must specify name of keyset to trust keypair in

Error message

must specify name of keyset to trust keypair in

What it means

Argument validation in `kops trust keypair`: the command requires KEYSET plus one or more keypair IDs as positional arguments, and this guard fires when no arguments are supplied. Pure usage validation before any API call.

Source

Thrown at cmd/kops/trust_keypair.go:71

	KeypairIDs  []string
}

func NewCmdTrustKeypair(f *util.Factory, out io.Writer) *cobra.Command {
	options := &TrustKeypairOptions{}

	cmd := &cobra.Command{
		Use:     "keypair KEYSET ID...",
		Short:   trustKeypairShort,
		Long:    trustKeypairLong,
		Example: trustKeypairExample,
		Args: func(cmd *cobra.Command, args []string) error {
			options.ClusterName = rootCommand.ClusterName(true)
			if options.ClusterName == "" {
				return fmt.Errorf("--name is required")
			}

			if len(args) == 0 {
				return fmt.Errorf("must specify name of keyset to trust keypair in")
			}
			options.Keyset = args[0]

			if len(args) == 1 {
				return fmt.Errorf("must specify names of keypairs to trust keypair in")
			}
			options.KeypairIDs = args[1:]

			return nil
		},
		ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
			return completeTrustKeyset(cmd.Context(), f, options, args, toComplete)
		},
		RunE: func(cmd *cobra.Command, args []string) error {
			ctx := cmd.Context()

			return RunTrustKeypair(ctx, f, out, options)
		},

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Provide the keyset name as the first argument, e.g. `kops trust keypair --name <cluster> kubernetes-ca <id>`.
  2. Run `kops get keypairs --name <cluster>` to list available keysets.
  3. Check the command's help output for argument order: keyset first, then keypair IDs.

Example fix

// before
kops trust keypair --name mycluster.example.com 2026-01-01
// after
kops trust keypair --name mycluster.example.com kubernetes-ca 2026-01-01
Defensive patterns

Strategy: validation

Validate before calling

if len(positionalArgs) < 1 { return errors.New("keyset name required: kops trust keypair <keyset> <keypair-id>...") }

Try / catch

out, err := exec.Command("kops", "trust", "keypair", cmdArgs...).CombinedOutput()
if strings.Contains(string(out), "must specify name of keyset") { append keyset argument and retry }

Prevention

When it happens

Trigger: Running `kops trust keypair --name <cluster>` with zero positional arguments.

Common situations: Command truncated in scripts; misunderstanding that keyset is optional; copy-paste dropping the keyset argument.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/27ee954ea3bfdabb. Report an issue: GitHub.