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
{{ message }}
Repository navigation
Commit 356e51a
Browse filesBrowse the repository at this point in the historyBrowse files
feat(chart): opt in to shared control plane and CAS client endpoints
Add useSharedEndpoints, an opt-in chart flag that defaults to false,
consistent with the chainloop-ee chart. Enabling it moves the control
plane CAS connection to the shared CAS Service and the CLI addresses in
the installation notes to the shared ingress hostnames.
Legacy serviceAPI and ingressAPI settings remain functional and are
marked deprecated. Document the single-port endpoints, available since
v1.126.0 (chart 1.469.0), and the migration in the chart README.
Assisted-by: Claude Code
Signed-off-by: Miguel Martinez Trivino <miguel@chainloop.dev>
Chainloop-Trace-Sessions: d94c7fb6-8aa3-404c-aad0-7496f9dea754
Copy file name to clipboardExpand all lines: deployment/chainloop/README.md
+38-33Lines changed: 38 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -241,6 +241,8 @@ or as shown before, provide them as imperative inputs during Helm Install/Upgrad
241
241
242
242
### Enable a custom domain with TLS
243
243
244
+
Since Chainloop v1.126.0 (chart version 1.469.0), the control plane and the Artifact CAS each serve native gRPC and HTTP on one port, exposed through the shared ingress (`controlplane.ingress` and `cas.ingress`). The separate gRPC-only endpoints (`serviceAPI` and `ingressAPI`) are deprecated but remain available. See [Opt in to shared client endpoints](#opt-in-to-shared-client-endpoints).
245
+
244
246
The control plane ingress serves HTTP, gRPC-Web, and native gRPC on the same hostname.
245
247
Its HTTP server routes each request, so these protocols can share an upstream HTTP/2 connection.
246
248
The existing gRPC ingress stays available. Existing clients can keep their current endpoints.
@@ -263,7 +265,7 @@ cas:
263
265
264
266
With `tls: true`, configure a certificate source — the cert-manager issuer annotation above, or a pre-created Secret named `cas.example.com-tls` — so the rendered Ingress references a Secret that exists.
265
267
266
-
`cas.ingress.enabled`defaults to `false`, so a setup that only copies the documented `cas.ingressAPI` block leaves the shared hostname disabled. Retain `cas.ingressAPI` only while the legacy gRPC endpoint is also required. `cas.serviceAPI`, and the control plane's connection to the legacy CAS endpoint keep their existing settings. CAS adds no gRPC-Web or Connect support. Deployed-controller qualification and the full streaming-performance evidence still need work. See the [experiment instructions](../../app/artifact-cas/README.md#shared-endpoint).
268
+
`cas.ingress.enabled`defaults to `false`, so a setup that only copies the documented `cas.ingressAPI` block leaves the shared hostname disabled. Retain `cas.ingressAPI` only while the legacy gRPC endpoint is also required. `cas.serviceAPI` keeps its existing settings. The control plane connects to the legacy CAS endpoint unless `useSharedEndpoints` is enabled. CAS adds no gRPC-Web or Connect support. Deployed-controller qualification and the full streaming-performance evidence still need work. See the [experiment instructions](../../app/artifact-cas/README.md#shared-endpoint).
267
269
268
270
The chart configures HTTP/2 upstream traffic for these controllers:
269
271
@@ -299,72 +301,74 @@ The NGINX gRPC module path supports the shared endpoint without path or content-
299
301
The regression suite checks that path with NGINX Open Source. It does not certify every controller or NGINX Plus release.
300
302
See the [F5 annotation reference](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-annotations/) for controller requirements.
301
303
302
-
Enable the shared control plane ingress and the existing gRPC ingresses as needed.
303
-
304
304
See below an example of a `values.yaml` override
305
305
306
306
```yaml
307
+
useSharedEndpoints: true
308
+
307
309
controlplane:
308
310
ingress:
309
311
enabled: true
310
312
hostname: cp.chainloop.dev
311
313
312
-
ingressAPI:
313
-
enabled: true
314
-
hostname: api.cp.chainloop.dev
315
-
316
314
cas:
317
-
ingressAPI:
318
-
enabled: true
319
-
hostname: api.cas.chainloop.dev
315
+
ingress:
316
+
enabled: true
317
+
hostname: cas.chainloop.dev
320
318
```
321
319
322
320
A complete setup that uses
323
321
324
322
- [NGINX as ingress Controller](https://kubernetes.github.io/ingress-nginx)
325
323
- [cert-manager](https://cert-manager.io/) as TLS provider
326
324
327
-
would look like
325
+
would look like the following. The chart already sets the gRPC backend protocol and the CAS upload body-size annotations on the shared ingresses.
Remember, once you have set up your domain, make sure you use the [CLI pointing](#configure-chainloop-cli-to-point-to-your-instance) to it instead of the defaults.
367
351
352
+
#### Opt in to shared client endpoints
353
+
354
+
The chart keeps the existing client endpoint selection by default. Enable `useSharedEndpoints` to move native gRPC clients to the shared HTTP endpoints:
355
+
356
+
```yaml
357
+
useSharedEndpoints: true
358
+
```
359
+
360
+
This flag switches the control plane CAS client to the shared CAS Service. It also changes the CLI addresses in the installation notes to the shared ingress hostnames. With the examples above, the CLI uses `cp.chainloop.dev:443` and `cas.chainloop.dev:443`.
361
+
362
+
The separate control plane and CAS `ingressAPI` and `serviceAPI` settings are deprecated. They remain functional in this release. The flag changes client selection, not endpoint exposure. Removal belongs to a later release after existing clients migrate.
363
+
364
+
An installed CLI retains its saved addresses. Reconfigure it explicitly when migrating:
365
+
366
+
```bash
367
+
chainloop config save --control-plane cp.chainloop.dev:443 --artifact-cas cas.chainloop.dev:443
368
+
```
369
+
370
+
Set `useSharedEndpoints: false` to restore the previous client endpoint selection. Reconfigure installed CLIs separately if they need to return to the legacy addresses.
371
+
368
372
### Connect to an external PostgreSQL database
369
373
370
374
```yaml
@@ -581,6 +585,7 @@ Once done, you can access with [two predefined users](https://github.com/chainlo
581
585
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` |
582
586
| `global.compatibility.openshift.adaptSecurityContext` | Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) | `auto` |
583
587
| `development` | Deploys Chainloop pre-configured FOR DEVELOPMENT ONLY. It includes a Vault instance in development mode and pre-configured authentication certificates and passphrases | `false` |
588
+
| `useSharedEndpoints` | Opt in to shared control plane and CAS HTTP endpoints for native gRPC clients and the CLI addresses in the installation notes. Legacy endpoints remain available. | `false` |
584
589
585
590
### Common parameters
586
591
@@ -697,7 +702,7 @@ Once done, you can access with [two predefined users](https://github.com/chainlo
697
702
| `controlplane.service.extraPorts` | Extra ports to expose in controlplane service (normally used with the `sidecars` value) | `[]` |
698
703
| `controlplane.service.sessionAffinity` | Control where client requests go, to the same pod or round-robin | `None` |
699
704
| `controlplane.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` |
700
-
| `controlplane.serviceAPI.type` | Service type | `ClusterIP` |
705
+
| `controlplane.serviceAPI.type` | Deprecated gRPC-only Service type. Use the shared service with useSharedEndpoints enabled. | `ClusterIP` |
701
706
| `controlplane.serviceAPI.ports.http` | controlplane service HTTP port | `80` |
702
707
| `controlplane.serviceAPI.ports.https` | controlplane service HTTPS port | `443` |
703
708
| `controlplane.serviceAPI.nodePorts.http` | Node port for HTTP | `""` |
@@ -723,7 +728,7 @@ Once done, you can access with [two predefined users](https://github.com/chainlo
723
728
| `controlplane.ingress.extraTls` | TLS configuration for additional hostname(s) to be covered with this ingress record | `[]` |
0 commit comments