2026/06/23 11:52:50 maxprocs: Leaving GOMAXPROCS=4: CPU quota undefined
{"level":"info","ts":"2026-06-23T11:52:50.176Z","logger":"setup","msg":"Capsule Version v0.13.6 f4085fd"}
{"level":"info","ts":"2026-06-23T11:52:50.176Z","logger":"setup","msg":"Build from: https://github.com/projectcapsule/capsule"}
{"level":"info","ts":"2026-06-23T11:52:50.176Z","logger":"setup","msg":"Build date: 2026-06-17T04:33:51"}
{"level":"info","ts":"2026-06-23T11:52:50.176Z","logger":"setup","msg":"Go Version: go1.26.4"}
{"level":"info","ts":"2026-06-23T11:52:50.176Z","logger":"setup","msg":"Go OS/Arch: linux/amd64"}
{"level":"info","ts":"2026-06-23T11:52:50.217Z","logger":"setup","msg":"Initializing webhook certificate watcher using provided certificates","webhook-cert-path":"/tmp/k8s-webhook-server/serving-certs","webhook-cert-name":"tls.crt","webhook-cert-key":"tls.key"}
{"level":"info","ts":"2026-06-23T11:52:50.217Z","logger":"controller-runtime.certwatcher","msg":"Updated current TLS certificate","cert":"/tmp/k8s-webhook-server/serving-certs/tls.crt","key":"/tmp/k8s-webhook-server/serving-certs/tls.key"}
{"level":"info","ts":"2026-06-23T11:52:50.217Z","logger":"setup","msg":"initializing manager"}
{"level":"info","ts":"2026-06-23T11:52:50.220Z","logger":"setup","msg":"initializing capsule configuration"}
{"level":"info","ts":"2026-06-23T11:52:50.220Z","logger":"setup","msg":"initializing caches"}
{"level":"info","ts":"2026-06-23T11:52:50.232Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/convert"}
{"level":"info","ts":"2026-06-23T11:52:50.232Z","logger":"controller-runtime.builder","msg":"Conversion webhook enabled","GVK":"capsule.clastix.io/v1beta1, Kind=Tenant"}
{"level":"info","ts":"2026-06-23T11:52:50.232Z","logger":"setup","msg":"registering indexers"}
{"level":"info","ts":"2026-06-23T11:52:50.233Z","logger":"setup","msg":"skipping setup of Indexer ingress.HostnamePath for object *v1beta1.Ingress","error":"no matches for kind \"Ingress\" in version \"extensions/v1beta1\""}
{"level":"info","ts":"2026-06-23T11:52:50.234Z","logger":"setup","msg":"skipping setup of Indexer ingress.HostnamePath for object *v1beta1.Ingress","error":"no matches for kind \"Ingress\" in version \"networking.k8s.io/v1beta1\""}
{"level":"info","ts":"2026-06-23T11:52:50.234Z","logger":"setup","msg":"registering webhooks"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/generic/replications"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/generic/managed"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/pods/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/ingresses/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/persistentvolumeclaims/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/persistentvolumeclaims/mutating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/services/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/nodes/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/generic/cordoning"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/serviceaccounts/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/generic/customresources"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/gateways/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/devices/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/defaults"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/tenants/mutating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/tenants/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/tenantowners/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/namespaces/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/namespaces/mutating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/resourcepools/mutating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/resourcepools/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/resourcepools/claim/mutating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/resourcepools/claim/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/custom-quotas/namespaced/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.235Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/custom-quotas/cluster/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.236Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/custom-quotas/calculations"}
{"level":"info","ts":"2026-06-23T11:52:50.236Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/generic/metadata"}
{"level":"info","ts":"2026-06-23T11:52:50.236Z","logger":"controller-runtime.webhook","msg":"Registering webhook","path":"/config/validating"}
{"level":"info","ts":"2026-06-23T11:52:50.236Z","logger":"setup","msg":"initializing controllers"}
{"level":"info","ts":"2026-06-23T11:52:50.241Z","logger":"setup","msg":"starting manager"}
{"level":"info","ts":"2026-06-23T11:52:50.241Z","logger":"controller-runtime.metrics","msg":"Starting metrics server"}
{"level":"info","ts":"2026-06-23T11:52:50.241Z","logger":"controller-runtime.metrics","msg":"Serving metrics server","bindAddress":":8080","secure":false}
{"level":"info","ts":"2026-06-23T11:52:50.241Z","msg":"starting server","name":"health probe","addr":"[::]:10080"}
{"level":"info","ts":"2026-06-23T11:52:50.241Z","logger":"controller-runtime.webhook","msg":"Starting webhook server"}
{"level":"info","ts":"2026-06-23T11:52:50.241Z","logger":"setup","msg":"disabling http/2"}
{"level":"info","ts":"2026-06-23T11:52:50.241Z","logger":"controller-runtime.webhook","msg":"Serving webhook server","host":"","port":9443}
I0623 11:52:50.342317 1 leaderelection.go:258] "Attempting to acquire leader lease..." lock="capsule-system/42c733ea.clastix.capsule.io"
{"level":"info","ts":"2026-06-23T11:52:50.342Z","logger":"controller-runtime.certwatcher","msg":"Starting certificate poll+watcher","cert":"/tmp/k8s-webhook-server/serving-certs/tls.crt","key":"/tmp/k8s-webhook-server/serving-certs/tls.key","interval":10}
I0623 11:52:50.353629 1 leaderelection.go:272] "Successfully acquired lease" lock="capsule-system/42c733ea.clastix.capsule.io"
{"level":"info","ts":"2026-06-23T11:52:50.360Z","msg":"Starting EventSource","controller":"capsule/tls","controllerGroup":"","controllerKind":"Secret","source":"kind source: *v1.CustomResourceDefinition"}
{"level":"info","ts":"2026-06-23T11:52:50.360Z","msg":"Starting EventSource","controller":"capsule/tls","controllerGroup":"","controllerKind":"Secret","source":"kind source: *v1.Secret"}
{"level":"info","ts":"2026-06-23T11:52:50.360Z","msg":"Starting EventSource","controller":"capsule/tls","controllerGroup":"","controllerKind":"Secret","source":"kind source: *v1.ValidatingWebhookConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.360Z","msg":"Starting EventSource","controller":"capsule/tls","controllerGroup":"","controllerKind":"Secret","source":"kind source: *v1.MutatingWebhookConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.360Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.ServiceAccount"}
{"level":"info","ts":"2026-06-23T11:52:50.360Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1beta2.Tenant"}
{"level":"info","ts":"2026-06-23T11:52:50.360Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.NetworkPolicy"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/rbac/roles","controllerGroup":"rbac.authorization.k8s.io","controllerKind":"ClusterRole","source":"kind source: *v1.ClusterRole"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.LimitRange"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.ResourceQuota"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/services","controllerGroup":"","controllerKind":"Service","source":"kind source: *v1.Service"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.RoleBinding"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/rbac/bindings","controllerGroup":"rbac.authorization.k8s.io","controllerKind":"ClusterRoleBinding","source":"kind source: *v1.ClusterRoleBinding"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/rbac/bindings","controllerGroup":"rbac.authorization.k8s.io","controllerKind":"ClusterRoleBinding","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.Namespace"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenant-owner-status","controllerGroup":"capsule.clastix.io","controllerKind":"TenantOwner","source":"kind source: *v1beta2.Tenant"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1beta2.RuleStatus"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/pod","controllerGroup":"","controllerKind":"Pod","source":"kind source: *v1.Pod"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenant-owner-status","controllerGroup":"capsule.clastix.io","controllerKind":"TenantOwner","source":"kind source: *v1beta2.TenantOwner"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.StorageClass"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.PriorityClass"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1.RuntimeClass"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/endpointslices","controllerGroup":"discovery.k8s.io","controllerKind":"EndpointSlice","source":"kind source: *v1.EndpointSlice"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","source":"kind source: *v1beta2.TenantOwner"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/configuration","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","source":"kind source: *v1beta2.TenantOwner"}
{"level":"info","ts":"2026-06-23T11:52:50.360Z","msg":"Starting EventSource","controller":"capsule/rbac/bindings","controllerGroup":"rbac.authorization.k8s.io","controllerKind":"ClusterRoleBinding","source":"kind source: *v1.ServiceAccount"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/persistentvolumes","controllerGroup":"","controllerKind":"PersistentVolume","source":"kind source: *v1.PersistentVolume"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"config/caches","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","source":"kind source: *v1.ServiceAccount"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/configuration","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/configuration","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","source":"kind source: *v1beta2.Tenant"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"capsule/rule-status","controllerGroup":"capsule.clastix.io","controllerKind":"RuleStatus","source":"kind source: *v1beta2.RuleStatus"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"tenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"TenantResource","source":"kind source: *v1beta2.Tenant"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"globaltenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalTenantResource","source":"kind source: *v1beta2.Tenant"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"capsule/admission/mutating","controllerGroup":"admissionregistration.k8s.io","controllerKind":"MutatingWebhookConfiguration","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"tenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"TenantResource","source":"kind source: *v1beta2.TenantResource"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"tenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"TenantResource","source":"kind source: *v1beta2.TenantResource"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"tenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"TenantResource","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"tenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"TenantResource","source":"kind source: *v1.Namespace"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"globaltenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalTenantResource","source":"kind source: *v1beta2.GlobalTenantResource"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"globaltenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalTenantResource","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"globaltenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalTenantResource","source":"kind source: *v1beta2.GlobalTenantResource"}
{"level":"info","ts":"2026-06-23T11:52:50.362Z","msg":"Starting EventSource","controller":"capsule/admission/validating","controllerGroup":"admissionregistration.k8s.io","controllerKind":"ValidatingWebhookConfiguration","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.363Z","msg":"Starting EventSource","controller":"capsule/resourcepools/claims","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePoolClaim","source":"kind source: *v1beta2.ResourcePool"}
{"level":"info","ts":"2026-06-23T11:52:50.363Z","msg":"Starting EventSource","controller":"capsule/admission/validating","controllerGroup":"admissionregistration.k8s.io","controllerKind":"ValidatingWebhookConfiguration","source":"kind source: *v1.ValidatingWebhookConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.363Z","msg":"Starting EventSource","controller":"capsule/admission/mutating","controllerGroup":"admissionregistration.k8s.io","controllerKind":"MutatingWebhookConfiguration","source":"kind source: *v1.MutatingWebhookConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.363Z","msg":"Starting EventSource","controller":"capsule/resourcepools/claims","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePoolClaim","source":"kind source: *v1beta2.ResourcePoolClaim"}
{"level":"info","ts":"2026-06-23T11:52:50.361Z","msg":"Starting EventSource","controller":"capsule/configuration","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","source":"kind source: *v1beta2.Tenant"}
{"level":"info","ts":"2026-06-23T11:52:50.363Z","msg":"Starting EventSource","controller":"globalcustomquota","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalCustomQuota","source":"kind source: *v1.Namespace"}
{"level":"info","ts":"2026-06-23T11:52:50.363Z","msg":"Starting EventSource","controller":"customquota","controllerGroup":"capsule.clastix.io","controllerKind":"CustomQuota","source":"kind source: *v1beta2.QuantityLedger"}
{"level":"info","ts":"2026-06-23T11:52:50.364Z","msg":"Starting EventSource","controller":"globalcustomquota","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalCustomQuota","source":"kind source: *v1beta2.GlobalCustomQuota"}
{"level":"info","ts":"2026-06-23T11:52:50.364Z","msg":"Starting EventSource","controller":"globalcustomquota","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalCustomQuota","source":"kind source: *v1beta2.QuantityLedger"}
{"level":"info","ts":"2026-06-23T11:52:50.364Z","msg":"Starting EventSource","controller":"customquota","controllerGroup":"capsule.clastix.io","controllerKind":"CustomQuota","source":"kind source: *v1beta2.CustomQuota"}
{"level":"info","ts":"2026-06-23T11:52:50.364Z","msg":"Starting EventSource","controller":"capsule/resourcepools/pools","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePool","source":"kind source: *v1.ResourceQuota"}
{"level":"info","ts":"2026-06-23T11:52:50.364Z","msg":"Starting EventSource","controller":"config/caches","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.364Z","msg":"Starting EventSource","controller":"capsule/resourcepools/pools","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePool","source":"kind source: *v1beta2.ResourcePoolClaim"}
{"level":"info","ts":"2026-06-23T11:52:50.363Z","msg":"Starting EventSource","controller":"capsule/resourcepools/pools","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePool","source":"kind source: *v1.Namespace"}
{"level":"info","ts":"2026-06-23T11:52:50.364Z","msg":"Starting EventSource","controller":"config/caches","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","source":"kind source: *v1beta2.CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.364Z","msg":"Starting EventSource","controller":"capsule/resourcepools/pools","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePool","source":"kind source: *v1beta2.ResourcePool"}
{"level":"info","ts":"2026-06-23T11:52:50.461Z","msg":"Starting Controller","controller":"capsule/tenant-owner-status","controllerGroup":"capsule.clastix.io","controllerKind":"TenantOwner"}
{"level":"info","ts":"2026-06-23T11:52:50.462Z","msg":"Starting Controller","controller":"capsule/rule-status","controllerGroup":"capsule.clastix.io","controllerKind":"RuleStatus"}
{"level":"info","ts":"2026-06-23T11:52:50.462Z","msg":"Starting workers","controller":"capsule/rule-status","controllerGroup":"capsule.clastix.io","controllerKind":"RuleStatus","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.462Z","msg":"Starting workers","controller":"capsule/tenant-owner-status","controllerGroup":"capsule.clastix.io","controllerKind":"TenantOwner","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.462Z","msg":"Starting Controller","controller":"capsule/persistentvolumes","controllerGroup":"","controllerKind":"PersistentVolume"}
{"level":"info","ts":"2026-06-23T11:52:50.462Z","msg":"Starting workers","controller":"capsule/persistentvolumes","controllerGroup":"","controllerKind":"PersistentVolume","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.463Z","msg":"Starting Controller","controller":"capsule/resourcepools/claims","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePoolClaim"}
{"level":"info","ts":"2026-06-23T11:52:50.463Z","msg":"Starting workers","controller":"capsule/resourcepools/claims","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePoolClaim","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.464Z","msg":"Starting Controller","controller":"globalcustomquota","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalCustomQuota"}
{"level":"info","ts":"2026-06-23T11:52:50.464Z","msg":"Starting workers","controller":"globalcustomquota","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalCustomQuota","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.464Z","msg":"Starting Controller","controller":"customquota","controllerGroup":"capsule.clastix.io","controllerKind":"CustomQuota"}
{"level":"info","ts":"2026-06-23T11:52:50.464Z","msg":"Starting workers","controller":"customquota","controllerGroup":"capsule.clastix.io","controllerKind":"CustomQuota","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.465Z","msg":"Starting Controller","controller":"capsule/resourcepools/pools","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePool"}
{"level":"info","ts":"2026-06-23T11:52:50.465Z","msg":"Starting workers","controller":"capsule/resourcepools/pools","controllerGroup":"capsule.clastix.io","controllerKind":"ResourcePool","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.560Z","msg":"Starting Controller","controller":"capsule/tls","controllerGroup":"","controllerKind":"Secret"}
{"level":"info","ts":"2026-06-23T11:52:50.560Z","msg":"Starting workers","controller":"capsule/tls","controllerGroup":"","controllerKind":"Secret","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting Controller","controller":"capsule/services","controllerGroup":"","controllerKind":"Service"}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting workers","controller":"capsule/services","controllerGroup":"","controllerKind":"Service","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting Controller","controller":"capsule/rbac/roles","controllerGroup":"rbac.authorization.k8s.io","controllerKind":"ClusterRole"}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting workers","controller":"capsule/rbac/roles","controllerGroup":"rbac.authorization.k8s.io","controllerKind":"ClusterRole","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting Controller","controller":"capsule/configuration","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting workers","controller":"capsule/configuration","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting Controller","controller":"capsule/pod","controllerGroup":"","controllerKind":"Pod"}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting workers","controller":"capsule/pod","controllerGroup":"","controllerKind":"Pod","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting Controller","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant"}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting workers","controller":"capsule/tenants","controllerGroup":"capsule.clastix.io","controllerKind":"Tenant","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting Controller","controller":"tenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"TenantResource"}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting workers","controller":"tenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"TenantResource","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting Controller","controller":"capsule/rbac/bindings","controllerGroup":"rbac.authorization.k8s.io","controllerKind":"ClusterRoleBinding"}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting workers","controller":"capsule/rbac/bindings","controllerGroup":"rbac.authorization.k8s.io","controllerKind":"ClusterRoleBinding","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting Controller","controller":"capsule/admission/mutating","controllerGroup":"admissionregistration.k8s.io","controllerKind":"MutatingWebhookConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.562Z","msg":"Starting workers","controller":"capsule/admission/mutating","controllerGroup":"admissionregistration.k8s.io","controllerKind":"MutatingWebhookConfiguration","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.563Z","msg":"Starting Controller","controller":"globaltenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalTenantResource"}
{"level":"info","ts":"2026-06-23T11:52:50.563Z","msg":"Starting workers","controller":"globaltenantresource","controllerGroup":"capsule.clastix.io","controllerKind":"GlobalTenantResource","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.563Z","msg":"Starting Controller","controller":"capsule/endpointslices","controllerGroup":"discovery.k8s.io","controllerKind":"EndpointSlice"}
{"level":"info","ts":"2026-06-23T11:52:50.563Z","msg":"Starting workers","controller":"capsule/endpointslices","controllerGroup":"discovery.k8s.io","controllerKind":"EndpointSlice","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.563Z","msg":"Starting Controller","controller":"capsule/admission/validating","controllerGroup":"admissionregistration.k8s.io","controllerKind":"ValidatingWebhookConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.563Z","msg":"Starting workers","controller":"capsule/admission/validating","controllerGroup":"admissionregistration.k8s.io","controllerKind":"ValidatingWebhookConfiguration","worker count":1}
{"level":"info","ts":"2026-06-23T11:52:50.565Z","msg":"Starting Controller","controller":"config/caches","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration"}
{"level":"info","ts":"2026-06-23T11:52:50.565Z","msg":"Starting workers","controller":"config/caches","controllerGroup":"capsule.clastix.io","controllerKind":"CapsuleConfiguration","worker count":1}
Bug description
Tenant owners may exceed the total available resource quota specified in the
ResourcePoolby modifying the already existingResourcePoolClaim.How to reproduce
Bootstrap:
Now, if a tenant owner tries to create a
ResourcePoolClaimthat exceeds the total available quota (in this case - 10 CPU available, 55 CPU requested), Capsule will make it exhausted, as expected, andResourceQuotawill be empty:If, however, a tenant owner first creates a valid (5/10 CPU)
ResourcePoolClaimand then changes it to some extreme values (55/10 CPU), theResourcePoolwill become negative.ResourceQuotaandResourcePoolClaimwill have the requested values, while theResourcePoolwill not be marked exhausted:Expected behavior
ResourcePoolshould never have negative values and must be treated as an upper limit for the resource quota.Any changes in
ResourcePoolClaimmust be checked against itsResourcePoollimits.Logs
Additional context
0.13.6capsule-0.13.6