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 explains how to install and run cert-manager in a custom Kubernetes namespace instead of the default \u003ccode\u003ecert-manager\u003c/code\u003e namespace.\u003c/p\u003e\n"],["\u003cp\u003eUsers might need to run cert-manager in a different namespace due to company policies or restrictions on creating new namespaces.\u003c/p\u003e\n"],["\u003cp\u003eThe process involves creating the custom namespace, editing the installation manifests to specify the new namespace, and applying these changes via the overrides file.\u003c/p\u003e\n"],["\u003cp\u003eAfter applying the changes, you can verify the installation in the new namespace by using the \u003ccode\u003ekubectl get pods\u003c/code\u003e command, followed by deleting the original instance if needed.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation directs users to the official cert-manager documentation for installation and uninstallation instructions, if needed.\u003c/p\u003e\n"]]],[],null,["# Running cert-manager in a custom namespace\n\n| You are currently viewing version 1.13 of the Apigee hybrid documentation. 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.13/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_NAMESPACE \\\n --atomic \\\n -f OVERRIDES_FILE.yaml \\\n --dry-run=server\n ```\n\n Apply the change: \n\n ```\n helm upgrade operator apigee-operator/ \\\n --install \\\n --namespace APIGEE_NAMESPACE \\\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)."]]