kubernetes/kops · error

creating interfaces client: %w

Error message

creating interfaces client: %w

What it means

Construction of the network.NewInterfacesClient failed after credentials were obtained. This is rare with the track-two Azure SDK and typically means the subscription ID is malformed or client options are invalid.

Source

Thrown at upup/pkg/fi/cloudup/azure/verifier.go:313

	if err != nil || metadata == nil {
		return nil, fmt.Errorf("getting instance metadata: %w", err)
	}
	if metadata.ResourceGroupName == "" {
		return nil, fmt.Errorf("empty resource group name")
	}
	if metadata.SubscriptionID == "" {
		return nil, fmt.Errorf("empty subscription ID")
	}
	klog.V(4).Infof("Azure verifier client using subscription %q resource group %q", metadata.SubscriptionID, metadata.ResourceGroupName)

	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		return nil, fmt.Errorf("creating an identity: %w", err)
	}

	nisClient, err := network.NewInterfacesClient(metadata.SubscriptionID, cred, nil)
	if err != nil {
		return nil, fmt.Errorf("creating interfaces client: %w", err)
	}
	vmsClient, err := compute.NewVirtualMachinesClient(metadata.SubscriptionID, cred, nil)
	if err != nil {
		return nil, fmt.Errorf("creating VMs client: %w", err)
	}
	vmssVMsClient, err := compute.NewVirtualMachineScaleSetVMsClient(metadata.SubscriptionID, cred, nil)
	if err != nil {
		return nil, fmt.Errorf("creating VMSSVMs client: %w", err)
	}

	return &client{
		subscriptionID: metadata.SubscriptionID,
		resourceGroup:  metadata.ResourceGroupName,
		nisClient:      nisClient,
		vmsClient:      vmsClient,
		vmssVMsClient:  vmssVMsClient,
	}, nil
}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check the wrapped cause; validate subscription ID is a GUID (from the empty-subscription check above this should be non-empty)
  2. Update kOps Azure SDK modules (go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network && make gomod)
  3. If instantiating the client in tests, pass a valid credential and subscription GUID
  4. Retry — transient constructor failures are essentially nonexistent; persistent failure implies bad input
Defensive patterns

Strategy: try-catch

Validate before calling

if _, err := uuid.Parse(subscriptionID); err != nil {
	return fmt.Errorf("invalid subscription ID %q", subscriptionID)
}

Try / catch

_, err := newVerifierClient(ctx)
if err != nil && strings.Contains(err.Error(), "creating interfaces client") {
	// inspect wrapped cause; fix subscription ID / SDK version, then retry
}

Prevention

When it happens

Trigger: network.NewInterfacesClient(subscriptionID, cred, nil) returns an error — usually an empty/invalid subscriptionID string or nil credential passed through; with the wrapped cause indicating client instantiation failure.

Common situations: Upstream metadata supplied a malformed subscription ID; SDK version mismatch after a kOps dependency bump; tests passing nil cred into a manually invoked client constructor.

Related errors


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