You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,3 +5,7 @@ Instructions for AI coding agents working on this repository.
5
5
## Release Notes
6
6
7
7
When making changes, check whether the change warrants a release note by reviewing the guidelines in `release-notes/README.md`. If it does, create a release note file in `release-notes/unreleased/` as part of the same change.
8
+
9
+
## Trusted CA Certs Init Container
10
+
11
+
The trusted CA certs feature (`spec.security.trustedCaCerts`) uses an init container that reads the system CA bundle from `/etc/ssl/certs/ca-certificates.crt` (Debian/Alpine path). If the Restate server base image is changed to a different distro (e.g. RHEL uses `/etc/pki/tls/certs/ca-bundle.crt`), the `SYSTEM_CA_BUNDLE` constant in `src/controllers/restatecluster/reconcilers/compute.rs` must be updated.
-`awsPodIdentityAssociationCluster` - Enables EKS Pod Identity support
263
263
-`gcpWorkloadIdentity` - Enables GCP Workload Identity via Config Connector
264
-
-`canaryImage` - Container image for canary jobs (default: `busybox:uclibc`); must provide `grep` and `wget`
264
+
-`canaryImage` - Container image for canary jobs and the trusted CA certs init container (default: `busybox:uclibc`); must provide`cat`,`grep` and `wget`
265
265
-`operatorNamespace` - Namespace where operator runs
266
266
-`operatorLabelName/Value` - Labels for network policy selectors
Copy file name to clipboardExpand all lines: README.md
+28-2Lines changed: 28 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -165,6 +165,7 @@ This feature is particularly useful for Raft-based metadata clusters where manua
165
165
| `awsPodIdentityAssociationRoleArn` | `string` | **Use this to grant your Restate cluster fine-grained access to other AWS resources (like S3) without managing static credentials.** Creates a `PodIdentityAssociation` to grant the cluster an IAM role. Requires the ACK EKS controller. |
166
166
| `awsPodSecurityGroups` | `array` | **Use this to isolate your Restate cluster within specific AWS Security Groups for enhanced network control and auditing.** Creates a `SecurityGroupPolicy` to place pods into these security groups. Requires the Security Groups for Pods CRD. |
167
167
| `requestSigningPrivateKey` | `object` | Configures a private key to sign outbound requests from this cluster. Can be sourced from a `secret` or a CSI `secretProvider`. See details below. |
168
+
| `trustedCaCerts` | `array` | Optional list of Secrets containing trusted CA certificates. Each cert is appended to the system CA bundle via an init container. See details below. |
168
169
169
170
---
170
171
@@ -193,6 +194,30 @@ This feature is particularly useful for Raft-based metadata clusters where manua
193
194
194
195
---
195
196
197
+
#### `spec.security.trustedCaCerts`
198
+
199
+
Use this to trust custom CA certificates (e.g. for calling SDK services behind an internal load balancer with a private certificate, or for object store access via a private CA) without building a custom Restate image.
200
+
The operator adds an init container that concatenates the system CA bundle with your custom certificates, and sets `SSL_CERT_FILE` to point to the combined bundle.
201
+
202
+
Each entry references a Kubernetes Secret:
203
+
204
+
| Field | Type | Description |
205
+
|---|---|---|
206
+
| `secretName` | `string` | **Required**. Name of the Secret containing the CA certificate. |
207
+
| `key` | `string` | **Required**. Key within the Secret that contains the PEM-encoded certificate. |
208
+
209
+
**Example:**
210
+
211
+
```yaml
212
+
spec:
213
+
security:
214
+
trustedCaCerts:
215
+
- secretName: internal-ca
216
+
key: ca.pem
217
+
```
218
+
219
+
---
220
+
196
221
#### `spec.config`
197
222
198
223
This field allows you to provide a TOML-encoded configuration string for the Restate server. This maps directly to the Restate server's configuration file. You can use this to configure aspects like roles, metadata storage, snapshotting, and more.
@@ -645,7 +670,8 @@ the `RestateCluster` spec.
645
670
### Canary Image
646
671
647
672
Both EKS Pod Identity and GCP Workload Identity use a canary job to validate that credentials are available before
648
-
starting the Restate cluster. By default, this uses the `busybox:uclibc` image from Docker Hub. In environments where
673
+
starting the Restate cluster. The trusted CA certs feature also uses this image for its init container.
674
+
By default, this uses the `busybox:uclibc` image from Docker Hub. In environments where
649
675
nodes cannot pull from Docker Hub (e.g. air-gapped or restricted registries), you can override this with the
650
676
`canaryImage` Helm value:
651
677
@@ -661,7 +687,7 @@ docker tag busybox:uclibc my-private-registry.example.com/busybox:uclibc
You can now configure custom trusted CA certificates for RestateCluster via `spec.security.trustedCaCerts`.
4
+
This is useful when Restate needs to trust internal CAs, for example when accessing an object store with a private certificate authority.
5
+
6
+
The operator adds an init container that concatenates the system CA bundle with your custom certificates into a single PEM file,
7
+
and sets `SSL_CERT_FILE` on the Restate container to point to the combined bundle. Changing the Secret references (name or key) triggers a pod rollout.
0 commit comments