Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
9d887cd
fix(controller): decode old object for delete requests
oliverbaehler Dec 10, 2025
221e0e8
chore: modernize golang
oliverbaehler Dec 10, 2025
052660e
chore: modernize golang
oliverbaehler Dec 10, 2025
7c418d0
chore: modernize golang
oliverbaehler Dec 10, 2025
7db5048
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Dec 11, 2025
98f9add
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Dec 15, 2025
f448bdf
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Dec 19, 2025
033e098
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Dec 19, 2025
21cd932
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Dec 25, 2025
1e28f1b
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jan 5, 2026
2549518
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jan 27, 2026
ebe2b77
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler May 28, 2026
ea46ad4
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler May 28, 2026
c46f875
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler May 29, 2026
3f7eed0
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 1, 2026
45d5ed8
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 2, 2026
0f0d8ee
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 4, 2026
b1a45b6
fix: preserve ca-bundles injected from external providers
oliverbaehler Jun 4, 2026
216d9c9
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 5, 2026
a2602eb
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 8, 2026
2001feb
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 8, 2026
6d154f7
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 8, 2026
7bccacd
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 10, 2026
ad8e35b
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 14, 2026
3ae5ad8
Merge branch 'main' of github.com:projectcapsule/capsule
oliverbaehler Jun 19, 2026
9c28a0b
feat(rules): add service enforcement rules
oliverbaehler Jun 24, 2026
586b8d1
feat(rules): add service enforcement rules
oliverbaehler Jun 24, 2026
283a88e
feat(rules): add service enforcement rules
oliverbaehler Jun 24, 2026
5ff51c0
feat(rules): add service enforcement rules
oliverbaehler Jun 24, 2026
e556a4a
feat(rules): add service enforcement rules
oliverbaehler Jun 24, 2026
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
16 changes: 14 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,13 @@ all: manager

# Run tests
.PHONY: test
test: test-clean generate manifests test-clean
@GO111MODULE=on go test -race -v $(shell go list ./... | grep -v "e2e") -coverprofile coverage.out
test: gotestsum test-clean generate manifests test-clean
@GO111MODULE=on $(GOTEST) \
--format pkgname-and-test-fails \
--packages="$(shell go list ./... | grep -v "e2e")" \
-- \
-race \
-coverprofile coverage.out

.PHONY: test-clean
test-clean: ## Clean tests cache
Expand Down Expand Up @@ -680,6 +685,13 @@ syft: ## Download syft locally if necessary.
test -s $(SYFT) && $(SYFT) --version | grep -q $(SYFT_VERSION) || \
$(call go-install-tool,$(SYFT),github.com/$(SYFT_LOOKUP)/cmd/syft@v$(SYFT_VERSION))

GOTEST := $(LOCALBIN)/gotestsum
GOTEST_VERSION := 1.13.0
GOTEST_LOOKUP := gotestyourself/gotestsum
gotestsum:
test -s $(GOTEST) && $(GOTEST) --version | grep -q $(GOTEST_VERSION) || \
$(call go-install-tool,$(GOTEST),gotest.tools/gotestsum@v$(GOTEST_VERSION))

HARPOON := $(LOCALBIN)/harpoon
HARPOON_VERSION := v0.10.2
HARPOON_LOOKUP := alegrey91/harpoon
Expand Down
12 changes: 12 additions & 0 deletions charts/capsule/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@ The following Values have changed key or Value:

