Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions cmd/controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func main() {
util.InitMetricsServer()

// Get concurrency config for each resource kind from environment variables or use defaults
concurrencyConfig := getDefaultConcurrencyConfig()
concurrencyConfig := getConcurrencyConfig()

// context for the reconciliation controller
ctx, cancel := context.WithCancel(context.Background())
Expand Down Expand Up @@ -166,15 +166,23 @@ func getEnvInt(key string, defaultVal int) int {
return defaultVal
}

func getDefaultConcurrencyConfig() map[int]int {
func getConcurrencyConfig() map[int]int {
concurrencyConfig := make(map[int]int)

for resourceKey, resourceEnvSuffix := range controller.ResourceEnvSuffixMap {
// Skip Subscription resource until everything else is configured
if resourceKey == controller.ResourceSubscription {
continue
}
defaultReconcileForResource, ok := controller.DefaultConcurrentReconciles[resourceKey]
if !ok {
defaultReconcileForResource = controller.DefaultReconcile
}
concurrencyConfig[resourceKey] = max(getEnvInt(MaxConcurrentReconcilesEnvPrefix+resourceEnvSuffix, defaultReconcileForResource), 1)
}

// Check if explicit mapping is found for Subscription, else use the current tenant configuration
concurrencyConfig[controller.ResourceSubscription] = max(getEnvInt(MaxConcurrentReconcilesEnvPrefix+controller.ResourceEnvSuffixMap[controller.ResourceSubscription], concurrencyConfig[controller.ResourceCAPTenant]), 1)

return concurrencyConfig
}
5 changes: 1 addition & 4 deletions internal/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ var (
ResourceCAPTenantOperation: "CAP_TENANT_OPERATION",
ResourceDomain: "DOMAIN",
ResourceClusterDomain: "CLUSTER_DOMAIN",
ResourceSubscription: "SUBSCRIPTION",
}
)

Expand Down Expand Up @@ -248,10 +249,6 @@ func (c *Controller) Start(ctx context.Context) {
func getConcurrencyForResource(key int) int {
concurrency, ok := DefaultConcurrentReconciles[key]
if !ok {
// If no explicit mapping is found for Subscription, use the tenant configuration
if key == ResourceSubscription {
return getConcurrencyForResource(ResourceCAPTenant)
}
concurrency = DefaultReconcile // default concurrency
}
return concurrency
Expand Down
1 change: 1 addition & 0 deletions website/content/en/docs/configuration/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ The following environment variables are used to configure CAP Operator.
- `MAX_CONCURRENT_RECONCILES_CAP_TENANT_OPERATION`: Maximum number of concurrent reconciles for `CAPTenantOperation` (for example, `10`).
- `MAX_CONCURRENT_RECONCILES_DOMAIN`: Maximum number of concurrent reconciles for `Domain` (for example, `1`).
- `MAX_CONCURRENT_RECONCILES_CLUSTER_DOMAIN`: Maximum number of concurrent reconciles for `ClusterDomain` (for example, `1`).
- `MAX_CONCURRENT_RECONCILES_SUBSCRIPTION`: Maximum number of concurrent reconciles for `Subscription` (for example, `10`).
- `CLIENT_QPS`: Maximum queries per second for the Kubernetes client-side rate limiter (for example, `25`). Defaults to `25`.
- `CLIENT_BURST`: Maximum burst size for the Kubernetes client-side rate limiter (for example, `50`). Defaults to `50`.
- `ROLLOUT_DELAY`: Delay window used to batch credential-rotation work triggered by BTP service secret changes. Accepts Go duration strings (for example, `30m`, `2h`). Defaults to `1h`. Values below `30s` are clamped to `30s`.
1 change: 1 addition & 0 deletions website/content/en/docs/installation/helm/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ description: >
capTenantOperation: "10" # default: 10
domain: "1" # default: 1
clusterDomain: "1" # default: 1
subcription: "10" # default: 10 or <value of capTenant config, if specified>
```

- ### Configure controller client rate limiting
Expand Down
2 changes: 2 additions & 0 deletions website/includes/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ controller:
domain: ""
# -- The maximum number of concurrent reconciles (e.g. "1") for the cluster domain
clusterDomain: ""
# -- The maximum number of concurrent reconciles (e.g. "10") for the subscription
subscription: ""
versionMonitoring:
# -- The URL of the Prometheus server from which metrics related to managed application versions can be queried
prometheusAddress: ""
Expand Down
Loading