Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .tool-versions
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
helm 3.18.2
2 changes: 1 addition & 1 deletion charts/posit-chronicle/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,5 +260,5 @@ reference page](https://docs.posit.co/chronicle/appendix/library/advanced-server
| serviceAccount.name | string | `""` | Override for the service account name, defaults to fullname |

----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.13.1](https://github.com/norwoodj/helm-docs/releases/v1.13.1)
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

6 changes: 3 additions & 3 deletions charts/rstudio-connect/Chart.lock
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
dependencies:
- name: rstudio-library
repository: https://helm.rstudio.com
version: 0.1.36
digest: sha256:cde061b0b7da43d7adbfcbc8d90e6d466d453dd707d8dad4f702fec6aeea103b
generated: "2026-04-01T12:03:45.783681-05:00"
version: 0.1.37
digest: sha256:43574c2b3fcee11a2ad66364bdb49510315e447caf4a5d829019adf53782f478
generated: "2025-03-23T00:00:00Z"
4 changes: 2 additions & 2 deletions charts/rstudio-connect/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: rstudio-connect
description: Official Helm chart for Posit Connect
version: 0.9.4
version: 0.9.5
apiVersion: v2
appVersion: 2026.04.0
icon: https://raw.githubusercontent.com/rstudio/helm/main/images/posit-icon-fullcolor.svg
Expand All @@ -13,7 +13,7 @@ maintainers:
url: https://github.com/sol-eng
dependencies:
- name: rstudio-library
version: 0.1.36
version: 0.1.37
repository: https://helm.rstudio.com
annotations:
artifacthub.io/images: |
Expand Down
1 change: 1 addition & 0 deletions charts/rstudio-connect/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
lint:
helm lint --strict --set service.name=example --set service.version=0.0.1 -f ./ci/complex-values.yaml .
helm lint --strict --set service.name=example --set service.version=0.0.1 -f ./ci/simple-values.yaml .
helm lint --strict --set service.name=example --set service.version=0.0.1 -f ./lint/gateway-api-values.yaml .
helm lint --strict --set service.name=example --set service.version=0.0.1 -f ./ci/empty-values.yaml .

template:
Expand Down
5 changes: 5 additions & 0 deletions charts/rstudio-connect/NEWS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# Changelog
## 0.9.5

- Document shared Gateway API examples (`examples/gateway-api/aws`, `examples/gateway-api/kgateway`) in the README.
- Add optional Gateway API support (`HTTPRoute` via `gatewayApi` values), independent of `ingress`.

## 0.9.4

Expand Down Expand Up @@ -36,6 +40,7 @@
- Remove deprecated default value `Metrics.Enabled = true`
- Remove legacy Graphite exporter sidecar (`prometheus.legacy`, `prometheusExporter.*`, and `configmap-graphite-exporter.yaml`). The built-in Prometheus `/metrics` endpoint is now the only supported metrics path. Use OpenTelemetry for richer instrumentation.


## 0.8.35

- Add `executionEnvironments` value for [declarative management of execution environments](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/#declarative-management). Unlike `launcher.customRuntimeYaml`, changes take effect on every `helm upgrade` without requiring a pod restart or database reset. Requires Connect version 2026.03.0 or later.
Expand Down
44 changes: 40 additions & 4 deletions charts/rstudio-connect/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Posit Connect

![Version: 0.9.4](https://img.shields.io/badge/Version-0.9.4-informational?style=flat-square) ![AppVersion: 2026.04.0](https://img.shields.io/badge/AppVersion-2026.04.0-informational?style=flat-square)
![Version: 0.9.5](https://img.shields.io/badge/Version-0.9.5-informational?style=flat-square) ![AppVersion: 2026.04.0](https://img.shields.io/badge/AppVersion-2026.04.0-informational?style=flat-square)

#### _Official Helm chart for Posit Connect_

Expand Down Expand Up @@ -30,11 +30,11 @@ To ensure reproducibility in your environment and insulate yourself from future

## Installing the chart

To install the chart with the release name `my-release` at version 0.9.4:
To install the chart with the release name `my-release` at version 0.9.5:

```{.bash}
helm repo add rstudio https://helm.rstudio.com
helm upgrade --install my-release rstudio/rstudio-connect --version=0.9.4
helm upgrade --install my-release rstudio/rstudio-connect --version=0.9.5
```

To explore other chart versions, look at:
Expand Down Expand Up @@ -243,6 +243,37 @@ job pods to reach Connect's embedded OTel collector directly (pod-to-pod).

To override the advertise host, set `CONNECT_OPENTELEMETRY_COLLECTORADVERTISEHOST` explicitly in `pod.env`.

## Gateway API

This chart can optionally create Kubernetes [Gateway API](https://gateway-api.sigs.k8s.io/) `HTTPRoute` resources that point at the chart `Service`. This is controlled with `gatewayApi.enabled` and is **independent** of the built-in `Ingress` (`ingress.enabled`); you may enable one, both, or neither.

**Prerequisites:** Install the Gateway API CRDs in your cluster and provision a `Gateway` (and `GatewayClass`) appropriate for your ingress controller. This chart does not create a `Gateway` resource; set `gatewayApi.parentRefs` to attach each `HTTPRoute` to your existing `Gateway`.

**TLS:** Termination is typically configured on the `Gateway` listener or by your controller, not on `HTTPRoute`. This chart does not mirror `ingress.tls` onto Gateway API resources.

**Cross-namespace parents:** If the `Gateway` lives in another namespace, ensure your controller requirements are met (for example a [`ReferenceGrant`](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.ReferenceGrant)).

Example:

```yaml
gatewayApi:
enabled: true
parentRefs:
- name: contour
namespace: projectcontour
kind: Gateway
group: gateway.networking.k8s.io
hosts:
- host: connect.example.com
paths:
- path: /
pathType: Prefix
```

Path entries use the same shape as `ingress.hosts` paths: a string or an object with `path` and optional `pathType` (`Prefix`, `Exact`, or `ImplementationSpecific`). Each `gatewayApi.hosts` entry becomes one `HTTPRoute`. The backend uses `service.port`, which must be numeric for the Gateway API `backendRef`.

**Examples:** Shared-gateway walkthroughs for [AWS Load Balancer Controller (ALB)](../../examples/gateway-api/aws/README.md) and [KGateway](../../examples/gateway-api/kgateway/README.md) live under `examples/gateway-api/` in this repository.

## General principles

- In most places, we opt to pass Helm values over configmaps. We translate these into the valid `.gcfg` file format
Expand Down Expand Up @@ -300,6 +331,11 @@ The Helm `config` values are converted into the `rstudio-connect.gcfg` service c
| executionEnvironments | list | `[]` (disabled) | Optional list of execution environments to manage declaratively. Requires Connect version 2026.03.0 or later. When set, the chart renders these into a ConfigMap, mounts it into the Connect pod, and sets ExecutionEnvironments.ConfigFilePath in the Connect configuration. Unlike launcher.customRuntimeYaml, changes take effect on every helm upgrade without requiring a pod restart or database reset. |
| extraObjects | list | `[]` | Extra objects to deploy (value evaluated as a template) |
| fullnameOverride | string | `""` | The full name of the release (can be overridden) |
| gatewayApi | object | `{"annotations":{},"enabled":false,"hosts":[],"labels":{},"parentRefs":[]}` | Gateway API (HTTPRoute) resources. Independent of `ingress`; both may be enabled if desired. |
| gatewayApi.annotations | object | `{}` | Annotations for all HTTPRoute resources created by this chart |
| gatewayApi.hosts | list | `[]` | Same shape as `ingress.hosts`. Each entry becomes one HTTPRoute; omit or use empty `paths` to skip an entry. |
| gatewayApi.labels | object | `{}` | Extra labels for all HTTPRoute resources created by this chart |
| gatewayApi.parentRefs | list | `[]` | parentRefs attach HTTPRoutes to an existing Gateway (or other supported parent). Required when `gatewayApi.enabled` is true. [Gateway API parent reference](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.ParentReference) |
| image | object | `{"imagePullPolicy":"IfNotPresent","imagePullSecrets":[],"repository":"ghcr.io/rstudio/rstudio-connect","tag":"","tagPrefix":"ubuntu2204-"}` | Defines the Posit Connect image to deploy |
| image.imagePullPolicy | string | `"IfNotPresent"` | The imagePullPolicy for the main pod image |
| image.imagePullSecrets | list | `[]` | an array of kubernetes secrets for pulling the main pod image from private registries |
Expand Down Expand Up @@ -402,5 +438,5 @@ The Helm `config` values are converted into the `rstudio-connect.gcfg` service c
| versionOverride | string | `""` | A Connect version to override the "tag" for the Posit Connect image and the Content Init image. Necessary until https://github.com/helm/helm/issues/8194 |

----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.13.1](https://github.com/norwoodj/helm-docs/releases/v1.13.1)
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

31 changes: 31 additions & 0 deletions charts/rstudio-connect/README.md.gotmpl
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,37 @@ job pods to reach Connect's embedded OTel collector directly (pod-to-pod).

To override the advertise host, set `CONNECT_OPENTELEMETRY_COLLECTORADVERTISEHOST` explicitly in `pod.env`.

## Gateway API

This chart can optionally create Kubernetes [Gateway API](https://gateway-api.sigs.k8s.io/) `HTTPRoute` resources that point at the chart `Service`. This is controlled with `gatewayApi.enabled` and is **independent** of the built-in `Ingress` (`ingress.enabled`); you may enable one, both, or neither.

**Prerequisites:** Install the Gateway API CRDs in your cluster and provision a `Gateway` (and `GatewayClass`) appropriate for your ingress controller. This chart does not create a `Gateway` resource; set `gatewayApi.parentRefs` to attach each `HTTPRoute` to your existing `Gateway`.

**TLS:** Termination is typically configured on the `Gateway` listener or by your controller, not on `HTTPRoute`. This chart does not mirror `ingress.tls` onto Gateway API resources.

**Cross-namespace parents:** If the `Gateway` lives in another namespace, ensure your controller requirements are met (for example a [`ReferenceGrant`](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.ReferenceGrant)).

Example:

```yaml
gatewayApi:
enabled: true
parentRefs:
- name: contour
namespace: projectcontour
kind: Gateway
group: gateway.networking.k8s.io
hosts:
- host: connect.example.com
paths:
- path: /
pathType: Prefix
```

Path entries use the same shape as `ingress.hosts` paths: a string or an object with `path` and optional `pathType` (`Prefix`, `Exact`, or `ImplementationSpecific`). Each `gatewayApi.hosts` entry becomes one `HTTPRoute`. The backend uses `service.port`, which must be numeric for the Gateway API `backendRef`.

**Examples:** Shared-gateway walkthroughs for [AWS Load Balancer Controller (ALB)](../../examples/gateway-api/aws/README.md) and [KGateway](../../examples/gateway-api/kgateway/README.md) live under `examples/gateway-api/` in this repository.

## General principles

- In most places, we opt to pass Helm values over configmaps. We translate these into the valid `.gcfg` file format
Expand Down
36 changes: 36 additions & 0 deletions charts/rstudio-connect/lint/gateway-api-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
sharedStorage:
create: true
requests:
storage: "1Gi"
license:
key: test
nodePort: 32390
replicas: 1
config:
HTTP:
Listen: :3939
Authentication:
Provider: password
Python:
Enabled: true
Executable: /opt/python/3.6.5/bin/python
'RPackageRepository "CRAN"':
URL: https://packagemanager.rstudio.com/cran/__linux__/bionic/latest
'RPackageRepository "RSPM"':
URL: https://packagemanager.rstudio.com/cran/__linux__/bionic/latest
Server:
Address: http://localhost:3939
DataDir: /var/lib/rstudio-connect
RVersionScanning: false
RVersion:
- /opt/R/3.6.2
gatewayApi:
enabled: true
parentRefs:
- name: example-gateway
kind: Gateway
group: gateway.networking.k8s.io
hosts:
- host: connect.example.com
paths:
- /
37 changes: 37 additions & 0 deletions charts/rstudio-connect/templates/httproute.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{{- if and .Values.gatewayApi.enabled .Values.gatewayApi.hosts -}}
{{- $apiVersion := include "rstudio-library.gateway.apiVersion" . -}}
{{- $fullName := include "rstudio-connect.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- $root := . -}}
{{- range $i, $h := .Values.gatewayApi.hosts }}
{{- if and $h.paths (gt (len $h.paths) 0) }}
---
apiVersion: {{ $apiVersion }}
kind: HTTPRoute
metadata:
name: {{ include "rstudio-library.gateway.httpRouteName" (dict "fullName" $fullName "index" $i) }}
labels:
{{- include "rstudio-connect.labels" $root | nindent 4 }}
{{- with $root.Values.gatewayApi.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with $root.Values.gatewayApi.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
parentRefs:
{{- toYaml $root.Values.gatewayApi.parentRefs | nindent 4 }}
hostnames:
- {{ $h.host | quote }}
rules:
- matches:
{{- range $h.paths }}
- path:
{{- include "rstudio-library.gateway.httpPathMatchBody" (dict "pathData" .) | nindent 12 }}
{{- end }}
backendRefs:
{{- include "rstudio-library.gateway.serviceBackendRef" (dict "svcName" $fullName "svcPort" $svcPort) | nindent 8 }}
{{- end }}
{{- end }}
{{- end }}
84 changes: 84 additions & 0 deletions charts/rstudio-connect/tests/gateway_api_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
suite: Connect Gateway API
templates:
- httproute.yaml
tests:
- it: should not create HTTPRoute when gatewayApi is disabled
template: httproute.yaml
asserts:
- hasDocuments:
count: 0
- it: should not create HTTPRoute when enabled but hosts is empty
template: httproute.yaml
set:
gatewayApi:
enabled: true
parentRefs:
- name: gw
kind: Gateway
group: gateway.networking.k8s.io
hosts: []
asserts:
- hasDocuments:
count: 0
- it: should create HTTPRoute when enabled with hosts and parentRefs
template: httproute.yaml
set:
gatewayApi:
enabled: true
annotations:
test.io/route: "true"
labels:
test.io/kind: httproute
parentRefs:
- name: test-gateway
namespace: gw-ns
kind: Gateway
group: gateway.networking.k8s.io
hosts:
- host: example.com
paths:
- /
- path: /api
pathType: Prefix
asserts:
- hasDocuments:
count: 1
- isKind:
of: HTTPRoute
apiVersion: gateway.networking.k8s.io/v1
- equal:
path: metadata.name
value: RELEASE-NAME-rstudio-connect-gw-0
- equal:
path: metadata.annotations["test.io/route"]
value: "true"
- equal:
path: metadata.labels["test.io/kind"]
value: httproute
- equal:
path: spec.parentRefs[0].name
value: test-gateway
- equal:
path: spec.parentRefs[0].namespace
value: gw-ns
- equal:
path: spec.hostnames[0]
value: example.com
- equal:
path: spec.rules[0].matches[0].path.type
value: PathPrefix
- equal:
path: spec.rules[0].matches[0].path.value
value: /
- equal:
path: spec.rules[0].matches[1].path.type
value: PathPrefix
- equal:
path: spec.rules[0].matches[1].path.value
value: /api
- equal:
path: spec.rules[0].backendRefs[0].name
value: RELEASE-NAME-rstudio-connect
- equal:
path: spec.rules[0].backendRefs[0].port
value: 80
23 changes: 23 additions & 0 deletions charts/rstudio-connect/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,29 @@ ingress:
# hosts:
# - chart-example.local

# -- Gateway API (HTTPRoute) resources. Independent of `ingress`; both may be enabled if desired.
gatewayApi:
enabled: false
# -- Annotations for all HTTPRoute resources created by this chart
annotations: {}
# -- Extra labels for all HTTPRoute resources created by this chart
labels: {}
# -- parentRefs attach HTTPRoutes to an existing Gateway (or other supported parent).
# Required when `gatewayApi.enabled` is true.
# [Gateway API parent reference](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.ParentReference)
parentRefs: []
# - name: example-gateway
# namespace: gateway-namespace
# kind: Gateway
# group: gateway.networking.k8s.io
# -- Same shape as `ingress.hosts`. Each entry becomes one HTTPRoute; omit or use empty `paths` to skip an entry.
hosts: []
# - host: chart-example.local
# paths:
# - /
# # or path: /api
# # pathType: Prefix

# Settings for the Chronicle Agent sidecar container
chronicleAgent:
# -- Creates a Chronicle agent sidecar container in the pod if true
Expand Down
2 changes: 1 addition & 1 deletion charts/rstudio-launcher-rbac/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,5 @@ helm template -n rstudio rstudio-launcher-rbac rstudio/rstudio-launcher-rbac
| targetNamespaces | list | `[]` | The targetNamespaces that the launcher will be able to launch sessions into |

----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.13.1](https://github.com/norwoodj/helm-docs/releases/v1.13.1)
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)

4 changes: 2 additions & 2 deletions charts/rstudio-library/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: v2
name: rstudio-library
description: Helm library helpers for use by official RStudio charts
type: library
version: 0.1.36
appVersion: 0.1.35
version: 0.1.37
appVersion: 0.1.37

icon: https://raw.githubusercontent.com/rstudio/helm/main/images/posit-icon-fullcolor.svg
home: https://www.rstudio.com
Expand Down
4 changes: 4 additions & 0 deletions charts/rstudio-library/NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 0.1.37

- Add Gateway API helpers in `_gateway.tpl` (`apiVersion`, path match mapping, HTTPRoute naming, service `backendRef`).

## 0.1.36

- Update chart icon to Posit icon
Expand Down
Loading