| Key | Type | Default | Description |
|-----|------|---------|-------------|
| manager.apiPriorityAndFairness.enabled | bool | `false` | Change to `true` if you want to insulate the API calls made by Capsule admission controller activities. This will help ensure Capsule stability in busy clusters. Ref: https://kubernetes.io/docs/concepts/cluster-administration/flow-control/ |
| manager.apiPriorityAndFairness.flowApiVersion | string | `"flowcontrol.apiserver.k8s.io/v1"` | Declare ApiVersion used for Flow |
| manager.apiPriorityAndFairness.matchingPrecedence | int | `900` | Only the first matching FlowSchema for a given request matters. If multiple FlowSchemas match a single inbound request, it will be assigned based on the one with the highest matchingPrecedence. Ref: https://kubernetes.io/docs/concepts/cluster-administration/flow-control/#flowschema |
| manager.apiPriorityAndFairness.priorityLevelConfigurationSpec | object | See [values.yaml](values.yaml) | Priority level configuration. The block is directly forwarded into the priorityLevelConfiguration, so you can use whatever specification you want. ref: https://kubernetes.io/docs/concepts/cluster-administration/flow-control/#prioritylevelconfiguration |
| manager.daemonsetStrategy | object | `{"type":"RollingUpdate"}` | [Daemonset Strategy](https://kubernetes.io/docs/tasks/manage-daemon/update-daemon-set/#creating-a-daemonset-with-rollingupdate-update-strategy) |
| manager.deploymentStrategy | object | `{"type":"RollingUpdate"}` | [Deployment Strategy](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) |
| manager.env | list | `[]` | Additional Environment Variables |
Expand Down Expand Up @@ -274,6 +278,7 @@ The following Values have changed key or Value:
| webhooks.hooks.managed.objectSelector | object | `{"matchExpressions":[{"key":"projectcapsule.dev/managed-by","operator":"In","values":["controller"]}]}` | [ObjectSelector](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-objectselector) |
| webhooks.hooks.managed.opts | object | `{}` | Capsule Hook Options |
| webhooks.hooks.managed.rules | list | `[{"apiGroups":["*"],"apiVersions":["*"],"operations":["CREATE","UPDATE","DELETE"],"resources":["*"],"scope":"Namespaced"}]` | [Rules](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-rules) |
| webhooks.hooks.metadata | object | `{"enabled":true,"failurePolicy":"Ignore","matchConditions":[{"expression":"!has(request.subResource) || request.subResource == \"\"","name":"ignore-subresources"},{"expression":"request.resource.resource != \"events\"","name":"ignore-events"}],"matchPolicy":"Equivalent","namespaceSelector":{"matchExpressions":[{"key":"capsule.clastix.io/tenant","operator":"Exists"}]},"objectSelector":{},"opts":{},"reinvocationPolicy":"Never","rules":[{"apiGroups":["*"],"apiVersions":["*"],"operations":["CREATE","UPDATE"],"resources":["*"],"scope":"Namespaced"}]}` | Additional Metadata webhook |
| webhooks.hooks.metadata.enabled | bool | `true` | Enable the Hook |
| webhooks.hooks.metadata.failurePolicy | string | `"Ignore"` | [FailurePolicy](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#failure-policy) |
| webhooks.hooks.metadata.matchConditions | list | `[{"expression":"!has(request.subResource) || request.subResource == \"\"","name":"ignore-subresources"},{"expression":"request.resource.resource != \"events\"","name":"ignore-events"}]` | [MatchConditions](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-matchpolicy) |
Expand Down Expand Up @@ -347,6 +352,13 @@ The following Values have changed key or Value:
| webhooks.hooks.resourcepools.pools.objectSelector | object | `{}` | [ObjectSelector](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-objectselector) |
| webhooks.hooks.resourcepools.pools.opts | object | `{}` | Capsule Hook Options |
| webhooks.hooks.resourcepools.pools.reinvocationPolicy | string | `"Never"` | [ReinvocationPolicy](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#reinvocation-policy) |
| webhooks.hooks.rulestatus | object | `{"enabled":true,"failurePolicy":"Fail","matchConditions":[],"matchPolicy":"Equivalent","namespaceSelector":{},"objectSelector":{}}` | Webhook for Rule Status ([Read More](https://projectcapsule.dev/docs/resource-management/customquotas/#admission)) |
| webhooks.hooks.rulestatus.enabled | bool | `true` | Enable the Hook |
| webhooks.hooks.rulestatus.failurePolicy | string | `"Fail"` | [FailurePolicy](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#failure-policy) |
| webhooks.hooks.rulestatus.matchConditions | list | `[]` | [MatchConditions](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-matchpolicy) |
| webhooks.hooks.rulestatus.matchPolicy | string | `"Equivalent"` | [MatchPolicy](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-matchpolicy) |
| webhooks.hooks.rulestatus.namespaceSelector | object | `{}` | [NamespaceSelector](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-namespaceselector) |
| webhooks.hooks.rulestatus.objectSelector | object | `{}` | [ObjectSelector](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-objectselector) |
| webhooks.hooks.serviceaccounts.enabled | bool | `true` | Enable the Hook |
| webhooks.hooks.serviceaccounts.failurePolicy | string | `"Fail"` | [FailurePolicy](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#failure-policy) |
| webhooks.hooks.serviceaccounts.matchConditions | list | `[]` | [MatchConditions](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-matchpolicy) |
Expand Down
2 changes: 2 additions & 0 deletions charts/capsule/ci/ha-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ replicaCount: 2
manager:
extraArgs:
- "--enable-leader-election=true"
apiPriorityAndFairness:
enabled: true
Loading
Loading