v1.1.0
v1.1.0
This release focuses on a real security and operability upgrade: namespace-scoped operator mode alongside a leaner CI pipeline and a stronger release/publishing posture. If you're running this operator in a shared or multi-tenant cluster, this is the release that lets you narrow its blast radius.
Highlights
- Namespace-scoped operator mode. Set
WATCH_NAMESPACEto restrict the manager's cache and reconciliation to a single namespace, paired with a newconfig/namespacedKustomize profile and namespace-localRole/RoleBindingmanifests. This is the first concrete step toward least-privilege deployment for platform teams who don't want a single operator instance holding cluster-wide reconciliation rights over every application namespace. - Consolidated CI pipeline. Build, test, and coverage automation now run as a single workflow, while
BuildandTestsremain independently visible status checks. Branch protection required-checks continue to work unchanged. - Stronger release and supply-chain posture. Protected branch/tag rules, CodeQL scanning, grouped Dependabot updates, and guarded image publishing are now part of the standard release process.
Added
- Namespace-scoped operator mode via
WATCH_NAMESPACE, restricting manager cache and reconciliation scope to a single namespace. config/namespacedKustomize profile for least-privilege, namespace-scoped deployments.- Namespace-local manager
RoleandRoleBindingmanifests for scoped runtime permissions. - Unit test coverage for namespace resolution and manager options.
- Documentation covering namespace-scoped operation, security boundaries, GitOps drift considerations, and cluster-scoped CRD requirements.
Changed
- Consolidated
build,test, andcoverageautomation into a single CI workflow, preserving independently visibleBuildandTestsjobs. - Updated README status badges to reflect the consolidated CI workflow.
- Strengthened repository release and publishing posture with protected branch/tag rules, CodeQL, Dependabot grouping, and guarded image publishing.
- Updated project documentation and roadmap to clarify namespace-scoped operation and the direction for future cross-namespace platform-team control.
Security
- Bumped
golang.org/x/netfrom0.49.0to0.55.0. - Bumped grouped GitHub Actions dependencies via Dependabot.
- Added CodeQL scanning for continuous static security analysis.
Fixed
- Reduced CI required-check drift by keeping
Build,Tests, andLintstatus-check names stable through the workflow consolidation. - Verified protected-branch required-check behavior after CI consolidation.
Upgrading from v1.0.0
No breaking API changes in this release. WATCH_NAMESPACE is opt-in. If unset, the manager continues to watch cluster-wide as before. Existing cluster-scoped deployments require no changes; adopt config/namespaced when you're ready to scope the operator down.
Pinned install, cluster-scoped unchanged behavior:
kubectl apply -f https://raw.githubusercontent.com/k8s-operators-devops/app-maintenance-operator/v1.1.0/deploy/install.yamlPinned install, namespace-scoped:
kubectl apply -k https://github.com/k8s-operators-devops/app-maintenance-operator/config/namespaced?ref=v1.1.0Operational Notes
- The
v1.1.0image publishes as a multi-architecture GHCR image forlinux/amd64andlinux/arm64. - The
unknown/unknownentries visible in the GHCR package UI are BuildKit/SLSA provenance attestations, not additional runnable image architectures. - Always pin to the immutable tag for production installs; do not track
:latest.
Known Limitations
- CRDs remain cluster-scoped Kubernetes resources, so installing the API still requires cluster-level permission regardless of manager scope.
- Namespace-scoped mode restricts the manager's runtime scope but does not yet provide central platform-team control across multiple application namespaces. See Roadmap.
- Only AWS ALB fixed-response mode is currently supported.
- Fixed-response HTML remains limited to 1024 bytes by ALB fixed-response constraints.
Full Changelog: v1.0.0...v1.1.0