This is an automated email from the ASF dual-hosted git repository.
squakez pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/main by this push:
new d64181092 Fix #6895: move multi namespace installation to a new page
d64181092 is described below
commit d641810927139985e0a6dd92b3aad29ca5714695
Author: iamcipherdev <[email protected]>
AuthorDate: Tue Oct 20 08:36:13 2026 +0000
Fix #6895: move multi namespace installation to a new page
The Kustomize/OLM/Helm multi-namespace installation procedures are moved
from installation.adoc to a dedicated installation/multi-namespace.adoc
page, linked from the installation topology section and added to the
Antora nav.
---
docs/modules/ROOT/nav.adoc | 1 +
.../ROOT/pages/installation/installation.adoc | 162 +--------------------
.../{installation.adoc => multi-namespace.adoc} | 117 +--------------
3 files changed, 5 insertions(+), 275 deletions(-)
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
index dcbf710d4..e1b2e55a6 100644
--- a/docs/modules/ROOT/nav.adoc
+++ b/docs/modules/ROOT/nav.adoc
@@ -8,6 +8,7 @@
** xref:installation/cert-manager.adoc[Configure Cert-Manager]
** xref:installation/keda.adoc[Configure Keda]
** xref:installation/knative.adoc[Configure Knative]
+** xref:installation/multi-namespace.adoc[Multi namespace installation]
** xref:installation/upgrade.adoc[Upgrade]
** xref:installation/uninstalling.adoc[Uninstalling]
** xref:installation/advanced/advanced.adoc[Advanced]
diff --git a/docs/modules/ROOT/pages/installation/installation.adoc
b/docs/modules/ROOT/pages/installation/installation.adoc
index 5b6317e18..05d1ac351 100644
--- a/docs/modules/ROOT/pages/installation/installation.adoc
+++ b/docs/modules/ROOT/pages/installation/installation.adoc
@@ -56,167 +56,7 @@ It's important to notice that when running the single or
multiple namespace oper
NOTE: RBAC custom configuration may vary depending on the installation
methodology.
-[[multi-namespace-kustomize]]
-== Install a multi namespace operator with Kustomize
-
-The repository includes a complete Kustomize example for an operator installed
in one namespace and watching two tenant namespaces. The `multi-namespace`
overlay installs the operator in `operators`, configures `WATCH_NAMESPACE` to
`tenant-a,tenant-b`, and grants the operator's ServiceAccount the required
namespaced permissions in both tenant namespaces. The operator also watches its
own `operators` namespace for the resources it manages there.
-
-The overlay does not create namespaces. Create the operator and tenant
namespaces before applying it:
-
-[source,shell script]
-----
-$ kubectl create namespace operators
-$ kubectl create namespace tenant-a
-$ kubectl create namespace tenant-b
-----
-
-Apply the overlay for the Camel K version you want to install:
-
-[subs=attributes+]
-----
-$ kubectl apply -k
github.com/apache/camel-k/install/overlays/multi-namespace?ref=v{last-released-version}
--server-side
-----
-
-The example creates the `camel-k-operator-tenant-ab` ServiceAccount in
`operators`. Each tenant RoleBinding points to that ServiceAccount across
namespaces, so the binding must be installed in every namespace listed in
`WATCH_NAMESPACE`. Granting the operator access to only one tenant namespace
will leave it unable to reconcile resources in the other namespaces.
-
-Verify the deployment, watched namespaces, and cross-namespace RoleBinding:
-
-[source,shell script]
-----
-$ kubectl -n operators get deployment camel-k-operator-tenant-ab
-$ kubectl -n operators get deployment camel-k-operator-tenant-ab \
- -o
jsonpath='{.spec.template.spec.containers[0].env[?(@.name=="WATCH_NAMESPACE")].value}{"\n"}'
-tenant-a,tenant-b
-$ kubectl -n tenant-a get rolebinding camel-k-operator-tenant-a \
- -o jsonpath='{.subjects[0].namespace}/{.subjects[0].name}{"\n"}'
-operators/camel-k-operator-tenant-ab
-----
-
-The overlay is a two-tenant example. To use different namespaces, copy the
`tenant-a-ns-rbac` and `tenant-b-ns-rbac` overlay directories, change each
`namespace` and `nameSuffix`, update the `WATCH_NAMESPACE` value in
`operator/patch-envvars.yaml`, and add the new directories to the top-level
`kustomization.yaml`. Keep the RoleBinding subject namespace set to `operators`
(or change it together with the operator namespace) and keep its ServiceAccount
name aligned with the operator Deployment.
-
-[[multi-namespace-olm]]
-== Install a multi namespace operator with OLM
-
-The Camel K ClusterServiceVersion supports the OLM `MultiNamespace` install
mode. In this mode, the `OperatorGroup` selects the tenant namespaces and OLM
creates the required namespaced RBAC for the operator ServiceAccount. The
operator namespace is the namespace where the `Subscription`, `OperatorGroup`,
and operator Deployment are installed.
-
-Create the operator and tenant namespaces first:
-
-[source,shell script]
-----
-$ kubectl create namespace operators
-$ kubectl create namespace tenant-a
-$ kubectl create namespace tenant-b
-----
-
-Create an `OperatorGroup` in the operator namespace. An OLM namespace can have
only one `OperatorGroup`; edit the existing group instead of creating a second
one when necessary:
-
-[source,yaml]
-----
-apiVersion: operators.coreos.com/v1
-kind: OperatorGroup
-metadata:
- name: camel-k-multi
- namespace: operators
-spec:
- targetNamespaces:
- - tenant-a
- - tenant-b
-----
-
-Apply the group, then create the Camel K subscription from OperatorHub:
-
-[source,shell script]
-----
-$ kubectl apply -f operatorgroup.yaml
-$ curl -fsSL https://operatorhub.io/install/camel-k.yaml | kubectl apply -f -
-----
-
-The OperatorHub manifest creates a `Subscription` in `operators` using the
`stable-v2` channel and the `operatorhubio-catalog` CatalogSource. If your
cluster uses another catalog, keep the same `MultiNamespace` OperatorGroup and
change the Subscription's `source` and `sourceNamespace` to match that catalog.
-
-Wait for the CSV to succeed and verify the selected namespaces:
-
-[source,shell script]
-----
-$ kubectl -n operators get csv
-$ kubectl -n operators get operatorgroup camel-k-multi \
- -o jsonpath='{.spec.targetNamespaces[*]}{"\n"}'
-tenant-a tenant-b
-----
-
-The operator should now reconcile Integrations in both `tenant-a` and
`tenant-b`, while an Integration in an unlisted namespace remains outside this
OperatorGroup's scope.
-
-[[multi-namespace-helm]]
-== Install a multi namespace operator with Helm
-
-The Helm chart currently exposes two watch modes: the release namespace
(`operator.global=false`) and all namespaces (`operator.global=true`). It does
not accept a static comma-separated namespace list. To run a Helm-installed
operator for selected namespaces, install the chart in the operator namespace
and apply a small RBAC overlay for every tenant namespace.
-
-Install the chart using `camel-k` as the release name so the resource names
below match the commands:
-
-[source,shell script]
-----
-$ helm repo add camel-k https://apache.github.io/camel-k/charts/
-$ helm repo update
-$ kubectl create namespace operators
-$ kubectl create namespace tenant-a
-$ kubectl create namespace tenant-b
-$ helm install camel-k camel-k/camel-k -n operators \
- --set operator.global=false \
- --set operator.env[0].name=REGISTRY_ADDRESS \
- --set operator.env[0].value=<my-registry-address>
-----
-
-Set the watched namespaces on the chart-created Deployment:
-
-[source,shell script]
-----
-$ kubectl -n operators set env deployment/camel-k-operator \
- WATCH_NAMESPACE=tenant-a,tenant-b
-----
-
-The chart's namespaced RBAC is scoped to `operators`. Create one small
Kustomize overlay per tenant. You can use
`install/overlays/multi-namespace/tenant-a-ns-rbac/` and `tenant-b-ns-rbac/` as
templates, or use this equivalent overlay (replace `<tenant-namespace>` for
each tenant):
-
-[source,yaml]
-----
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-namespace: <tenant-namespace>
-resources:
--
github.com/apache/camel-k//pkg/resources/config/rbac/namespaced?ref=v{last-released-version}
-patches:
-- target:
- kind: RoleBinding
- patch: |-
- - op: add
- path: /subjects/0/namespace
- value: operators
- - op: replace
- path: /subjects/0/name
- value: camel-k-operator
-----
-
-The patch points every namespaced RoleBinding at `operators/camel-k-operator`,
the ServiceAccount created by this Helm release. Save the overlay once for
`tenant-a` and once for `tenant-b`, changing only `namespace` and the output
directory.
-
-Apply each tenant overlay after the Helm release:
-
-[source,shell script]
-----
-$ kubectl apply -k ./camel-k-multi-namespace/tenant-a-ns-rbac --server-side
-$ kubectl apply -k ./camel-k-multi-namespace/tenant-b-ns-rbac --server-side
-----
-
-Verify the Deployment setting and the cross-namespace permission before
creating an Integration:
-
-[source,shell script]
-----
-$ kubectl -n operators get deployment camel-k-operator \
- -o
jsonpath='{.spec.template.spec.containers[0].env[?(@.name=="WATCH_NAMESPACE")].value}{"\n"}'
-tenant-a,tenant-b
-$ kubectl auth can-i --as=system:serviceaccount:operators:camel-k-operator \
- -n tenant-a get integrations.camel.apache.org
-yes
-----
-
-Repeat the Deployment patch and re-apply the tenant overlays after a Helm
upgrade, or maintain them as a Helm post-renderer. This keeps the chart release
and the manually managed tenant RBAC in sync.
+For installation procedures where the operator watches multiple namespaces,
see xref:installation/multi-namespace.adoc[Multi namespace installation].
[[bootstrap-configuration]]
== Setup the operator configuration
diff --git a/docs/modules/ROOT/pages/installation/installation.adoc
b/docs/modules/ROOT/pages/installation/multi-namespace.adoc
similarity index 50%
copy from docs/modules/ROOT/pages/installation/installation.adoc
copy to docs/modules/ROOT/pages/installation/multi-namespace.adoc
index 5b6317e18..fed3dcfe4 100644
--- a/docs/modules/ROOT/pages/installation/installation.adoc
+++ b/docs/modules/ROOT/pages/installation/multi-namespace.adoc
@@ -1,60 +1,6 @@
-[[installation]]
-= Camel K operator installation
+= Multi namespace installation
-Camel K allows us to run Camel integrations directly on a Kubernetes cluster.
To use it, you need to be connected to a cloud environment or to a local
cluster created for development purposes (ie, Minikube or Kind).
-
-[[kustomize]]
-== Installation via Kustomize
-
-https://kustomize.io[Kustomize] provides a declarative approach to the
configuration customization of a Camel-K installation. Kustomize works either
with a standalone executable or as a built-in to `kubectl`. The
https://github.com/apache/camel-k/tree/main/install[/install] directory
provides a series of base and overlays configuration that you can use. You can
create your own overlays or customize the one available in the repository to
accommodate your need.
-
-[subs=attributes+]
-----
-$ kubectl apply -k
github.com/apache/camel-k/install/overlays/all-namespaces?ref=v{last-released-version}
--server-side
-----
-
-You can specify as `ref` parameter the version you're willing to install (ie,
`v{last-released-version}`). The command above will install a descoped (global)
operator in the camel namespace. This is the suggested configuration in order
to manage Integrations in all namespaces.
-
-[[helm]]
-== Installation via Helm Hub
-
-Camel K is available in Helm Hub:
-
-```
-$ helm repo add camel-k https://apache.github.io/camel-k/charts/
-$ helm install camel-k camel-k/camel-k -n camel
-```
-
-More instructions on the https://hub.helm.sh/charts/camel-k/camel-k[Camel K
Helm] page.
-
-[[olm]]
-== Installation via Operator Hub
-
-Camel K is also available in Operator Hub. You will need the OLM framework to
be properly installed in your cluster. More instructions on the
https://operatorhub.io/operator/camel-k[Camel K Operator Hub] page.
-
-```
-$ kubectl create -f https://operatorhub.io/install/camel-k.yaml
-```
-
-You can edit the `Subscription` custom resource, setting the channel you want
to use. From Camel K version 2 onward, we're going to provide an installation
channel for each major version we're releasing (ie, `stable-v2`). This will
simplify the upgrade process if you choose to perform an automatic upgrade.
-
-NOTE: Some Kubernetes clusters such as Openshift may let you to perform the
same operation from a GUI as well. Refer to the cluster instruction to learn
how to perform such action from user interface.
-
-[[installation-topology]]
-== Installation topology
-
-When you decide to install the operator, you can decide to install the
following topology:
-
-* Global operator: a single global operator watching all namespaces.
-* Own namespace operator: a namespaces operator watching its own namespace
only.
-* Single namespace operator: an operator installed in a namespace and watching
another namespace.
-* Multi namespace operator: an operator installed in a namespace and watching
multiple namespaces.
-
-The namespace(s) to watch is configured via `WATCH_NAMESPACE` variable in the
operator `Deployment` resource. You can provide an empty value (watch all
namespaces), a single value (watch either the own namespace or any other
namespace) or a comma separated value (watching as many namespaces as provided).
-
-It's important to notice that when running the single or multiple namespace
operator, you _may_ need to provide the RBACs which are expected by the
operator to run properly. For such a configuration you can take as a reference
the `Kustomize` examples available in `/install/overlays/single-namespace/` and
`/install/overlays/multi-namespace/`. The last topology is probably the most
secure as it will avoid the operator to access to any resource outside those
namespaces for which you've pro [...]
-
-NOTE: RBAC custom configuration may vary depending on the installation
methodology.
+A multi namespace operator is installed in one namespace and watches multiple
tenant namespaces. The procedures below cover the supported installation
methods.
[[multi-namespace-kustomize]]
== Install a multi namespace operator with Kustomize
@@ -216,61 +162,4 @@ $ kubectl auth can-i
--as=system:serviceaccount:operators:camel-k-operator \
yes
----
-Repeat the Deployment patch and re-apply the tenant overlays after a Helm
upgrade, or maintain them as a Helm post-renderer. This keeps the chart release
and the manually managed tenant RBAC in sync.
-
-[[bootstrap-configuration]]
-== Setup the operator configuration
-
-Each installation method have its proper way to setup configuration. A common
one is the creation of a `Configmap` named
`camel-k-operator-configmap-configuration` and a `Secret` named
`camel-k-operator-secret-configuration` in the same namespace where the
operator is installed. If available, the operator will read the environment
variable from these resources.
-
-[[verify]]
-== Verify that the operator is up and running
-
-In order to verify that the operator is up and running, you should be able to
see a Camel K operator `Pod` running in the namespace used, for example:
-
-```
-kubectl get pods -n camel
-NAME READY STATUS RESTARTS AGE
-camel-k-operator-5b686db99f-c2k2s 1/1 Running 0 3m46s
-```
-
-[[test]]
-== Run some integration
-
-Once you've completed any of the above installation procedure, you'll be ready
to xref:running/running.adoc[run some integrations].
-
-[[special-requirements]]
-== Special clusters requirements
-
-Camel K installation is usually straightforward, but for certain cluster types
you need to apply specific configuration settings before installing it. You
need customized instructions for the following cluster types:
-
-- xref:installation/platform/gke.adoc[Google Kubernetes Engine (GKE)]
-- xref:installation/platform/iks.adoc[IBM Kubernetes Services (IKS)]
-
-[[registry]]
-== Development container registry configuration
-
-Camel K needs a container registry in order to push the generated Camel
applications and Kubernetes needs the same registry to pull and run them live.
The project offers a default development container registry that will simplify
quick starts, demo and testing. When running the project for the first time or
in a local environment you shouldn't worry as it will be completely transparent
to you. The development registry is controlled through the following
environment variables configuration:
-
-[cols="1,3,2", options="header"]
-|===
-| Name | Description | Default Value
-
-| ENABLE_DEV_REGISTRY
-| Run a demo container registry application in the same namespace as the Camel
K Operator.
-| true
-
-| ENABLE_DEV_REGISTRY_SECRET
-| Whether to secure the demo container registry with a default test user
(`admin/password`). In this case you need to provide a secret in the
Integration namespace and use the `pull-secret` trait configuration. Be aware
that the operator will store a secret named `ck-dev-registry` in the same
namespace where it is installed. You may copy and use it in your Integration
namespace for local development purposes.
-| false
-
-|===
-
-When ready to move to a real enterprise installation you will need to turn the
flag off (or remove it) and provide a proper
xref:installation/registry.adoc[production ready registry configuration].
-
-NOTE: if you don't remove the `ENABLE_DEV_REGISTRY` parameter, the operator
will overwrite any registry configuration at startup with its internal demo
registry.
-
-[[fine-tuning]]
-== Fine Tuning
-
-Camel K installation can be configured with certain special settings available
for experienced users. You can manage resources such as limiting memory and
CPU, provide a policy for `Pod` scheduling and `Toleration`. Please have a look
at xref:installation/advanced/advanced.adoc[Camel K fine tuning] to learn more
about advanced configuration.
+Repeat the Deployment patch and re-apply the tenant overlays after a Helm
upgrade, or maintain them as a Helm post-renderer. This keeps the chart release
and the manually managed tenant RBAC in sync.
\ No newline at end of file