tailscale/tailscale · error
failed to get ValidatingAdmissionPolicyBinding %q: %w
Error message
failed to get ValidatingAdmissionPolicyBinding %q: %w
What it means
generatePolicyBinding fetches the existing ValidatingAdmissionPolicyBinding to reuse its resourceVersion. A not-found result is fine, but any other API error (RBAC, connectivity, API server) is fatal and wrapped here with the binding name.
Source
Thrown at k8s-operator/reconciler/proxygrouppolicy/proxygrouppolicy.go:368
if len(values) == 0 {
message = denyMessage
}
return admr.Validation{
Expression: fmt.Sprintf(format, joined),
Message: message,
}
}
func (r *Reconciler) generatePolicyBinding(ctx context.Context, namespace string, policy *admr.ValidatingAdmissionPolicy) (*admr.ValidatingAdmissionPolicyBinding, error) {
var binding admr.ValidatingAdmissionPolicyBinding
err := r.Get(ctx, client.ObjectKey{Name: policy.Name}, &binding)
switch {
case apierrors.IsNotFound(err):
// If it's not found, we can create a new one. We only want the existing one for
// its resource version.
case err != nil:
return nil, fmt.Errorf("failed to get ValidatingAdmissionPolicyBinding %q: %w", policy.Name, err)
}
return &admr.ValidatingAdmissionPolicyBinding{
ObjectMeta: metav1.ObjectMeta{
Name: policy.Name,
ResourceVersion: binding.ResourceVersion,
},
Spec: admr.ValidatingAdmissionPolicyBindingSpec{
PolicyName: policy.Name,
ValidationActions: []admr.ValidationAction{
admr.Deny,
},
MatchResources: &admr.MatchResources{
NamespaceSelector: &metav1.LabelSelector{
MatchLabels: map[string]string{
"kubernetes.io/metadata.name": namespace,
},
},View on GitHub (pinned to 0fd2f14deb)
Solutions
- Confirm the ValidatingAdmissionPolicyBinding with the quoted name exists: kubectl get validatingadmissionpolicybinding <name>.
- Ensure the operator service account has get permission for validatingadmissionpolicybindings.
- If the binding was deleted out of band, allow reconcile to recreate it or fix the ProxyGroup reference.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at k8s-operator/reconciler/proxygrouppolicy/proxygrouppolicy.go:368 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@0fd2f14deb (2026-08-18).
Data as JSON: /api/errors/dd69d0fbbda36da9.
Report an issue: GitHub.