Skip to content

Commit dc1f42e

Browse files
ktdreyerclaude
andauthored
document how to mount a custom CA bundle (#1250)
## Summary - Adds `docs/src/content/docs/guides/custom-ca-bundle.md` - Explains the OpenShift CA injection approach: annotate a `trusted-ca-bundle` ConfigMap and mount it over `/etc/pki/tls/certs/ca-bundle.crt` in the backend pod - Covers the manual ConfigMap option for non-OpenShift Kubernetes - Includes a support status table noting that runner pod support is pending #1247 and #1038 ## Test plan - [ ] Verify the doc renders correctly in the Astro docs site - [ ] Confirm all links to #1247 and #1038 resolve Closes #1248 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added guide for mounting a custom CA bundle with detailed instructions for OpenShift and Kubernetes. Includes configuration methods for trusting private and corporate certificate authorities, plus a support status table. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 81c601f commit dc1f42e

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
title: Mounting a Custom CA Bundle
3+
description: How to configure Ambient to trust certificates from a private or corporate CA
4+
---
5+
6+
By default, Ambient components only trust certificates signed by the public CAs baked into the base container image. If your deployment connects to services that use a private or corporate CA — for example, an internal Git host — you need to provide that CA bundle to the relevant components.
7+
8+
## How it works
9+
10+
Ambient reads the system CA bundle at `/etc/pki/tls/certs/ca-bundle.crt` inside each container. Replacing or augmenting that file with your CA certificates causes all outbound TLS connections to trust those CAs automatically — no code changes or custom environment variables needed.
11+
12+
## On OpenShift: CA bundle injection
13+
14+
OpenShift can automatically populate a ConfigMap with the cluster's full trusted CA bundle (including any custom CAs configured via the cluster proxy). To use this:
15+
16+
**1. Create the ConfigMap in each relevant namespace**
17+
18+
Apply the following manifest, changing `namespace` to match your deployment:
19+
20+
```yaml
21+
kind: ConfigMap
22+
apiVersion: v1
23+
metadata:
24+
name: trusted-ca-bundle
25+
namespace: <your-namespace>
26+
labels:
27+
config.openshift.io/inject-trusted-cabundle: "true"
28+
data: {}
29+
```
30+
31+
Leave `data: {}` empty — OpenShift's CA bundle injector will populate the `ca-bundle.crt` key automatically.
32+
33+
**2. Mount it into the backend Deployment**
34+
35+
Patch your backend `Deployment` to mount the ConfigMap over the system CA path:
36+
37+
```yaml
38+
spec:
39+
template:
40+
spec:
41+
volumes:
42+
- name: trusted-ca-bundle
43+
configMap:
44+
name: trusted-ca-bundle
45+
containers:
46+
- name: backend-api
47+
volumeMounts:
48+
- name: trusted-ca-bundle
49+
mountPath: /etc/pki/tls/certs/ca-bundle.crt
50+
subPath: ca-bundle.crt
51+
readOnly: true
52+
```
53+
54+
**3. Verify**
55+
56+
After the pod restarts, confirm it can connect to your internal service:
57+
58+
```bash
59+
kubectl exec deployment/backend-api -- curl -I https://your-internal-host
60+
```
61+
62+
## On other Kubernetes distributions
63+
64+
If you are not using OpenShift's CA injector, create the ConfigMap yourself with the PEM-encoded CA certificate(s):
65+
66+
```yaml
67+
kind: ConfigMap
68+
apiVersion: v1
69+
metadata:
70+
name: trusted-ca-bundle
71+
namespace: <your-namespace>
72+
data:
73+
ca-bundle.crt: |
74+
-----BEGIN CERTIFICATE-----
75+
<your CA certificate here>
76+
-----END CERTIFICATE-----
77+
```
78+
79+
Then apply the same volume mount as above.
80+
81+
## Current support status
82+
83+
| Component | Custom CA support |
84+
|-----------|-------------------|
85+
| `backend-api` | Supported — mount the ConfigMap as shown above |
86+
| Runner pods | Pending — see [#1247](https://github.com/ambient-code/platform/issues/1247) and [#1038](https://github.com/ambient-code/platform/issues/1038) |
87+
88+
Runner pods are created dynamically by the agentic-operator for each session. Until #1247 is resolved, the operator does not mount the ConfigMap into runner pods, so runners cannot connect to services that require a custom CA.

0 commit comments

Comments
 (0)