This topic explains how to specify a custom Kubernetes namespace for
cert-manager.
In most cases, cert-manager runs in the cert-manager namespace. Some users may have
company policies restricting the creation of new Kubernetes namespaces or have policies requiring
cert-manager to be run in a different namespace, for example kube-system.
Verify that cert-manager installed correctly in the new namespace with the
kubectl get pods command:
kubectl get pods -n new-cert-manager-namespace
NAME READY STATUS RESTARTS AGE
cert-manager-1234567-abcde 1/1 Running 0 21s
cert-manager-cainjector-23456789a-bcdef 1/1 Running 0 22s
cert-manager-webhook-3456789ab-cdef0 1/1 Running 0 20s
If cert manager had previoiusly been running, delete the cert-manager instance in
the cert-manager namespace by following the instructions in
Uninstall
in the cert-manager documentation.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-26 UTC."],[[["\u003cp\u003eThis guide details the process of installing cert-manager in a custom Kubernetes namespace, deviating from the default \u003ccode\u003ecert-manager\u003c/code\u003e namespace.\u003c/p\u003e\n"],["\u003cp\u003eTo install cert-manager in a custom namespace, you need to create the namespace, modify the installation manifests, and configure the \u003ccode\u003ecertManager\u003c/code\u003e stanza in your overrides file.\u003c/p\u003e\n"],["\u003cp\u003eThe process requires using \u003ccode\u003ehelm upgrade\u003c/code\u003e commands with your modified overrides file to apply the namespace change, after testing with a dry run first.\u003c/p\u003e\n"],["\u003cp\u003eVerification of the installation in the custom namespace is achieved using the \u003ccode\u003ekubectl get pods\u003c/code\u003e command with the designated namespace.\u003c/p\u003e\n"],["\u003cp\u003eIf cert-manager was already running in the default namespace, it must be uninstalled following the official cert-manager uninstallation guide after setting up the custom namespace.\u003c/p\u003e\n"]]],[],null,["# Running cert-manager in a custom namespace\n\n| You are currently viewing version 1.12 of the Apigee hybrid documentation. **This version is end of life.** You should upgrade to a newer version. For more information, see [Supported versions](/apigee/docs/hybrid/supported-platforms#supported-versions).\n\nThis topic explains how to specify a custom Kubernetes namespace for\n[cert-manager](https://cert-manager.io/).\n\nIn most cases, cert-manager runs in the `cert-manager` namespace. Some users may have\ncompany policies restricting the creation of new Kubernetes namespaces or have policies requiring\ncert-manager to be run in a different namespace, for example `kube-system`.\n\n\nSpecify a custom namespace for cert-manager\n-------------------------------------------\n\n1. Create the namespace if needed: \n\n ```\n kubectl create namespace new-cert-manager-namespace\n ```\n2. Install cert-manager following the instructions in [Installation:\n Introduction](https://cert-manager.io/v1.10-docs/installation/) in the cert-manager documentation. **Note:** You will have to edit the installation manifests to install cert-manager in a custom namespace.\n3. Add a [`certManager`](/apigee/docs/hybrid/v1.12/config-prop-ref#certmanager) stanza to your overrides file. \n\n ```\n certManager:\n namespace: new-cert-manager-namespace\n \n ```\n4. Apply the namespace change: Test with a dry run first:\n\n ```\n helm upgrade operator apigee-operator/ \\\n --install \\\n --namespace apigee-system \\\n --atomic \\\n -f OVERRIDES_FILE.yaml \\\n --dry-run\n ```\n\n Apply the change: \n\n ```\n helm upgrade operator apigee-operator/ \\\n --install \\\n --namespace apigee-system \\\n --atomic \\\n -f OVERRIDES_FILE.yaml\n ```\n5. Verify that cert-manager installed correctly in the new namespace with the `kubectl get pods` command: \n\n ```\n kubectl get pods -n new-cert-manager-namespace\n ``` \n\n ```\n NAME READY STATUS RESTARTS AGE\n cert-manager-1234567-abcde 1/1 Running 0 21s\n cert-manager-cainjector-23456789a-bcdef 1/1 Running 0 22s\n cert-manager-webhook-3456789ab-cdef0 1/1 Running 0 20s\n ```\n6. If cert manager had previoiusly been running, delete the `cert-manager` instance in the `cert-manager` namespace by following the instructions in [Uninstall\n in the cert-manager documentation](https://cert-manager.io/docs/installation/kubectl/#uninstalling)."]]