Argo CD vs Flux multi-tenancy: which model fits many teams on one GitOps setup
A platform team serving many application teams from one GitOps setup has to decide where tenant boundaries live. Argo CD centralizes tenant access through SSO and its own RBAC, so one controller and one web UI carry the permission model. Flux enforces tenant boundaries through Kubernetes RBAC impersonation, so each reconciliation runs as a Kubernetes identity and the boundary is the one the cluster already enforces. Both are Apache-2.0 licensed and graduated in the CNCF, so the choice is about operating model, not project maturity or license.
The right fit depends on two questions: who administers what, and how isolation must be proven. If a small central team wants one place to see every application, manage SSO groups and map roles to projects, Argo CD's model keeps that administration in one system. If tenants should be bound by the same Kubernetes RBAC that governs everything else in the cluster, and auditors will ask for evidence from the Kubernetes API, Flux's impersonation model maps more directly to that evidence. Confirm in your own environment which identities your auditors will accept as proof and whether they want permissions shown in the Argo CD configuration, in Kubernetes RBAC objects, or both.
Before you choose, run a short test in a non-production cluster. Create two tenant namespaces, grant each tenant write access only to its own repository path, and attempt a cross-tenant deployment with each tool. Record who can change the tenant's permissions and where that change is logged. The results will show whether your administrators can operate the model day to day, which is the cost that recurs long after installation. For the wider comparison, see the Argo CD vs Flux comparison for the full feature set.
How the two models compare on tenant isolation, administration and audit
This table compares how Argo CD and Flux draw tenant boundaries, delegate administration and support audit, row by row. Read each row as a question to answer for your own clusters, since the isolation you get depends on how you configure RBAC, SSO and repository access. The main takeaway is that Argo CD centralizes access control in one controller with its own RBAC, while Flux pushes it down to Kubernetes RBAC through impersonation.
| Aspect | Argo CD | Flux |
|---|---|---|
| Control plane shape | One central controller with a web UI and API server that manages applications across clusters | Composable GitOps Toolkit controllers that run per cluster and reconcile from sources such as Git repositories |
| Identity and SSO integration | SSO through bundled Dex (SAML, LDAP, GitHub connectors) or directly over an existing OIDC provider; confirm your provider's claims mapping | Relies on the identity model of the Kubernetes API server; confirm how your cluster authenticates users (OIDC, certificates or tokens) |
| Tenant boundary mechanism | Argo CD projects and its own RBAC policies decide which applications and destinations a team can touch | Kubernetes namespaces and RBAC, with controllers acting through impersonation of a tenant service account |
| RBAC scope | From 2.14 to 3.0, update and delete permissions apply only to the application itself; logs need an explicit logs, get permission | Permissions are whatever the impersonated service account is granted in Kubernetes RBAC; confirm the roles in your namespaces |
| Repository definition | From Argo CD 3.0, repositories must be defined as Kubernetes Secrets, not in the argocd-cm ConfigMap | Sources are Kubernetes custom resources, such as Git repository objects reconciled by the source controller; confirm your tenant's access to each source |
| Admin account handling | Use the built-in admin user only for setup, then disable it with admin.enabled set to false once SSO or local users exist | No central admin login; access is controlled by the cluster's authentication and RBAC, so review cluster-admin bindings |
| Multi-cluster management | Manages multiple clusters from one controller, which concentrates credentials and blast radius; confirm where cluster secrets are stored | Per-cluster controllers keep each cluster self-contained; a central view needs additional tooling you must confirm |
| Audit evidence | Audit comes from Argo CD and Kubernetes logs; confirm which Argo CD events and RBAC decisions your log pipeline captures | Audit comes from Kubernetes API audit logs and the impersonated identity; confirm your API server audit policy records impersonation |
How Argo CD and Flux draw the tenant boundary
Argo CD draws the tenant boundary at its own front door. One central application controller reconciles every application it manages, and users reach it through SSO over OIDC, OAuth2, LDAP or SAML 2.0, then through Argo CD's RBAC policy. Isolation therefore depends on how you define AppProjects, which restrict source repositories, destination clusters and namespaces, and on how the RBAC policy maps SSO groups to project roles. The controller itself runs with broad cluster access, so a tenant's ability to deploy is limited by policy the platform team writes, not by the Kubernetes permissions the tenant holds. In Argo CD 2.14 to 3.0, update and delete permissions apply to the application object only, and reading logs needs an explicit logs, get permission, so review those rules before you grant access.
Flux takes the opposite approach. Its controllers do not carry a tenant's authority. A Kustomization or HelmRelease can name a serviceAccountName, and the controller then applies manifests as that service account through Kubernetes RBAC impersonation. A tenant's reconciliation can therefore create only what that service account is allowed to create, and the platform team controls that boundary with ordinary Role and RoleBinding objects. This protects against a tenant escalating through the GitOps controller, but it does not stop a tenant from misconfiguring resources they are allowed to touch, and it moves the work of keeping service accounts scoped onto your team. Confirm in the Flux documentation for your version which fields enforce impersonation by default and whether any cluster-wide controller setting can bypass it. Also confirm how each tool's secret handling and audit logs cover tenant activity, because neither boundary is useful if the controller's own credentials or repository secrets are readable by every tenant.
Which factors change the multi-tenancy result in practice
Six factors decide whether a central controller with its own RBAC or a per-cluster controller relying on Kubernetes RBAC fits better. Read them together, because tenant count, identity setup and audit needs often push in different directions.
Number and trust level of tenants
Argo CD's central controller concentrates every tenant's deployments in one control plane, so a compromise of that controller reaches all of them. Flux runs per-tenant controllers that act through Kubernetes RBAC impersonation, which keeps each tenant's reconciliation scoped to its own service account. Check how many teams share a cluster and whether any tenant is untrusted or subject to a separate regulator. Highly sensitive or mutually distrusting tenants usually point toward stronger isolation per cluster or per controller.
Whether tenants need a UI
Argo CD ships a web UI and API server that tenants can use to view application state, sync and inspect resources. Flux has no bundled web UI of its own, so tenants typically work through Git, the flux CLI and Kubernetes tooling. If application teams expect a visual dashboard for deployments and logs, the central controller's UI is a direct benefit. If tenants are comfortable with pull requests and kubectl, the extra surface area of a shared UI may not be needed. Confirm the UI access model with the chosen platform before committing.
Existing identity provider and group claims
Argo CD integrates SSO through its bundled Dex, which offers SAML, LDAP and GitHub connectors, or directly through an OIDC provider such as Okta, Keycloak or Microsoft. In Argo CD 3.0, Dex-based RBAC uses the federated_claims.user_id claim, so group mappings must be rechecked after upgrading. If your identity provider already issues clean group claims, Argo CD's RBAC maps tenants to projects with little extra work. If groups are messy or missing, the identity layer becomes the main engineering cost, whichever tool you pick.
Kubernetes RBAC maturity in the platform team
Flux's multi-tenancy model depends on Kubernetes RBAC with impersonation, so the platform team must be comfortable writing service accounts, roles and role bindings that limit each tenant's namespace and resource access. Argo CD adds its own RBAC layer on top of Kubernetes, which can be easier to explain to application teams but creates a second permission model to audit. Teams with strong Kubernetes RBAC skills often find Flux's model transparent. Teams new to cluster RBAC may find Argo CD's project model faster to operate, provided they review its policies regularly.
Number of clusters
Argo CD is designed to manage multiple clusters from one installation, which reduces the number of controllers to run when a fleet grows. Flux is commonly deployed with one set of controllers per cluster, which means more components to upgrade but each cluster stays self-contained. A small number of clusters with shared tenants favors the central model, while many clusters with independent operators can favor per-cluster controllers. Ask how each option affects upgrade windows and the blast radius of a controller failure.
Audit and access evidence requirements
Auditors often ask who could change what, when, and with which permission. Argo CD records sync activity and enforces its RBAC inside the controller, so evidence comes from both its logs and Kubernetes audit logs. Flux actions run as Kubernetes service accounts, so the Kubernetes API audit trail is the central record. Confirm with your auditor which log sources they accept, how long they must be retained, and whether they need separate evidence for tenant administrators and platform administrators. Plan audit logging before tenant onboarding, not after.
When Argo CD or Flux fits the tenancy model better
A central platform team that owns delivery for many application teams often wants one place to see every application, every cluster and every sync status, and wants access decided by the identity provider rather than by hand-maintained objects. Argo CD fits this model because it runs as a Kubernetes controller with a web UI, manages multiple clusters, and integrates SSO over OIDC, OAuth2, LDAP and SAML 2.0 with its own RBAC. The advantage matters most when auditors or service owners need a visual view of who can sync or delete what, without reading manifests.
- Single pane of view: The web UI and multi-cluster management give the platform team one console for applications across clusters.
- Identity-driven access: SSO through an existing OIDC provider, or through the bundled Dex connectors, maps groups to Argo CD roles.
- Central control plane: Argo CD must be operated as a shared service, so its upgrades, Redis and controller sharding become platform team duties.
- Privilege concentration: One controller with broad cluster credentials is a higher-value target, so plan network, credential and RBAC hardening early.
- Admin account hygiene: Use the built-in admin user only for setup and disable it with
admin.enabledset tofalseonce SSO works.
Before committing, confirm which Argo CD minor versions your team will track, since only the three most recent minor versions receive patch releases, and test how your identity provider's group claims map to Argo CD roles.
Some teams already manage access through Kubernetes RBAC, with namespaces, roles and bindings tied to their identity provider, and want GitOps to respect those same rules without a second authorization model. Flux fits this model because its controllers are built from the GitOps Toolkit and use Kubernetes RBAC with impersonation for multi-tenancy. The advantage matters when the security team already audits cluster RBAC and wants one authoritative source of permissions.
- One authorization model: Each tenant's reconciliation runs as a service account that is limited by ordinary Kubernetes RBAC.
- Composable controllers: Source, kustomize, helm and notification controllers can be installed and scoped per cluster, which suits teams that prefer small, separate components.
- Pull-based, least-privilege design: Flux pulls from Git and OCI sources, which keeps cluster credentials inside the cluster.
- No central UI by default: Visibility depends on CLI, cluster objects, notifications and whatever dashboards you add, so plan that tooling as part of the design.
- Impersonation design work: Correct tenant isolation depends on how service accounts, namespaces and RBAC are written, so review those objects carefully.
Confirm which Flux installation method your team will use, including the Flux Operator or Terraform provider, and verify that your Kubernetes version meets the minimum patch levels in the Flux installation guide.
Many organizations run both a central platform function and several autonomous teams with their own clusters, so neither model fits every tenant. In a mixed estate, the decision is less about picking one tool for everything and more about which tenants need a shared console and which need strict, cluster-local isolation. This pattern matters when acquisitions or regulated workloads have left different access rules in different places.
- Split by tenant class: Put tenants that need central visibility on one controller and tenants with strict local rules on another, if the estate can be partitioned that way.
- Duplicate governance: Running two GitOps controllers means two upgrade cycles, two sets of RBAC designs and two audit trails to explain.
- Shared source discipline: Keep repository layout, promotion rules and secret handling consistent so the two controllers do not drift in policy.
- Clear ownership boundaries: Document which team administers each controller and which cluster each tenant can change.
- Operating overhead: Each additional controller adds training, monitoring and incident runbooks, which the platform team must fund.
Before choosing this path, ask your integrator or internal team for a written tenant inventory and a cost estimate that covers both controllers over their support lifecycle.
Who administers what and what audit needs
In Argo CD, administration is concentrated in one controller with its own RBAC, so the platform team usually holds the most powerful role: the ability to see and change Applications, projects, clusters and repositories across tenants. Flux spreads that authority across Kubernetes objects. Each tenant's reconciliation runs under a service account that the platform team binds through Kubernetes RBAC and impersonation, so tenant admins act only with the permissions their namespace grants. Whichever model you choose, write down who may change the GitOps control plane itself, not only who may deploy. Before go-live, disable the built-in admin account by setting admin.enabled to false once SSO or local users are configured, as the Argo CD user management documentation recommends. Confirm in your own environment that no shared credential remains and that break-glass access is documented and tested.
The Argo CD 2.14 to 3.0 upgrade notes change one tenant-facing rule you must test. Update and delete RBAC now apply only to the application itself, and reading logs requires an explicit logs, get permission. Teams that relied on broader application permissions to manage child resources, or on implicit log access, will see different results after upgrading. Also confirm that repositories are defined as Kubernetes Secrets, since Argo CD 3.0 removed their definition from argocd-cm, and that Dex RBAC mappings use the federated_claims.user_id claim. Run a permission test matrix for each tenant role on a non-production cluster before and after any upgrade.
For audit, you need three evidence sources that line up by time and identity. Kubernetes API server audit logs show who created, changed or deleted resources, including the service account used by a controller. Git history shows what was approved and by whom, and it should be the only path to a desired-state change. Controller events and status conditions show what the GitOps controller applied, skipped or failed to reconcile. Confirm with your Kubernetes distribution how audit policy is configured, where logs are shipped, and how long they are retained. This article does not state retention periods for either platform, so ask your vendor or platform owner for the written retention setting and test a restore of the evidence before an assessor asks for it.
How to test tenant isolation in your own environment
This sequence gives platform teams a repeatable way to prove, in their own clusters, whether each GitOps model keeps tenants apart, who can change what, and whether the audit trail answers the questions a design review will ask. It ends with a written record of results that can be compared across Argo CD and Flux.
Define tenant personas and their required actions
The platform lead and the security owner write a short table of tenant personas, such as an application team, a data team and a platform administrator. For each persona, list the namespaces, Git paths, Applications or Kustomizations, and actions it must be allowed to perform, including reads, syncs, rollbacks and deletes. Also list what each persona must never reach, such as another team's namespace or cluster-scoped resources. The step is done when every persona has an allow list and a deny list that a reviewer has signed off.
Build a test tenant in a non-production cluster
In a non-production cluster, the platform engineer creates two test tenants, each with its own namespace, Git path and service account or project, and a mock workload in each. For Argo CD, the engineer defines an AppProject per tenant and maps SSO groups to roles, and confirms the admin user is disabled as the user management documentation recommends. For Flux, the engineer sets up each tenant's reconciliation to run under a service account with impersonation. The step is done when each tenant can sync its own workload and the setup is recorded as code in the test repository.
Attempt cross-tenant reads under each model
Using a test identity from tenant A, the tester attempts to list, get and watch resources in tenant B's namespace, and to view its Application or Kustomization status, logs and events. Run the same attempts under the Argo CD SSO and RBAC configuration and under the Flux impersonated service account, and capture each response. Note any case where a read succeeds unexpectedly. The step is done when every attempt has a recorded outcome that matches the deny list from step one, and any mismatch is logged as a finding.
Attempt cross-tenant writes and deletes under each model
The same tester, still using tenant A's identity, tries to create, patch and delete resources in tenant B, and to change tenant B's Git source or sync settings where the model allows it. For Argo CD, include attempts to edit or delete an Application that belongs to another project, and check that update and delete rights apply to the application itself. For Flux, include attempts to point a Kustomization at another tenant's repository or service account. The step is done when all write and delete attempts are denied or confined as designed, with screenshots or command output saved as evidence.
Verify Secret handling and encryption at rest
The security engineer checks how each tenant's credentials and Secrets are stored and accessed. Confirm whether Secrets are encrypted at rest in etcd in the test cluster, since Kubernetes stores Secrets unencrypted by default unless encryption at rest is configured. Then confirm that no tenant's RBAC grants list or watch on Secrets in another namespace, and check where Git and registry credentials live, including whether Argo CD repository definitions are stored as Kubernetes Secrets. If an external store is used, verify the access path through the Secrets Store CSI Driver. The step is done when a written note records the encryption status, the RBAC results and the credential locations for each model.
Confirm the audit trail answers who changed what
The security engineer triggers one known change per tenant, such as a manifest edit merged to Git and a manual sync or rollback, then pulls the Kubernetes audit log, the Argo CD or Flux controller logs and the Git history. For each change, check that the record shows the acting identity, the time, the object and the action. Confirm that the audit policy and log retention on your side actually capture these events, since the cluster's audit configuration is outside the GitOps tool. The step is done when each test change can be traced end to end from the Git commit to the cluster event, or a gap is documented with an owner.
Record results for the design review
The platform lead compiles one results document with the persona table, the test cluster configuration, every attempt and its outcome, the Secret and encryption notes, and the audit traces. Each failed or unexpected result is listed with an owner and a retest date agreed in writing. The document is shared with the design review so that the GitOps model is chosen on evidence from your own environment rather than from vendor descriptions. The step is done when the review has accepted the results or assigned follow-up work.
Questions buyers ask about Argo CD and Flux multi-tenancy
Which model is more secure for multi-tenant GitOps, Argo CD or Flux?
Neither model is secure by default, and the answer depends on how tenant boundaries are enforced. Argo CD centralizes access in one controller with its own RBAC and SSO, so the risk concentrates in who can change that RBAC and in the cluster credentials the controller holds. Flux relies on Kubernetes RBAC with impersonation, so each reconciliation runs as a tenant service account, which keeps tenant permissions in the Kubernetes API you already audit. Test both against your own threat model: whether a tenant can reach another tenant's namespace, read Secrets, or change cluster-scoped objects. Confirm how each handles those cases in your environment before you decide.
Can Flux give tenants a web UI like Argo CD?
Flux does not ship a bundled web UI for tenants in the way Argo CD does, so tenants usually work through Git, the flux command line and Kubernetes tooling. Argo CD provides a web UI, SSO over OIDC, OAuth2, LDAP or SAML 2.0, and its own RBAC for application visibility. If your teams expect a dashboard for deployment status, budget time for a UI layer or confirm what the Flux ecosystem offers in your version. Ask any implementation partner to show how tenants see their own reconciliation status without seeing other tenants' resources.
What drives the effort of a multi-tenant GitOps setup?
Effort scales with the number of tenants, the number of clusters and how many access models you must support. The main drivers are:
- Tenant onboarding: repository layout, namespaces, quotas and the RBAC bindings for each team.
- Secrets handling: Kubernetes Secrets are stored unencrypted in etcd by default, so encryption at rest and an external store add work.
- Identity integration: mapping your SSO groups to Argo CD roles or to Kubernetes RBAC subjects.
- Upgrades: Kubernetes minor versions are supported for a limited window, and both tools need upgrade testing against each cluster.
No effort figure is supplied here, so ask for a written breakdown by these drivers in any scope.
Can our own platform team set up multi-tenancy without outside help?
A team with strong Kubernetes RBAC, identity and GitOps experience can build either model internally, and many do. The work is less about installing the controllers and more about designing tenant isolation, reviewing privileges and testing them. Argo CD's upgrade notes for 3.0 changed RBAC behavior, for example update and delete rules now apply only to the application itself, and logs access needs an explicit permission, so teams moving between versions need careful testing. Choose internal delivery if you have capacity for that testing. Choose external help if you need a second review of isolation or a fixed-scope delivery with written deliverables.
How long does a multi-tenant GitOps rollout take?
The timeline depends on scope and must be agreed in writing before work starts. The variables that move it most are the number of clusters, the number of tenants, the identity provider integration, whether Secrets management is in scope, and how many environments must be validated before production. DeployOpen typically works under fixed-scope agreements, so the scope document should list the clusters, tenants, controllers and acceptance tests that define completion. Ask for a timeline tied to those deliverables rather than a generic duration.
What should we ask for in a quote for multi-tenant GitOps?
Ask for a written scope that names each deliverable and how it is accepted. Useful items include:
- The list of clusters and Kubernetes versions in scope, with the supported minor versions for each.
- The tenant model, including namespace layout, RBAC bindings and the isolation tests performed.
- Identity integration details and the roles mapped for each group.
- Secrets approach, backup of etcd and the Argo CD or Flux configuration, and documentation handover.
- Support or retainer terms after handover, if any, and what is excluded.
DeployOpen does not publish a price list, so a quote follows from this written scope.
How does the number of clusters change the multi-tenant design?
Cluster count changes whether one controller can serve everything or whether you need a controller per cluster. Argo CD manages multiple clusters from a central controller, which simplifies a single operations view but concentrates risk and cluster credentials in one place. Flux runs composable controllers, usually per cluster, which keeps each cluster's reconciliation local and is often easier to explain for strict isolation. Each cluster also adds its own Kubernetes version skew and upgrade cycle. Confirm your cluster count, your blast radius tolerance and your audit requirements before choosing the topology.
What a multi-tenant GitOps rollout changes for your teams
Adopting either tool for many teams moves change approval out of individual pipelines and into the Git repositories and the controller's permission model. Platform engineers become the owners of the controller install, the tenant onboarding pattern and the policy that decides who can merge what. Application teams gain a self-service path but lose direct cluster write access, so their change requests now arrive as pull requests. Before rollout, decide who approves changes to tenant namespaces, who approves changes to shared platform components, and whether those two groups share one review queue. In Argo CD, the AppProject resource and its RBAC rules define which repositories, destination namespaces and cluster resources a team may use, so that decision maps to concrete objects you can review.
Repository structure is the mapping layer between tenants and the cluster. A common layout gives each tenant a directory or repository, with a platform repository holding cluster-wide resources. Argo CD expresses tenant boundaries through projects and application definitions, while Flux expresses them through Kubernetes namespaces, service accounts and the serviceAccountName field on its Kustomization and HelmRelease objects. Illustrative example: if a payments team and a reporting team share a cluster, each gets its own path, its own namespace and its own reconciler identity, and a change in one path should not be able to write into the other. Confirm in a test environment, with your own manifests, that a tenant's credentials cannot read or modify another tenant's objects before you rely on the layout.
Upgrades become a scheduled platform task that every tenant depends on. Argo CD documents that only the three most recent minor versions receive patch releases, and its 3.0 upgrade notes changed how update, delete and log permissions apply, so each minor upgrade needs a permission review. Flux publishes its own release cadence on its releases page, and its installation guide sets minimum supported Kubernetes patch versions, so the controller and the cluster must move together. Plan a staging cluster that mirrors your tenant layout, run the RBAC checks again after each upgrade, and ask your vendor or DeployOpen for a written upgrade procedure that covers both the controller and the tenant manifests. For the wider design trade-offs, the sibling Argo CD vs Flux comparison covers Helm handling and day-two operations.
Primary sources to read before deciding
Multi-tenancy decisions in GitOps depend on how each tool authenticates users, enforces permissions and records changes. The sources below are the official pages that settle those questions for Argo CD and Flux, and they are the ones to check against your own cluster layout before you commit.
Argo CD user management
This page explains how Argo CD maps SSO identities and local users to its own RBAC roles, including how Dex connectors and direct OIDC providers feed those roles. For multi-tenancy, read it to confirm which team can create applications, which projects they can target and how the built-in admin account is handled. Check that the admin account is disabled once SSO is working, and test group mappings with a non-production user before rollout.
Argo CD 2.14 to 3.0 upgrade notes
These notes describe permission changes that alter who can see and change applications after an upgrade. Update and delete rights now apply only to the application itself, and reading logs requires an explicit permission. Repository definitions moved into Kubernetes Secrets, and Dex-based RBAC switched to the federated_claims.user_id claim. Review existing policies against these changes before any tenant relies on them.
Argo CD security
The security page covers how the Argo CD components handle credentials, cluster access and the trust boundary between the controller and the clusters it manages. In a shared setup, one central controller holds access to many clusters, so a compromise affects every tenant it serves. Read it to decide whether tenants can reach cluster-wide resources through their applications and how you will restrict that with projects and destination rules.
Flux documentation
The Flux documentation sets out how each controller in the GitOps Toolkit runs with Kubernetes RBAC and impersonation, which is the basis for tenant isolation in Flux. Read it to map which service account each tenant's reconciliation uses, which namespaces each account can write to and how cross-namespace sources are referenced. Confirm these details in a test cluster, since the isolation depends on how you configure those accounts.
CNCF Argo and Flux pages
The CNCF project pages record the governance status of both tools, including the graduation dates for Argo and Flux. Graduation indicates the project has passed the foundation's maturity review, but it does not guarantee that a given multi-tenant design meets your audit needs. Use these pages to confirm project status and governance for procurement files, and then rely on the product documentation for behavior.
Kubernetes authentication docs
Kubernetes does not store human users as API objects, so every tenant identity reaches the cluster through a certificate, bearer token, OIDC token, webhook or authenticating proxy. Both tools depend on this layer, and Flux depends on it directly through impersonation. Read this page to confirm how your identity provider's groups reach Kubernetes RBAC, because audit records and tenant boundaries are only as clear as that mapping.
How DeployOpen helps evaluate and implement tenant isolation
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside your own infrastructure, including GitOps delivery on Kubernetes. For Argo CD vs Flux multi-tenancy, we start from how your teams, clusters and audit obligations map onto each tool's permission model before any configuration is written.
How we scope
- Map each tenant team to its namespaces, clusters, repositories and deployment rights before choosing a controller model.
- Record who administers the GitOps controller, who approves changes and who may read application logs.
- Agree deliverables, timelines and acceptance tests in writing before work starts, as engagements are fixed-scope.
How we build
- Configure SSO, RBAC or Kubernetes impersonation rules for each tenant boundary, then test that cross-tenant access is denied.
- Set up repository credentials, secret handling and disabled default admin accounts according to the vendor documentation.
- Run security testing against the GitOps layer and the Kubernetes clusters it manages, and report findings with fixes.
How we hand over
- Document the tenant model, role mappings, namespace layout and the steps to onboard or remove a team.
- Deliver audit evidence such as role bindings, access logs and change records, prepared for your compliance assessor to review.
- Walk your platform and security staff through operations, so they can run tenant changes without us.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers, covering controller version changes.
- Re-test tenant boundaries after new teams, clusters or controller upgrades change the permission model.
- Confirm current release support windows and feature behavior with the vendor or your own environment before each upgrade.

