Managing sandbox-manager Self-Signed Certificates with cert-manager
The Sandbox Controller and Sandbox Manager charts support cert-manager natively: all certificate issuance is gated by
enableTLS (default false), which requires cert-manager and â for the CA Bundle â trust-manager in the cluster.
This document walks through enabling the integration and verifying the issued certificates. For the full list of TLS
switches, see TLS (cert-manager / trust-manager).
Prerequisitesâ
- Sandbox Controller and Sandbox Manager are installed in the same namespace (default
sandbox-system). The Sandbox Controller chart owns the shared root CA; the Sandbox Manager chart only references the CA Issuer by name. - Ensure the kubectl and helm command-line tools are available with appropriate permissions.
Step 1: Install cert-manager and trust-managerâ
If you haven't installed them yet, refer to the official documentation:
trust-manager distributes the shared CA as a ca.crt ConfigMap through a Bundle resource, so workloads can reuse it
as a trust anchor.
Step 2: Enable TLS in the Chartsâ
2.1 Create the shared root CA (Sandbox Controller)â
Upgrade the Sandbox Controller with enableTLS=true. With the default tls.createCA=true, the chart creates the
shared root CA:
helm upgrade --install agents-sandbox-controller openkruise/agents-sandbox-controller \
-n sandbox-system \
--set enableTLS=true
This provisions:
- The self-signed bootstrap Issuer
sandbox-selfsigned-issuerâ CA Certificatesandbox-caâ signing Issuersandbox-signing-issuer, which signs every leaf certificate. - The CA key pair Secret
sandbox-ca-key-pair(tls.crt/tls.key). - The trust-manager Bundle
sandbox-ca-bundle, distributing the CA as aca.crtConfigMap.
2.2 Issue the ingress certificate (Sandbox Manager)â
Upgrade the Sandbox Manager in the same namespace with enableTLS=true:
helm upgrade --install agents-sandbox-manager openkruise/agents-sandbox-manager \
-n sandbox-system \
--set enableTLS=true \
--set e2b.domain=<your-domain> \
--set e2b.adminApiKey=<your-api-key> \
--set ingress.className=<your-ingress-class>
This creates the Certificate sandbox-manager-ingress-cert, stored in the Secret sandbox-manager-tls
(ingress.certSecretName) that the Ingress already references in its spec.tls block. The certificate covers
api.<domain>, *.<domain>, and <domain>; for multiple domains, add
--set e2b.extraDomains={example2.com} instead of editing dnsNames by hand.
Leaf certificates are issued for 90 days (tls.certDuration: 2160h) and renewed 15 days before expiry
(tls.certRenewBefore: 360h); cert-manager renews them automatically, so no manual rotation is required.
enableTLS=true alone only provisions the ingress certificate. Runtime mTLS, peer mTLS, and the EPE certificate are
independent opt-in switches â see
TLS (cert-manager / trust-manager).
Step 3: Verify Certificate Statusâ
Check if certificates are created and issued correctly:
kubectl get certificates -n sandbox-system
kubectl describe certificate sandbox-manager-ingress-cert -n sandbox-system
kubectl describe secret sandbox-manager-tls -n sandbox-system
Check Ingress status:
kubectl get ingress sandbox-manager -n sandbox-system
kubectl describe ingress sandbox-manager -n sandbox-system
Step 4: Configure Client Trustâ
Since you are using self-signed certificates, clients need to trust the root CA certificate.
4.1 Obtain CA Certificateâ
kubectl get secret sandbox-ca-key-pair -n sandbox-system -o jsonpath='{.data.tls\.crt}' | base64 -d > ca.crt
4.2 Configure Clientâ
Clients need to set the environment variable SSL_CERT_FILE to the path of the obtained CA certificate:
export SSL_CERT_FILE=/path/to/ca.crt