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
- Check the wrapped cause; validate subscription ID is a GUID (from the empty-subscription check above this should be non-empty)
- Update kOps Azure SDK modules (go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network && make gomod)
- If instantiating the client in tests, pass a valid credential and subscription GUID
- 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
- Validate subscription GUID before constructing clients
- Keep azure-sdk-for-go modules pinned and consistent via make gomod
- Pass explicit non-nil client options in tests
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
- creating VMs client: %w
- creating VMSS VMs client: %w
- creating VMs client: %w
- DNS not implemented on azureCloud
- FindVPCInfo not implemented on azureCloud, use FindVNetInfo
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/70fd44562dbb9aea.
Report an issue: GitHub.