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."],[],[],null,["# Running cert-manager in a custom namespace\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.15/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)."]]