Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
94b614d
docs: add proxy certificate instructions for containerized deployments
the-gigi Jan 22, 2026
61a9e6d
docs: address AI librarian style feedback for proxy certificates
the-gigi Jan 26, 2026
f321040
[docs] add proxy certificate note to self-hosted overview
the-gigi Jan 26, 2026
8208a5b
docs: address additional AI style comments
the-gigi Jan 26, 2026
599c74e
docs: more AI librarian comments
the-gigi Jan 26, 2026
addf428
Merge branch 'dev' into gigi/dxm-431-instructions-for-adding-root-cer…
the-gigi-apollo Jan 28, 2026
b0d6e9d
updated response caching docs and addressed discrepancies (#8794)
the-gigi-apollo Jan 28, 2026
a686a76
Start v2.11.0 PR
abernix Jan 22, 2026
71b2df1
prep release: v2.11.0-rc.0
abernix Jan 22, 2026
5712441
Changelog Editorial before final prep.
abernix Jan 27, 2026
b694344
prep release: v2.11.0
abernix Jan 27, 2026
09e3849
chore: Use correct GitHub tag for contributor (#8837)
abernix Jan 28, 2026
c4dd87f
fix(docs): entity cache invalidation (#8838)
aaronArinder Jan 28, 2026
612676a
Add documentation and tests for dollar sign escaping in config (#8841)
robert113289 Jan 28, 2026
1677616
Log warning instead of returning error when non-utf8 header passed th…
rohan-b99 Jan 29, 2026
08f032e
Clarifying discontinuation notice for cloud routers (#8842)
pragl Jan 29, 2026
ff027e6
feat(composition): add DNF conjunction argument merge strategy (#8817)
dariuszkuc Jan 30, 2026
bc70d2b
fix(composition): Don't skip optional args in witness operations for …
sachindshinde Jan 30, 2026
f150534
Update documentation to match APM template changes (#8843)
SharkBaitDLS Feb 2, 2026
011a203
fix(composition): restrict usage of auth directives on interfaces (#8…
dariuszkuc Feb 2, 2026
0746aba
chore(deps): update rust crate tower-http to v0.6.8 (#8751)
renovate[bot] Feb 2, 2026
5d2eb86
fix(composition): partial revert removing single element list to non-…
briannafugate408 Feb 2, 2026
0ed931a
Merge duplicate coprocessor documentation (#8844)
Copilot Feb 3, 2026
23200e4
chore(deps): update ghcr.io/apollographql/ci-utility-docker-images/ap…
renovate[bot] Feb 3, 2026
51eae31
fix(tests): split stdout/stderr into separate channels (#8839)
aaronArinder Feb 3, 2026
81f5595
fix(compliance): bytes updated to 1.11.1 (#8857)
aaronArinder Feb 3, 2026
385c3e7
Fix Router's validation of ObjectValue variables (#8821)
conwuegb Feb 3, 2026
82ae888
Docs: Safelisting with PQ moving content (#8853)
mabuyo Feb 3, 2026
c7ce30a
chore: update codeowners to reflect new team names (#8852)
dariuszkuc Feb 3, 2026
ef38f88
fix: demand control actual costs should consider each subgraph fetch …
carodewig Feb 3, 2026
51217e2
[docs] add proxy certificate note to self-hosted overview
the-gigi Jan 26, 2026
ae1f6d1
Start v2.11.0 PR
abernix Jan 22, 2026
495cf90
Merge branch 'dev' into gigi/dxm-431-instructions-for-adding-root-cer…
the-gigi-apollo Feb 4, 2026
6591a71
[docs] apply AI librarian style feedback to proxy certificates
the-gigi Feb 4, 2026
e507efe
[docs] fix title casing in proxy certificates page
the-gigi Feb 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .changesets/docs_proxy_certificates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
### Add documentation for adding proxy root certificates to router containers ([PR #8823](https://github.com/apollographql/router/pull/8823))

Adds documentation explaining how to add corporate proxy root certificates to Apollo Router containers. This is necessary for enterprise environments where TLS inspection proxies intercept HTTPS traffic.

The new documentation includes:
- Instructions for Docker deployments (runtime mount and custom image approaches)
- Instructions for Kubernetes deployments (init container and custom image approaches)
- Guidance for cloud deployments (AWS, Azure, GCP)
- Links added to all containerization deployment guides

By [@the-gigi-apollo](https://github.com/the-gigi-apollo) in https://github.com/apollographql/router/pull/8823
6 changes: 6 additions & 0 deletions docs/source/routing/self-hosted/containerization/aws.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@
- Set up an Elastic Cloud Registry and push your router image to it.
- Create an ECS task definition for your router and deploy it.

<Note>

If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates).

Check notice on line 16 in docs/source/routing/self-hosted/containerization/aws.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/aws.mdx#L16

The note should be framed relative to the reader using 'your' instead of 'our' or 'the' where applicable, though this line is already reader-centric. However, ensure the link text is a rich noun phrase. The current link text is acceptable, but ensure the surrounding punctuation follows the two-newline rule for admonitions. ```suggestion If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates). ```

</Note>

## Prerequisites

Before you start:
Expand Down
6 changes: 6 additions & 0 deletions docs/source/routing/self-hosted/containerization/azure.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@
- Set up an Azure Container Registry and push your router image to it.
- Create and deploy an Azure Container App for your router.

<Note>

If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates).

Check notice on line 16 in docs/source/routing/self-hosted/containerization/azure.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/azure.mdx#L16

The line is correct, but ensure the link text is a rich noun or verb phrase. The current link text is acceptable, but ensure the destination is clear. ```suggestion If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates). ```

</Note>

## Prerequisites

Before you start:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@

<Note>This container image only contains the router. Apollo recommends using the [Apollo Runtime container](docker.mdx), which contains all Apollo runtime services.</Note>

<Note>

If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates).

Check notice on line 27 in docs/source/routing/self-hosted/containerization/docker-router-only.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/docker-router-only.mdx#L27

The sentence is clear and follows the imperative, but ensure the link text is a rich noun phrase. The current phrasing is acceptable, but avoid starting sentences with 'If' when an imperative can be used directly. However, since this is a conditional note, the structure is valid. ```suggestion If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates). ```

</Note>

## Basic example running router in Docker

To run the router, set the [`APOLLO_GRAPH_REF`](/graphos/routing/configuration/envvars#apollo_graph_ref) and [`APOLLO_KEY`](/graphos/routing/configuration/envvars#apollo_key) environment variables in your Docker container to your graph ref and API key.
Expand Down Expand Up @@ -198,4 +204,4 @@
build_docker_image.sh -d v0.9.1
```

The example uses [debian:bookwork-slim image](https://hub.docker.com/_/debian/) for the final image build. Feel free to modify the script to use images which better suit your own needs, but be careful if using the `-d` flag because it makes the assumption that there is a `heaptrack` package available to install.
The example uses the [debian:bookworm-slim image](https://hub.docker.com/_/debian/) for the final image build. Modify the script to use images that better suit your needs. When you use the `-d` flag, ensure a `heaptrack` package is available to install.

Check notice on line 207 in docs/source/routing/self-hosted/containerization/docker-router-only.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/docker-router-only.mdx#L207

Use code font for package names and include the appropriate article before the component name. ```suggestion The example uses the [debian:bookworm-slim image](https://hub.docker.com/_/debian/) for the final image build. Modify the script to use images that better suit your needs. When you use the `-d` flag, ensure the `heaptrack` package is available to install. ```
6 changes: 6 additions & 0 deletions docs/source/routing/self-hosted/containerization/docker.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@

<ElasticNotice />

<Note>

If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates).

Check notice on line 33 in docs/source/routing/self-hosted/containerization/docker.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/docker.mdx#L33

The content is clear and follows the reader-centric framing, but ensure the link text remains descriptive. The current phrasing is acceptable, but avoid using 'we' or 'our' if this were to be modified further. ```suggestion If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates). ```

</Note>

## Quick start

Run the following command, replacing the `APOLLO_GRAPH_REF` and `APOLLO_KEY` values with your own.
Expand Down
6 changes: 6 additions & 0 deletions docs/source/routing/self-hosted/containerization/gcp.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@
- Set up a container registry and push your router image to it.
- Create a Cloud Run service and configure it to deploy your router.

<Note>

If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates).

Check notice on line 16 in docs/source/routing/self-hosted/containerization/gcp.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/gcp.mdx#L16

The current line is correct, but ensure you are using American English and imperative verbs. This line already follows those rules, however, ensure the link text is a rich noun or verb phrase. ```suggestion If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](proxy-certificates). ```

</Note>

## Prerequisites

Before you start:
Expand Down
4 changes: 4 additions & 0 deletions docs/source/routing/self-hosted/containerization/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,7 @@
- [Azure using Azure Container Apps](/graphos/routing/self-hosted/containerization/azure)
- [GCP using Google Cloud Run](/graphos/routing/self-hosted/containerization/gcp)
- [Kubernetes](/router/containerization/kubernetes/)

## Additional configuration

Check notice on line 33 in docs/source/routing/self-hosted/containerization/index.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/index.mdx#L33

Use sentence casing for headings and favor gerunds for conceptual overview sections. ```suggestion ## Configure additional settings ```

- [Proxy certificates](/graphos/routing/self-hosted/containerization/proxy-certificates): Add your proxy's root certificate for TLS inspection environments

Check notice on line 35 in docs/source/routing/self-hosted/containerization/index.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/index.mdx#L35

Include ending punctuation for list items that are complete sentences. ```suggestion - [Proxy certificates](/graphos/routing/self-hosted/containerization/proxy-certificates): Add your proxy's root certificate for TLS inspection environments. ```
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@

<ElasticNotice />

<Note>

If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](/graphos/routing/self-hosted/containerization/proxy-certificates).

Check warning on line 32 in docs/source/routing/self-hosted/containerization/kubernetes/quickstart.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/kubernetes/quickstart.mdx#L32

The note content must be preceded by two newlines to ensure proper rendering within the admonition component. ```suggestion If your organization uses a corporate proxy with TLS inspection, [add your proxy's root certificate to the container](/graphos/routing/self-hosted/containerization/proxy-certificates). ```

</Note>

This guide uses Helm charts to deploy a self-hosted router in Kubernetes. Using Helm is suitable for quick deployments, testing, or when you prefer direct Helm chart management.

This guide shows how to:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
---
title: Add Proxy Certificates to Router Containers

Check warning on line 2 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L2

Titles must be 50 characters or less. ```suggestion title: Add Proxy Certificates to Router ```
subtitle: Configure trust for your proxy's root certificate

Check warning on line 3 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L3

Subtitles for tutorials must start with an imperative verb other than 'learn'. ```suggestion Add your proxy's root certificate to the router's trust store ```
description: Add your corporate proxy's root certificate to Apollo Router containers to enable TLS inspection in enterprise environments.

Check warning on line 4 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L4

The description is missing the required 'Apollo' prefix for the product name 'Apollo Router'. Always use the full product name without possessives or articles unless they are part of the name. ```suggestion Add your corporate proxy's root certificate to Apollo Router containers to enable TLS inspection in enterprise environments. ```
---

import ElasticNotice from '../../../../shared/elastic-notice.mdx';

If your organization uses a corporate proxy that performs TLS inspection (SSL inspection or HTTPS interception), add the proxy's root certificate to your router container. Without this certificate, Apollo Router can't establish secure connections to GraphOS or your subgraphs.

Check notice on line 9 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L9

Use dictionary-valid contractions like 'cannot' or 'can't' is acceptable, but 'can't' is often less formal than 'cannot' in technical documentation. However, the style guide specifically encourages contractions for readability. Actually, 'can't' is already used. The issue is the product name usage: 'Apollo Router' should be treated as a proper name without 'the' in front of it, which is correctly handled here. However, 'the router' is used later. Let's ensure we use 'Apollo Router' consistently or 'the router' when referring to the specific instance. The main violation is 'can't' vs 'cannot' is fine, but 'can't' is preferred. Wait, 'Apollo Router' is used as a subject. The line is actually mostly compliant, but 'can't' is a contraction. Let's check 'can't'. The guide says 'Use dictionary-valid contractions wherever applicable.' So 'can't' is good. One minor fix: 'Apollo Router' is a product name, ensure it doesn't have 'the' (it doesn't). Let's look at 'your router container'—this is a component, so 'your' is fine. The only improvement is to ensure we don't use 'can't' if it feels too informal, but the guide says to use them. Let's check for 'since/because'. No. 'If' is fine. 'add' is imperative. The line is good, but 'Apollo Router' is used. Let's check if 'Apollo Router' is a standalone product name. Yes. 'Apollo Router can't' is correct. No change needed based on voice. Wait, 'can't' is fine. Let's look at the very first word. 'If' is fine. Actually, the line is compliant. ```suggestion If your organization uses a corporate proxy that performs TLS inspection (SSL inspection or HTTPS interception), add the proxy's root certificate to your router container. Without this certificate, Apollo Router cannot establish secure connections to GraphOS or your subgraphs. ```

<ElasticNotice />

## Understanding proxy certificate requirements

Check notice on line 13 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L13

Use gerunds for headings in conceptual overview pages to maintain consistency. ```suggestion ## Understanding proxy certificate requirements ```

Corporate proxies often intercept HTTPS traffic for security monitoring. They decrypt and re-encrypt traffic using their own certificate. Apollo Router must have the proxy's root certificate authority (CA) certificate installed in its trust store to trust these connections.

Check warning on line 15 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L15

Avoid using 'must' to describe requirements. Use 'requires' or the imperative voice to maintain an authoritative and direct tone. ```suggestion Corporate proxies often intercept HTTPS traffic for security monitoring. They decrypt and re-encrypt traffic using their own certificate. Apollo Router requires the proxy's root certificate authority (CA) certificate in its trust store to trust these connections. ```

A missing proxy certificate causes these common symptoms:

Check notice on line 17 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L17

Avoid using "common" as it is a filler word that doesn't add specific value to the description of the symptoms. ```suggestion A missing proxy certificate causes these symptoms: ```
- Connection failures to Apollo Uplink

Check notice on line 18 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L18

Include ending punctuation for list items that are complete sentences. ```suggestion - Connection failures to Apollo Uplink. ```
- TLS handshake errors when fetching the supergraph schema

Check notice on line 19 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L19

Frame content relative to the reader by using "you" or the imperative. ```suggestion - TLS handshake errors when you fetch the supergraph schema ```
- Certificate verification failures when connecting to subgraphs

Check notice on line 20 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L20

Include ending punctuation for list items that are complete sentences. ```suggestion - Certificate verification failures when connecting to subgraphs. ```

## Adding certificates to Docker containers

Check warning on line 22 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L22

Use imperative verbs for tutorial headings. ```suggestion ## Add certificates to Docker containers ```

Apollo Router container images are based on Debian and use the system CA certificate store at `/etc/ssl/certs/`.

Check warning on line 24 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L24

Do not use 'the' before standalone product names like Apollo Router. ```suggestion Apollo Router container images are based on Debian and use the system CA certificate store at `/etc/ssl/certs/`. ```

### Mounting the certificate at runtime

Check warning on line 26 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L26

Use an imperative verb for tutorial headings to make them actionable. ```suggestion ### Mount the certificate at runtime ```

Mount your proxy's root certificate and update the CA store when you start the container.

Check notice on line 28 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L28

The sentence is already in the imperative voice and follows the style guide. However, ensure that the product name 'Apollo Router' is used if referring to the specific software, though in this context 'the container' is acceptable. No changes required for grammar or voice. ```suggestion Mount your proxy's root certificate and update the CA store when you start the container. ```

```bash title="Docker"
docker run -p 4000:4000 \
--env APOLLO_GRAPH_REF="<your-graph-ref>" \
--env APOLLO_KEY="<your-graph-api-key>" \
-v /path/to/proxy-ca.crt:/usr/local/share/ca-certificates/proxy-ca.crt:ro \
--user root \
--entrypoint /bin/bash \
ghcr.io/apollographql/router:<router-image-version> \
-c "update-ca-certificates && su -s /bin/bash router -c '/dist/router_wrapper.sh'"
```

### Building a custom image

For production deployments, build a custom image that includes your proxy's root certificate.

```dockerfile title="Dockerfile"
FROM ghcr.io/apollographql/router:<router-image-version>

USER root
COPY proxy-ca.crt /usr/local/share/ca-certificates/proxy-ca.crt
RUN update-ca-certificates
USER router
```

Build and run the custom image.

```bash
docker build -t router-with-proxy-cert .
docker run -p 4000:4000 \
--env APOLLO_GRAPH_REF="<your-graph-ref>" \
--env APOLLO_KEY="<your-graph-api-key>" \
router-with-proxy-cert
```

## Adding certificates in Kubernetes

When deploying with Kubernetes, use a ConfigMap or Secret to provide the certificate and an init container to install it.

### Using an init container

Check warning on line 68 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L68

Use imperative verbs for tutorial headings. ```suggestion ### Use an init container ```

1. Create a ConfigMap with your proxy certificate.

```bash
kubectl create configmap proxy-ca-cert --from-file=proxy-ca.crt=/path/to/proxy-ca.crt
```

2. Configure your deployment to use an init container that installs the certificate.

Check notice on line 76 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L76

The instruction is clear and uses the imperative voice, but ensure the following code block demonstrates the specific configuration steps for the reader. ```suggestion 2. Configure your deployment to use an init container that installs the certificate. ```

```yaml title="values.yaml"
router:
extraVolumes:
- name: proxy-ca-cert
configMap:
name: proxy-ca-cert
- name: ca-certs
emptyDir: {}

extraVolumeMounts:
- name: ca-certs
mountPath: /etc/ssl/certs

initContainers:
- name: install-proxy-cert
image: ghcr.io/apollographql/router:<router-image-version>
command: ["/bin/bash", "-c"]
args:
- |
cp -r /etc/ssl/certs/* /ca-certs/
cp /proxy-cert/proxy-ca.crt /usr/local/share/ca-certificates/
update-ca-certificates
cp -r /etc/ssl/certs/* /ca-certs/
securityContext:
runAsUser: 0
volumeMounts:
- name: proxy-ca-cert
mountPath: /proxy-cert
- name: ca-certs
mountPath: /ca-certs
```

### Building a custom image for Kubernetes

Check warning on line 110 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L110

Use imperative verbs for tutorial headings. ```suggestion ### Build a custom image for Kubernetes ```

Build a custom Docker image with the certificate as described in [Building a custom image](#building-a-custom-image) and reference it in your Helm values.

Check notice on line 112 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L112

The link text 'Building a custom image' is clear, but ensure the surrounding text remains reader-centric and imperative. The current line is acceptable, but avoid vague phrases like 'as described in' if you can link the action directly. ```suggestion Build a custom Docker image with the certificate as described in [Building a custom image](#building-a-custom-image) and reference it in your Helm values. ```

```yaml title="values.yaml"
router:
image:
repository: your-registry/router-with-proxy-cert
tag: <your-tag>
```

## Adding certificates for cloud deployments

For cloud deployments (AWS ECS, Azure Container Apps, GCP Cloud Run), build a custom Docker image that includes your proxy's root certificate, then push that image to your cloud provider's container registry.

Follow the [custom image instructions](#building-a-custom-image), then push the image to your registry before you deploy.

Check notice on line 125 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L125

The instruction is clear, but ensure you use the imperative voice for all steps. The current phrasing is acceptable, but avoid 'you' if the action can be framed more directly. ```suggestion Follow the [custom image instructions](#building-a-custom-image), then push the image to your registry before you deploy. ```

## Verifying the certificate installation

Check warning on line 127 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L127

Use imperative verbs for tutorial headings. ```suggestion ## Verify the certificate installation ```

Check the container's CA store:

Check notice on line 129 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L129

Use an imperative verb that describes the outcome or action more precisely for a tutorial heading or instruction. ```suggestion Verify the container's CA store: ```

```bash
docker run --entrypoint /bin/bash -it router-with-proxy-cert -c "ls /etc/ssl/certs | grep proxy"
```

Test connectivity to a service through the proxy:

Check notice on line 135 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L135

Use a period instead of a colon to introduce a code block. ```suggestion Test connectivity to a service through the proxy. ```

```bash
docker run --entrypoint /bin/bash -it router-with-proxy-cert -c "curl -v https://uplink.api.apollographql.com/"
```

## Related Topics

Check warning on line 141 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L141

Use sentence casing for all headings. ```suggestion ## Related topics ```

- [TLS configuration](/graphos/routing/security/tls): Configure TLS settings for Apollo Router
- [Docker deployment](/graphos/routing/self-hosted/containerization/docker): Deploy Apollo Runtime using Docker
- [Kubernetes deployment](/graphos/routing/self-hosted/containerization/kubernetes/quickstart): Deploy Apollo Router using Helm

Check warning on line 145 in docs/source/routing/self-hosted/containerization/proxy-certificates.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/containerization/proxy-certificates.mdx#L145

The previous line incorrectly refers to 'Apollo Runtime' instead of 'Apollo Router'. Ensure consistency by using the correct product name 'Apollo Router' across all related topics. ```suggestion - [Kubernetes deployment](/graphos/routing/self-hosted/containerization/kubernetes/quickstart): Deploy Apollo Router using Helm ```
6 changes: 6 additions & 0 deletions docs/source/routing/self-hosted/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@

</Note>

<Note>

If your organization uses a transparent or egress proxy (such as Zscaler or Netskope), [add your proxy's root CA certificate to your container image](/graphos/routing/self-hosted/containerization/proxy-certificates). Without it, the router can't establish TLS connections to Apollo Uplink, resulting in certificate validation errors or "invalid license" failures.

Check notice on line 35 in docs/source/routing/self-hosted/index.mdx

View check run for this annotation

Apollo Librarian / AI Style Review

docs/source/routing/self-hosted/index.mdx#L35

Use dictionary-valid contractions like "cannot" or "can't" is generally encouraged, but the style guide specifically recommends negation contractions for readability. However, the word "can't" is already used here; the primary issue is ensuring the tone remains authoritative and helpful. The current sentence is clear, but ensure you avoid "can't" if you want to emphasize the negative, though here it is appropriate. Actually, the line is mostly correct, but ensure the link text is a rich noun phrase. The link text is already descriptive. One minor improvement: use "cannot" instead of "can't" if you want to be more formal, but the guide prefers contractions. Wait, the guide says 'Use dictionary-valid contractions wherever applicable.' so 'can't' is fine. Let's check for 'Apollo' product naming. 'the router' is fine as a component. 'Apollo Uplink' is a product name, no article used. The line is good, but 'can't' is a contraction. Let's look at 'can't' vs 'cannot'. The guide says 'Use dictionary-valid contractions wherever applicable.' so 'can't' is actually preferred. Let's look for other issues. 'resulting in' is present tense. 'invalid license' is in quotes. The guide says 'Do not surround strings in quotes' when using code font, but this is prose. However, 'invalid license' should probably be in code font if it's a literal error message. ```suggestion If your organization uses a transparent or egress proxy (such as Zscaler or Netskope), [add your proxy's root CA certificate to your container image](/graphos/routing/self-hosted/containerization/proxy-certificates). Without it, the router cannot establish TLS connections to Apollo Uplink, resulting in certificate validation errors or "invalid license" failures. ```

</Note>

## Kubernetes

### Apollo GraphOS Operator
Expand Down