From b9a5bb423e8cae000dc6e3101cf9abab08470889 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Wed, 15 Apr 2026 11:04:04 -0500 Subject: [PATCH 01/15] Add direct Kubernetes runner examples for Connect Add backends.kubernetes equivalents alongside existing Launcher examples for all Connect example categories (app config, auth, container images, storage). Each .qmd doc uses tabbed panels with the recommended direct Kubernetes runner shown first and Launcher labeled as legacy. Update index.qmd to describe both backends and link to the upgrade guide. Update private-images.qmd prose to mention executionEnvironments. Closes #837 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../application-configuration/index.qmd | 15 +++ ...ect-recommended-app-config-kubernetes.yaml | 126 ++++++++++++++++++ examples/connect/auth/oidc.qmd | 15 +++ .../auth/rstudio-connect-oidc-kubernetes.yaml | 77 +++++++++++ .../auth/rstudio-connect-saml-kubernetes.yaml | 68 ++++++++++ examples/connect/auth/saml.qmd | 15 +++ .../container-images/custom-images.qmd | 19 ++- .../container-images/private-images.qmd | 24 +++- ...tudio-connect-custom-image-kubernetes.yaml | 71 ++++++++++ ...nnect-custom-image-private-kubernetes.yaml | 78 +++++++++++ examples/connect/index.qmd | 9 +- .../connect/storage/additional-volumes.qmd | 19 ++- ...ect-with-additional-mounts-kubernetes.yaml | 69 ++++++++++ 13 files changed, 599 insertions(+), 6 deletions(-) create mode 100644 examples/connect/application-configuration/rstudio-connect-recommended-app-config-kubernetes.yaml create mode 100644 examples/connect/auth/rstudio-connect-oidc-kubernetes.yaml create mode 100644 examples/connect/auth/rstudio-connect-saml-kubernetes.yaml create mode 100644 examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml create mode 100644 examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml create mode 100644 examples/connect/storage/rstudio-connect-with-additional-mounts-kubernetes.yaml diff --git a/examples/connect/application-configuration/index.qmd b/examples/connect/application-configuration/index.qmd index c8475c970..ee743ee8d 100644 --- a/examples/connect/application-configuration/index.qmd +++ b/examples/connect/application-configuration/index.qmd @@ -15,5 +15,20 @@ These settings are recommend for most deployments and are described below: {{< include ../_prereqs.qmd >}} +::: {.panel-tabset} + +## Direct Kubernetes Runner (recommended) + +Recommended for new installations running Connect 2026.04.0+. + +```{.yaml include="rstudio-connect-recommended-app-config-kubernetes.yaml" filename="values.yaml"} +``` + +## Launcher (legacy) + +For Connect versions older than 2026.04.0. + ```{.yaml include="rstudio-connect-recommended-app-config.yaml" filename="values.yaml"} ``` + +::: diff --git a/examples/connect/application-configuration/rstudio-connect-recommended-app-config-kubernetes.yaml b/examples/connect/application-configuration/rstudio-connect-recommended-app-config-kubernetes.yaml new file mode 100644 index 000000000..eb5058b2e --- /dev/null +++ b/examples/connect/application-configuration/rstudio-connect-recommended-app-config-kubernetes.yaml @@ -0,0 +1,126 @@ + +replicas: 2 # TODO: Adjust the amount depending on your requirements + +# Using a license file with the helm chart: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-file +# If you would like to use a license key see this documentation: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-key +license: + file: + secret: posit-licenses # TODO: Change to the secret name in your cluster + secretKey: connect.lic # TODO: Change to the secret key containing your Connect license + +# Configures Connect shared storage +sharedStorage: + create: true + mount: true + storageClassName: nfs-sc-rwx # TODO: Change to a RWX StorageClass available in your cluster + # volumeName: connect-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name. + requests: + storage: 100G + +extraObjects: + # Required to set a custom PyPI repo + - apiVersion: v1 + kind: ConfigMap + metadata: + name: pip-config-connect + data: + # TODO: if using Posit Package Manager, edit the below to match your package manager python repo URL + pip.conf: | + [global] + timeout = 60 + index-url = https://packagemanager.posit.co/pypi/latest/simple + trusted-host = packagemanager.posit.co + + # Required for authenticated R (not Python) repositories + - apiVersion: v1 + kind: ConfigMap + metadata: + name: curlrc-config-connect + data: + .curlrc: | + --netrc-file /etc/netrc + +launcher: + enabled: false + +backends: + kubernetes: + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + defaultResourceJobBase: + spec: + template: + spec: + volumes: + # Required to set a custom Python repo + - name: pip-config-volume + configMap: + name: pip-config-connect + + # Required for authenticated R and Python repositories + # See the following documentation for more details: + # https://packagemanager.posit.co/__docs__/admin/connect.html#authenticated-repositories + # This secret must contain a netrc file with credentials to access your private repositories. + # Here is an example of how to create this secret: + # kubectl create secret generic connect-netrc --from-file=netrc=/path/to/your/netrc --namespace your-connect-namespace + - name: netrc-config-volume + secret: + secretName: connect-netrc + + # Required for authenticated R (not Python) repositories + - name: curlrc-config-volume + configMap: + name: curlrc-config-connect + + containers: + - name: connect-content # Must use this exact name for the content container + volumeMounts: + # Required to set a custom Python repo + - mountPath: /etc/pip.conf + name: pip-config-volume + subPath: pip.conf + + # Required for authenticated R and Python repositories + - mountPath: /etc/netrc + name: netrc-config-volume + subPath: netrc + + # Required for authenticated R (not Python) repositories + - mountPath: /etc/.curlrc + name: curlrc-config-volume + subPath: .curlrc + + env: + # Required for authenticated R and Python repositories + - name: NETRC + value: /etc/netrc + + # Required for authenticated R (not Python) repositories + - name: CURL_HOME + value: /etc + +securityContext: + privileged: false + +# The config section overwrites values in Posit Connect's main +# .gcfg configuration file. +config: + # Configures the Postgres connection for Posit Connect. + Database: + Provider: "Postgres" + Postgres: + # The URL syntax below is to utilize a PostgreSQL database installed + # in the cluster as described in the Kubernetes Cluster Preparation + # page of this guide. Change this URL if your PostgreSQL database is + # setup externally or in a different location. + URL: "postgres://connect@postgres.example.com:5432/connect?sslmode=disable" + Password: "" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=. + + "RPackageRepository \"CRAN\"": + URL: https://packagemanager.posit.co/cran/__linux__/jammy/latest # TODO: If using Package Manager change to match your package manager R repo url + # If using other R repos, add them here using the below format + # "RPackageRepository \"INTERNAL\"": + # URL: https://packagemanager.posit.co/cran/__linux__/jammy/latest + Quarto: + Enabled: true diff --git a/examples/connect/auth/oidc.qmd b/examples/connect/auth/oidc.qmd index 0ec27f091..7ed6343b3 100644 --- a/examples/connect/auth/oidc.qmd +++ b/examples/connect/auth/oidc.qmd @@ -14,5 +14,20 @@ See the [OpenID Connect Authentication](https://docs.posit.co/connect/admin/auth {{< include ../_prereqs.qmd >}} +::: {.panel-tabset} + +## Direct Kubernetes Runner (recommended) + +Recommended for new installations running Connect 2026.04.0+. + +```{.yaml include="rstudio-connect-oidc-kubernetes.yaml" filename="values.yaml"} +``` + +## Launcher (legacy) + +For Connect versions older than 2026.04.0. + ```{.yaml include="rstudio-connect-oidc.yaml" filename="values.yaml"} ``` + +::: diff --git a/examples/connect/auth/rstudio-connect-oidc-kubernetes.yaml b/examples/connect/auth/rstudio-connect-oidc-kubernetes.yaml new file mode 100644 index 000000000..d169edf66 --- /dev/null +++ b/examples/connect/auth/rstudio-connect-oidc-kubernetes.yaml @@ -0,0 +1,77 @@ +# Using a license file with the helm chart: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-file +# If you would like to use a license key see this documentation: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-key +license: + file: + secret: posit-licenses # TODO: Change to the secret name in your cluster + secretKey: connect.lic # TODO: Change to the secret key containing your Connect license + +# Configures Connect shared storage +sharedStorage: + create: true + mount: true + storageClassName: nfs-sc-rwx # TODO: Change to a RWX StorageClass available in your cluster + # volumeName: connect-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name. + requests: + storage: 100G + +launcher: + enabled: false + +backends: + kubernetes: + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + +# The config section overwrites values in Posit Connect's main +# .gcfg configuration file. +config: + Authentication: + Provider: oauth2 + OAuth2: + # please see https://docs.posit.co/connect/admin/authentication/oauth2-openid-based/openid-connect/ for more examples of custom OIDC integrations + # TODO: change the below to match your OIDC provider + ClientId: "0ebfafe9-237f-4e38-a85b-a0e5d6c06782" + ClientSecret: "2ab7be07-84fe-4569-b04a-ce8f1ebfc077" + OpenIDConnectIssuer: "https://example.com/issuer" + # + # Enable this for a better user experience, unless + # managing a large number of groups is a concern: + # GroupsAutoProvision: true + # + # By default the following claims are mapped to the following values + # in Connect. Uncomment and adjust the values below if your claims are + # different. + # https://docs.posit.co/connect/admin/authentication/oauth2-openid-based/openid-connect/#customizing-openid-connect + # UniqueIdClaim: "sub" + # EmailClaim: "email" + # FirstNameClaim: "given_name" + # LastNameClaim: "family_name" + # UsernameClaim: "preferred_username" + # GroupsClaim: "groups" + # + # When troubleshooting an OpenID Connect problem, more verbose logging + # is produced by uncommenting the following line: + # Logging: true + # + # By default all users get created with the Viewer role which is the default + # setting in Authorization.DefaultUserRole, which can be modified. + # Users can be automatically mapped to different roles based on group + # membership. + # https://docs.posit.co/connect/admin/authentication/oauth2-openid-based/openid-connect/#user-role-mapping + # + # Authorization: + # UserRoleGroupMapping: true + # PublisherRoleMapping: "Developers" + # AdministratorRoleMapping: "Administrators" + # + # Configures the Postgres connection for Posit Connect. + Database: + Provider: "Postgres" + Postgres: + # The URL syntax below is to utilize a PostgreSQL database installed + # in the cluster as described in the Kubernetes Cluster Preparation + # page of this guide. Change this URL if your PostgreSQL database is + # setup externally or in a different location. + URL: "postgres://connect@postgres.example.com:5432/connect?sslmode=disable" + Password: "" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=. diff --git a/examples/connect/auth/rstudio-connect-saml-kubernetes.yaml b/examples/connect/auth/rstudio-connect-saml-kubernetes.yaml new file mode 100644 index 000000000..f76c507f3 --- /dev/null +++ b/examples/connect/auth/rstudio-connect-saml-kubernetes.yaml @@ -0,0 +1,68 @@ +# Using a license file with the helm chart: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-file +# If you would like to use a license key see this documentation: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-key +license: + file: + secret: posit-licenses # TODO: Change to the secret name in your cluster + secretKey: connect.lic # TODO: Change to the secret key containing your Connect license + +# Configures Connect shared storage +sharedStorage: + create: true + mount: true + storageClassName: nfs-sc-rwx # TODO: Change to a RWX StorageClass available in your cluster + # volumeName: connect-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name. + requests: + storage: 100G + +launcher: + enabled: false + +backends: + kubernetes: + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + +# The config section overwrites values in Posit Connect's main +# .gcfg configuration file. +config: + Authentication: + Provider: saml + SAML: + # Please see https://docs.posit.co/connect/admin/authentication/saml-based/saml/ for more examples of custom SAML integrations + IdPMetaDataURL: "https://idp.example.com/saml/metadata" # TODO: Change to match your saml provider's metadata url + IdPAttributeProfile: default # TODO: Change to match your auth provider. Accepted values are "okta", "azure" (Azure AD/Entra ID), and "default" (all others) + # Setting IdPAttributeProfile will match Connect with certain attributes. + # These can be customized instead by not setting SAML.IdPAttributeProfile + # and defining each attribute instead in this section. + # https://docs.posit.co/connect/admin/authentication/saml-based/azure-ad-saml/#saml-attributes + # + # Enable this for a better user experience, unless + # managing a large number of groups is a concern: + # GroupsAutoProvision: true + # + # When troubleshooting a SAML problem, more verbose logging + # is produced by uncommenting the following line: + # Logging: true + # + # By default all users get created with the Viewer role which is the default + # setting in Authorization.DefaultUserRole, which can be modified. + # Users can be automatically mapped to different roles based on group + # membership. + # https://docs.posit.co/connect/admin/authentication/oauth2-openid-based/openid-connect/#user-role-mapping + # + # Authorization: + # UserRoleGroupMapping: true + # PublisherRoleMapping: "Developers" + # AdministratorRoleMapping: "Administrators" + # + # Configures the Postgres connection for Posit Connect. + Database: + Provider: "Postgres" + Postgres: + # The URL syntax below is to utilize a PostgreSQL database installed + # in the cluster as described in the Kubernetes Cluster Preparation + # page of this guide. Change this URL if your PostgreSQL database is + # setup externally or in a different location. + URL: "postgres://connect@postgres.example.com:5432/connect?sslmode=disable" + Password: "" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=. diff --git a/examples/connect/auth/saml.qmd b/examples/connect/auth/saml.qmd index d112c5e28..dc880512f 100644 --- a/examples/connect/auth/saml.qmd +++ b/examples/connect/auth/saml.qmd @@ -14,5 +14,20 @@ See the [Authentication Integration (Using SAML)](https://docs.posit.co/connect/ {{< include ../_prereqs.qmd >}} +::: {.panel-tabset} + +## Direct Kubernetes Runner (recommended) + +Recommended for new installations running Connect 2026.04.0+. + +```{.yaml include="rstudio-connect-saml-kubernetes.yaml" filename="values.yaml"} +``` + +## Launcher (legacy) + +For Connect versions older than 2026.04.0. + ```{.yaml include="rstudio-connect-saml.yaml" filename="values.yaml"} ``` + +::: diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index 0b73badc1..2fbaf2774 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -12,9 +12,26 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [rstudio/content-base](https://hub.docker.com/r/rstudio/content-base) - Content init container [rstudio/rstudio-connect-content-init](https://hub.docker.com/r/rstudio/rstudio-connect-content-init) -There are several content contents listed as execution enviornments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `customRuntimeYaml` will instead use the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content contents listed as execution enviornments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `customRuntimeYaml` (Launcher) or `executionEnvironments` (direct Kubernetes runner) will instead use the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. {{< include ../_prereqs.qmd >}} +::: {.panel-tabset} + +## Direct Kubernetes Runner (recommended) + +Recommended for new installations running Connect 2026.04.0+. + +The direct Kubernetes runner uses `executionEnvironments` instead of `launcher.customRuntimeYaml` to define content images. Unlike `customRuntimeYaml`, changes to `executionEnvironments` take effect on every `helm upgrade` without requiring a pod restart or database reset. + +```{.yaml include="rstudio-connect-custom-image-kubernetes.yaml" filename="values.yaml"} +``` + +## Launcher (legacy) + +For Connect versions older than 2026.04.0. + ```{.yaml include="rstudio-connect-custom-image.yaml" filename="values.yaml"} ``` + +::: diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index cfad496bc..fde837be1 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -12,15 +12,33 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [ghcr.io/rstudio/content-base](https://github.com/rstudio/rstudio-docker-products/pkgs/container/content-base) - Content init container [ghcr.io/rstudio/rstudio-connect-content-init](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect-content-init) -There are several content contents listed as execution enviornments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `customRuntimeYaml` will instead use the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content contents listed as execution enviornments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (direct Kubernetes runner) or `customRuntimeYaml` (Launcher) will instead use the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. -These images can be pulled from your own container registry instead of the public Posit provided images. +These images can be pulled from your own container registry instead of the public Posit provided images. This example also shows where to provide private registry credentials in the form of a Kubernetes secret of type `kubernetes.io/dockercfg`. The registry credentials secret must be specified in two places in the values to apply to Connect, content and init containers (shown in the example below). -Also note the `launcher.templateValues.pod.imagePullSecrets` provides the pod-level `imagePullSecret` that provides the secret to pull the `launcher.defaultInitContainer` as well. {{< include ../_prereqs.qmd >}} +::: {.panel-tabset} + +## Direct Kubernetes Runner (recommended) + +Recommended for new installations running Connect 2026.04.0+. + +The `backends.kubernetes.defaultResourceJobBase.spec.template.spec.imagePullSecrets` provides the pod-level `imagePullSecret` for content and init containers. + +```{.yaml include="rstudio-connect-custom-image-private-kubernetes.yaml" filename="values.yaml"} +``` + +## Launcher (legacy) + +For Connect versions older than 2026.04.0. + +The `launcher.templateValues.pod.imagePullSecrets` provides the pod-level `imagePullSecret` that provides the secret to pull the `launcher.defaultInitContainer` as well. + ```{.yaml include="rstudio-connect-custom-image-private.yaml" filename="values.yaml"} ``` + +::: diff --git a/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml b/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml new file mode 100644 index 000000000..82ca8bb1e --- /dev/null +++ b/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml @@ -0,0 +1,71 @@ + +# Using a license file with the helm chart: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-file +# If you would like to use a license key see this documentation: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-key +license: + file: + secret: posit-licenses # TODO: Change to the secret name in your cluster + secretKey: connect.lic # TODO: Change to the secret key containing your Connect license + +# Configures Connect shared storage +sharedStorage: + create: true + mount: true + storageClassName: nfs-sc-rwx # TODO: Change to a RWX StorageClass available in your cluster + # volumeName: connect-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name. + requests: + storage: 100G + +# Define the custom image for the Connect pod(s) +image: + repository: ghcr.io/rstudio/rstudio-connect # TODO: Change to match your custom image repository + tagPrefix: ubuntu2204- # TODO: Change to match your custom image tag prefix + tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. + +launcher: + enabled: false + +backends: + kubernetes: + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + # Define the custom image(s) for the content pod(s) init container + defaultInitContainer: + repository: ghcr.io/rstudio/rstudio-connect-content-init # TODO: Change to match your custom image repository + tagPrefix: ubuntu2204- # TODO: Change to match your custom image tag prefix + tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. + +# Define the custom image(s) for the content pod(s). +# Unlike launcher.customRuntimeYaml, changes take effect on every helm upgrade +# without requiring a pod restart or database reset. +executionEnvironments: + # TODO: Add custom images based on the below template + - name: ghcr.io/rstudio/content-base:r4.2.2-py3.11.3-ubuntu2204 # TODO: Change to match your custom image repository + title: "Custom Runtime" # TODO: Change to a descriptive title + description: "Runtime with R 4.2.2 and Python 3.11.3" # TODO: Change to a descriptive description + python: + installations: + - path: /opt/python/3.11.3/bin/python3 # TODO: Change to match the Python path available in your image + version: 3.11.3 # TODO: Change to match the Python version available in your image + r: + installations: + - path: /opt/R/4.2.2/bin/R # TODO: Change to match the R path available in your image + version: 4.2.2 # TODO: Change to match the R version available in your image + quarto: + installations: + - path: /opt/quarto/1.3.340/bin/quarto # TODO: Change to match the quarto path available in your image + version: 1.3.340 # TODO: Change to match the Quarto version available in your image + +# The config section overwrites values in Posit Connect's main +# .gcfg configuration file. +config: + # Configures the Postgres connection for Posit Connect. + Database: + Provider: "Postgres" + Postgres: + # The URL syntax below is to utilize a PostgreSQL database installed + # in the cluster as described in the Kubernetes Cluster Preparation + # page of this guide. Change this URL if your PostgreSQL database is + # setup externally or in a different location. + URL: "postgres://connect@postgres.example.com:5432/connect?sslmode=disable" + Password: "" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=. diff --git a/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml b/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml new file mode 100644 index 000000000..562c3198f --- /dev/null +++ b/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml @@ -0,0 +1,78 @@ +# Using a license file with the helm chart: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-file +# If you would like to use a license key see this documentation: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-key +license: + file: + secret: posit-licenses # TODO: Change to the secret name in your cluster + secretKey: connect.lic # TODO: Change to the secret key containing your Connect license + +# Configures Connect shared storage +sharedStorage: + create: true + mount: true + storageClassName: nfs-sc-rwx # TODO: Change to a RWX StorageClass available in your cluster + # volumeName: connect-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name. + requests: + storage: 100G + +# Define the custom image for the Connect pod(s) +image: + repository: ghcr.io/rstudio/rstudio-connect # TODO: Change to match your custom image repository + tagPrefix: ubuntu2204- # TODO: Change to match your custom image tag prefix + tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. + imagePullSecrets: + - name: private-registery-creds # TODO: Change this to match the secret of type kubernetes.io/dockercfg in your cluster containing authentication credentials to your registry. More information: https://kubernetes.io/docs/concepts/configuration/secret/#docker-config-secrets + +launcher: + enabled: false + +backends: + kubernetes: + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + # Define the custom image(s) for the content pod(s) init container + defaultInitContainer: + repository: ghcr.io/rstudio/rstudio-connect-content-init # TODO: Change to match your custom image repository + tagPrefix: ubuntu2204- # TODO: Change to match your custom image tag prefix + tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. + defaultResourceJobBase: + spec: + template: + spec: + imagePullSecrets: + - name: private-registery-creds # TODO: Change this to match the secret of type kubernetes.io/dockercfg in your cluster containing authentication credentials to your registry. More information: https://kubernetes.io/docs/concepts/configuration/secret/#docker-config-secrets + +# Define the custom image(s) for the content pod(s). +# Unlike launcher.customRuntimeYaml, changes take effect on every helm upgrade +# without requiring a pod restart or database reset. +executionEnvironments: + # TODO: Add custom images based on the below template + - name: ghcr.io/rstudio/content-base:r4.2.2-py3.11.3-ubuntu2204 # TODO: Change to match your custom image repository + title: "Custom Runtime" # TODO: Change to a descriptive title + description: "Runtime with R 4.2.2 and Python 3.11.3" # TODO: Change to a descriptive description + python: + installations: + - path: /opt/python/3.11.3/bin/python3 # TODO: Change to match the Python path available in your image + version: 3.11.3 # TODO: Change to match the Python version available in your image + r: + installations: + - path: /opt/R/4.2.2/bin/R # TODO: Change to match the R path available in your image + version: 4.2.2 # TODO: Change to match the R version available in your image + quarto: + installations: + - path: /opt/quarto/1.3.340/bin/quarto # TODO: Change to match the quarto path available in your image + version: 1.3.340 # TODO: Change to match the Quarto version available in your image + +# The config section overwrites values in Posit Connect's main +# .gcfg configuration file. +config: + # Configures the Postgres connection for Posit Connect. + Database: + Provider: "Postgres" + Postgres: + # The URL syntax below is to utilize a PostgreSQL database installed + # in the cluster as described in the Kubernetes Cluster Preparation + # page of this guide. Change this URL if your PostgreSQL database is + # setup externally or in a different location. + URL: "postgres://connect@postgres.example.com:5432/connect?sslmode=disable" + Password: "" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=. diff --git a/examples/connect/index.qmd b/examples/connect/index.qmd index 0372c5987..9511d7de6 100644 --- a/examples/connect/index.qmd +++ b/examples/connect/index.qmd @@ -6,7 +6,14 @@ listing: --- -The examples in this directory provide a starting point for deploying Posit Connect in different configurations. +The examples in this directory provide a starting point for deploying Posit Connect in different configurations. + +Posit Connect supports two backends for off-host execution: + +- **Direct Kubernetes Runner** (recommended) -- The preferred backend for new installations running Connect 2026.04.0+. Uses `backends.kubernetes` with native Kubernetes Job and Service specs. +- **Launcher** -- The legacy backend for older Connect versions. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). + +Examples that involve off-host execution configuration provide values for both backends in separate tabs, showing the recommended direct Kubernetes runner first. Each example has a beginning description and a series of `TODO` comments. Before using an example, read through all the comments and ensure you address each `TODO`. diff --git a/examples/connect/storage/additional-volumes.qmd b/examples/connect/storage/additional-volumes.qmd index 77abaecc2..728a6faab 100644 --- a/examples/connect/storage/additional-volumes.qmd +++ b/examples/connect/storage/additional-volumes.qmd @@ -7,10 +7,27 @@ category: "Storage" This example shows how to mount a `ConfigMap` to the Connect pod and a `PVC` is mounted to content pods. This pattern of specifying the volumes and volumeMounts will work for a variety of volume types: `PVC`, `ConfigMap`, etc. -Depending on the need to add additional volumes, you may only need to mount to the Connect service or content pods but not both. +Depending on the need to add additional volumes, you may only need to mount to the Connect service or content pods but not both. For example, if you need to add TLS certificates for Connect via a `ConfigMap` then the content pods do not need the `ConfigMap` mounted. {{< include ../_prereqs.qmd >}} +::: {.panel-tabset} + +## Direct Kubernetes Runner (recommended) + +Recommended for new installations running Connect 2026.04.0+. + +Specify content container volumes and mounts under `backends.kubernetes.defaultResourceJobBase` using standard Kubernetes Job spec fields. Name the content container `connect-content`. + +```{.yaml include="rstudio-connect-with-additional-mounts-kubernetes.yaml" filename="values.yaml"} +``` + +## Launcher (legacy) + +For Connect versions older than 2026.04.0. + ```{.yaml include="rstudio-connect-with-additional-mounts.yaml" filename="values.yaml"} ``` + +::: diff --git a/examples/connect/storage/rstudio-connect-with-additional-mounts-kubernetes.yaml b/examples/connect/storage/rstudio-connect-with-additional-mounts-kubernetes.yaml new file mode 100644 index 000000000..22d2170e7 --- /dev/null +++ b/examples/connect/storage/rstudio-connect-with-additional-mounts-kubernetes.yaml @@ -0,0 +1,69 @@ +# Using a license file with the helm chart: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-file +# If you would like to use a license key see this documentation: +# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-key +license: + file: + secret: posit-licenses # TODO: Change to the secret name in your cluster + secretKey: connect.lic # TODO: Change to the secret key containing your Connect license + +# Configures Connect shared storage +sharedStorage: + create: true + mount: true + storageClassName: nfs-sc-rwx # TODO: Change to a RWX StorageClass available in your cluster + # volumeName: connect-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name. + requests: + storage: 100G + +# This section is used to mount to the Connect container which is +# often used to add in additional configuration and TLS certificates +# which are not needed in the content containers. +pod: + volumeMounts: + - mountPath: /etc/connect-certs # TODO: Change to your desired mount path + name: ldap-certificate # TODO: Change to match the volume name below + volumes: + - name: ldap-certificate # TODO: Change to match the volumeMounts name above + # Can be any type of volume... persistentVolumeClaim, configMap, etc. + # Can also provision a PVC, PV, ConfigMap, etc via `extraObjects` if desired + configMap: + name: connect-ldap-certificate # TODO: Change to match your ConfigMap name + +launcher: + enabled: false + +# This section is only needed if you need to mount to the content containers +# which is often the case if you need to mount data for content to access +backends: + kubernetes: + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + defaultResourceJobBase: + spec: + template: + spec: + volumes: + - name: shared-data # TODO: Ensure matches the name specified in volumeMounts below + # Can be any type of volume... persistentVolumeClaim, configMap, etc. + # Can also provision a PVC or PV via `extraObjects` if desired + persistentVolumeClaim: + claimName: shared-data-pvc # TODO: Change to an available PVC name + containers: + - name: connect-content # Must use this exact name for the content container + volumeMounts: + - mountPath: /mnt/data # TODO: Change to your desired mount path + name: shared-data # TODO: Ensure matches the name specified in volumes above + +# The config section overwrites values in Posit Connect's main +# .gcfg configuration file. +config: + # Configures the Postgres connection for Posit Connect. + Database: + Provider: "Postgres" + Postgres: + # The URL syntax below is to utilize a PostgreSQL database installed + # in the cluster as described in the Kubernetes Cluster Preparation + # page of this guide. Change this URL if your PostgreSQL database is + # setup externally or in a different location. + URL: "postgres://connect@postgres.example.com:5432/connect?sslmode=disable" + Password: "" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=. From b7cbe7c27f06088ced4176060decd7a2a80fc772 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Wed, 15 Apr 2026 16:49:06 -0500 Subject: [PATCH 02/15] Fix style guide findings and label Launcher as deprecated Use sentence case for "Direct Kubernetes runner" tab headings, fix "enviornments" typo and "content contents" phrasing on modified lines, and change "legacy" to "deprecated" for the Launcher backend label. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/application-configuration/index.qmd | 4 ++-- examples/connect/auth/oidc.qmd | 4 ++-- examples/connect/auth/saml.qmd | 4 ++-- examples/connect/container-images/custom-images.qmd | 6 +++--- examples/connect/container-images/private-images.qmd | 6 +++--- examples/connect/index.qmd | 4 ++-- examples/connect/storage/additional-volumes.qmd | 4 ++-- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/connect/application-configuration/index.qmd b/examples/connect/application-configuration/index.qmd index ee743ee8d..77bd47e5d 100644 --- a/examples/connect/application-configuration/index.qmd +++ b/examples/connect/application-configuration/index.qmd @@ -17,14 +17,14 @@ These settings are recommend for most deployments and are described below: ::: {.panel-tabset} -## Direct Kubernetes Runner (recommended) +## Direct Kubernetes runner (recommended) Recommended for new installations running Connect 2026.04.0+. ```{.yaml include="rstudio-connect-recommended-app-config-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (legacy) +## Launcher (deprecated) For Connect versions older than 2026.04.0. diff --git a/examples/connect/auth/oidc.qmd b/examples/connect/auth/oidc.qmd index 7ed6343b3..a7f0c89e9 100644 --- a/examples/connect/auth/oidc.qmd +++ b/examples/connect/auth/oidc.qmd @@ -16,14 +16,14 @@ See the [OpenID Connect Authentication](https://docs.posit.co/connect/admin/auth ::: {.panel-tabset} -## Direct Kubernetes Runner (recommended) +## Direct Kubernetes runner (recommended) Recommended for new installations running Connect 2026.04.0+. ```{.yaml include="rstudio-connect-oidc-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (legacy) +## Launcher (deprecated) For Connect versions older than 2026.04.0. diff --git a/examples/connect/auth/saml.qmd b/examples/connect/auth/saml.qmd index dc880512f..8c406bc31 100644 --- a/examples/connect/auth/saml.qmd +++ b/examples/connect/auth/saml.qmd @@ -16,14 +16,14 @@ See the [Authentication Integration (Using SAML)](https://docs.posit.co/connect/ ::: {.panel-tabset} -## Direct Kubernetes Runner (recommended) +## Direct Kubernetes runner (recommended) Recommended for new installations running Connect 2026.04.0+. ```{.yaml include="rstudio-connect-saml-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (legacy) +## Launcher (deprecated) For Connect versions older than 2026.04.0. diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index 2fbaf2774..2ffc6e91b 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -12,13 +12,13 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [rstudio/content-base](https://hub.docker.com/r/rstudio/content-base) - Content init container [rstudio/rstudio-connect-content-init](https://hub.docker.com/r/rstudio/rstudio-connect-content-init) -There are several content contents listed as execution enviornments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `customRuntimeYaml` (Launcher) or `executionEnvironments` (direct Kubernetes runner) will instead use the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `customRuntimeYaml` (Launcher) or `executionEnvironments` (direct Kubernetes runner) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. {{< include ../_prereqs.qmd >}} ::: {.panel-tabset} -## Direct Kubernetes Runner (recommended) +## Direct Kubernetes runner (recommended) Recommended for new installations running Connect 2026.04.0+. @@ -27,7 +27,7 @@ The direct Kubernetes runner uses `executionEnvironments` instead of `launcher.c ```{.yaml include="rstudio-connect-custom-image-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (legacy) +## Launcher (deprecated) For Connect versions older than 2026.04.0. diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index fde837be1..358e00a86 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [ghcr.io/rstudio/content-base](https://github.com/rstudio/rstudio-docker-products/pkgs/container/content-base) - Content init container [ghcr.io/rstudio/rstudio-connect-content-init](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect-content-init) -There are several content contents listed as execution enviornments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (direct Kubernetes runner) or `customRuntimeYaml` (Launcher) will instead use the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (direct Kubernetes runner) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. These images can be pulled from your own container registry instead of the public Posit provided images. This example also shows where to provide private registry credentials in the form of a Kubernetes secret of type `kubernetes.io/dockercfg`. @@ -23,7 +23,7 @@ The registry credentials secret must be specified in two places in the values to ::: {.panel-tabset} -## Direct Kubernetes Runner (recommended) +## Direct Kubernetes runner (recommended) Recommended for new installations running Connect 2026.04.0+. @@ -32,7 +32,7 @@ The `backends.kubernetes.defaultResourceJobBase.spec.template.spec.imagePullSecr ```{.yaml include="rstudio-connect-custom-image-private-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (legacy) +## Launcher (deprecated) For Connect versions older than 2026.04.0. diff --git a/examples/connect/index.qmd b/examples/connect/index.qmd index 9511d7de6..294a4f0e3 100644 --- a/examples/connect/index.qmd +++ b/examples/connect/index.qmd @@ -10,8 +10,8 @@ The examples in this directory provide a starting point for deploying Posit Conn Posit Connect supports two backends for off-host execution: -- **Direct Kubernetes Runner** (recommended) -- The preferred backend for new installations running Connect 2026.04.0+. Uses `backends.kubernetes` with native Kubernetes Job and Service specs. -- **Launcher** -- The legacy backend for older Connect versions. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). +- **Direct Kubernetes runner** (recommended) -- The preferred backend for new installations running Connect 2026.04.0+. Uses `backends.kubernetes` with native Kubernetes Job and Service specs. +- **Launcher** (deprecated) -- For older Connect versions. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). Examples that involve off-host execution configuration provide values for both backends in separate tabs, showing the recommended direct Kubernetes runner first. diff --git a/examples/connect/storage/additional-volumes.qmd b/examples/connect/storage/additional-volumes.qmd index 728a6faab..0f6a9f827 100644 --- a/examples/connect/storage/additional-volumes.qmd +++ b/examples/connect/storage/additional-volumes.qmd @@ -14,7 +14,7 @@ For example, if you need to add TLS certificates for Connect via a `ConfigMap` t ::: {.panel-tabset} -## Direct Kubernetes Runner (recommended) +## Direct Kubernetes runner (recommended) Recommended for new installations running Connect 2026.04.0+. @@ -23,7 +23,7 @@ Specify content container volumes and mounts under `backends.kubernetes.defaultR ```{.yaml include="rstudio-connect-with-additional-mounts-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (legacy) +## Launcher (deprecated) For Connect versions older than 2026.04.0. From a8c217240d9984c60c67227a15a58f5630f08d4c Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 10:20:50 -0500 Subject: [PATCH 03/15] Remove deprecated/legacy labels and minimize naming the Kubernetes backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop parenthetical labels from tab headings — tabs are now just "Kubernetes" and "Launcher". Remove "direct Kubernetes runner" phrasing in favor of referencing the `backends.kubernetes` configuration directly. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/application-configuration/index.qmd | 4 ++-- examples/connect/auth/oidc.qmd | 4 ++-- examples/connect/auth/saml.qmd | 4 ++-- examples/connect/container-images/custom-images.qmd | 8 ++++---- examples/connect/container-images/private-images.qmd | 6 +++--- examples/connect/index.qmd | 6 +++--- examples/connect/storage/additional-volumes.qmd | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/examples/connect/application-configuration/index.qmd b/examples/connect/application-configuration/index.qmd index 77bd47e5d..0e7da6d2d 100644 --- a/examples/connect/application-configuration/index.qmd +++ b/examples/connect/application-configuration/index.qmd @@ -17,14 +17,14 @@ These settings are recommend for most deployments and are described below: ::: {.panel-tabset} -## Direct Kubernetes runner (recommended) +## Kubernetes Recommended for new installations running Connect 2026.04.0+. ```{.yaml include="rstudio-connect-recommended-app-config-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (deprecated) +## Launcher For Connect versions older than 2026.04.0. diff --git a/examples/connect/auth/oidc.qmd b/examples/connect/auth/oidc.qmd index a7f0c89e9..dac51b5bf 100644 --- a/examples/connect/auth/oidc.qmd +++ b/examples/connect/auth/oidc.qmd @@ -16,14 +16,14 @@ See the [OpenID Connect Authentication](https://docs.posit.co/connect/admin/auth ::: {.panel-tabset} -## Direct Kubernetes runner (recommended) +## Kubernetes Recommended for new installations running Connect 2026.04.0+. ```{.yaml include="rstudio-connect-oidc-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (deprecated) +## Launcher For Connect versions older than 2026.04.0. diff --git a/examples/connect/auth/saml.qmd b/examples/connect/auth/saml.qmd index 8c406bc31..c4ab7c1b8 100644 --- a/examples/connect/auth/saml.qmd +++ b/examples/connect/auth/saml.qmd @@ -16,14 +16,14 @@ See the [Authentication Integration (Using SAML)](https://docs.posit.co/connect/ ::: {.panel-tabset} -## Direct Kubernetes runner (recommended) +## Kubernetes Recommended for new installations running Connect 2026.04.0+. ```{.yaml include="rstudio-connect-saml-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (deprecated) +## Launcher For Connect versions older than 2026.04.0. diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index 2ffc6e91b..842a3d5e3 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -12,22 +12,22 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [rstudio/content-base](https://hub.docker.com/r/rstudio/content-base) - Content init container [rstudio/rstudio-connect-content-init](https://hub.docker.com/r/rstudio/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `customRuntimeYaml` (Launcher) or `executionEnvironments` (direct Kubernetes runner) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (`backends.kubernetes`) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. {{< include ../_prereqs.qmd >}} ::: {.panel-tabset} -## Direct Kubernetes runner (recommended) +## Kubernetes Recommended for new installations running Connect 2026.04.0+. -The direct Kubernetes runner uses `executionEnvironments` instead of `launcher.customRuntimeYaml` to define content images. Unlike `customRuntimeYaml`, changes to `executionEnvironments` take effect on every `helm upgrade` without requiring a pod restart or database reset. +With `backends.kubernetes`, use `executionEnvironments` instead of `launcher.customRuntimeYaml` to define content images. Unlike `customRuntimeYaml`, changes to `executionEnvironments` take effect on every `helm upgrade` without requiring a pod restart or database reset. ```{.yaml include="rstudio-connect-custom-image-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (deprecated) +## Launcher For Connect versions older than 2026.04.0. diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index 358e00a86..c0c8c7de6 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [ghcr.io/rstudio/content-base](https://github.com/rstudio/rstudio-docker-products/pkgs/container/content-base) - Content init container [ghcr.io/rstudio/rstudio-connect-content-init](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (direct Kubernetes runner) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (`backends.kubernetes`) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. These images can be pulled from your own container registry instead of the public Posit provided images. This example also shows where to provide private registry credentials in the form of a Kubernetes secret of type `kubernetes.io/dockercfg`. @@ -23,7 +23,7 @@ The registry credentials secret must be specified in two places in the values to ::: {.panel-tabset} -## Direct Kubernetes runner (recommended) +## Kubernetes Recommended for new installations running Connect 2026.04.0+. @@ -32,7 +32,7 @@ The `backends.kubernetes.defaultResourceJobBase.spec.template.spec.imagePullSecr ```{.yaml include="rstudio-connect-custom-image-private-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (deprecated) +## Launcher For Connect versions older than 2026.04.0. diff --git a/examples/connect/index.qmd b/examples/connect/index.qmd index 294a4f0e3..fb009be63 100644 --- a/examples/connect/index.qmd +++ b/examples/connect/index.qmd @@ -10,10 +10,10 @@ The examples in this directory provide a starting point for deploying Posit Conn Posit Connect supports two backends for off-host execution: -- **Direct Kubernetes runner** (recommended) -- The preferred backend for new installations running Connect 2026.04.0+. Uses `backends.kubernetes` with native Kubernetes Job and Service specs. -- **Launcher** (deprecated) -- For older Connect versions. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). +- **`backends.kubernetes`** (recommended) -- Connect 2026.04.0+ manages content Jobs and Services natively through Kubernetes. New installations should use this backend. +- **Launcher** -- For Connect versions older than 2026.04.0. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). -Examples that involve off-host execution configuration provide values for both backends in separate tabs, showing the recommended direct Kubernetes runner first. +Examples that involve off-host execution configuration provide values for both backends in separate tabs, with the recommended `backends.kubernetes` approach shown first. Each example has a beginning description and a series of `TODO` comments. Before using an example, read through all the comments and ensure you address each `TODO`. diff --git a/examples/connect/storage/additional-volumes.qmd b/examples/connect/storage/additional-volumes.qmd index 0f6a9f827..67b15b137 100644 --- a/examples/connect/storage/additional-volumes.qmd +++ b/examples/connect/storage/additional-volumes.qmd @@ -14,7 +14,7 @@ For example, if you need to add TLS certificates for Connect via a `ConfigMap` t ::: {.panel-tabset} -## Direct Kubernetes runner (recommended) +## Kubernetes Recommended for new installations running Connect 2026.04.0+. @@ -23,7 +23,7 @@ Specify content container volumes and mounts under `backends.kubernetes.defaultR ```{.yaml include="rstudio-connect-with-additional-mounts-kubernetes.yaml" filename="values.yaml"} ``` -## Launcher (deprecated) +## Launcher For Connect versions older than 2026.04.0. From 2c5ea81895cdcb4440fd1408eaf7eac6f16dc99a Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 10:21:52 -0500 Subject: [PATCH 04/15] Decouple executionEnvironments from backends.kubernetes in docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit executionEnvironments is independent of backends.kubernetes — remove the parenthetical that incorrectly associated them, and drop the "With backends.kubernetes" lead-in from the custom images description. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/container-images/custom-images.qmd | 4 ++-- examples/connect/container-images/private-images.qmd | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index 842a3d5e3..196f60e7c 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [rstudio/content-base](https://hub.docker.com/r/rstudio/content-base) - Content init container [rstudio/rstudio-connect-content-init](https://hub.docker.com/r/rstudio/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (`backends.kubernetes`) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. {{< include ../_prereqs.qmd >}} @@ -22,7 +22,7 @@ There are several content containers listed as execution environments by default Recommended for new installations running Connect 2026.04.0+. -With `backends.kubernetes`, use `executionEnvironments` instead of `launcher.customRuntimeYaml` to define content images. Unlike `customRuntimeYaml`, changes to `executionEnvironments` take effect on every `helm upgrade` without requiring a pod restart or database reset. +Use `executionEnvironments` instead of `launcher.customRuntimeYaml` to define content images. Unlike `customRuntimeYaml`, changes to `executionEnvironments` take effect on every `helm upgrade` without requiring a pod restart or database reset. ```{.yaml include="rstudio-connect-custom-image-kubernetes.yaml" filename="values.yaml"} ``` diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index c0c8c7de6..e0c97c459 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [ghcr.io/rstudio/content-base](https://github.com/rstudio/rstudio-docker-products/pkgs/container/content-base) - Content init container [ghcr.io/rstudio/rstudio-connect-content-init](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (`backends.kubernetes`) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. These images can be pulled from your own container registry instead of the public Posit provided images. This example also shows where to provide private registry credentials in the form of a Kubernetes secret of type `kubernetes.io/dockercfg`. From f7438aa14e0e29679b8a8e21aacdd862989dfc0c Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 10:27:16 -0500 Subject: [PATCH 05/15] Broaden Kubernetes tab description to all Connect 2026.04.0+ users The backends.kubernetes approach applies to any installation running Connect 2026.04.0+, not just new installations. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/application-configuration/index.qmd | 2 +- examples/connect/auth/oidc.qmd | 2 +- examples/connect/auth/saml.qmd | 2 +- examples/connect/container-images/custom-images.qmd | 2 +- examples/connect/container-images/private-images.qmd | 2 +- examples/connect/index.qmd | 2 +- examples/connect/storage/additional-volumes.qmd | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/connect/application-configuration/index.qmd b/examples/connect/application-configuration/index.qmd index 0e7da6d2d..c10db5ab4 100644 --- a/examples/connect/application-configuration/index.qmd +++ b/examples/connect/application-configuration/index.qmd @@ -19,7 +19,7 @@ These settings are recommend for most deployments and are described below: ## Kubernetes -Recommended for new installations running Connect 2026.04.0+. +Recommended for Connect 2026.04.0+. ```{.yaml include="rstudio-connect-recommended-app-config-kubernetes.yaml" filename="values.yaml"} ``` diff --git a/examples/connect/auth/oidc.qmd b/examples/connect/auth/oidc.qmd index dac51b5bf..99f916f27 100644 --- a/examples/connect/auth/oidc.qmd +++ b/examples/connect/auth/oidc.qmd @@ -18,7 +18,7 @@ See the [OpenID Connect Authentication](https://docs.posit.co/connect/admin/auth ## Kubernetes -Recommended for new installations running Connect 2026.04.0+. +Recommended for Connect 2026.04.0+. ```{.yaml include="rstudio-connect-oidc-kubernetes.yaml" filename="values.yaml"} ``` diff --git a/examples/connect/auth/saml.qmd b/examples/connect/auth/saml.qmd index c4ab7c1b8..b434a05b6 100644 --- a/examples/connect/auth/saml.qmd +++ b/examples/connect/auth/saml.qmd @@ -18,7 +18,7 @@ See the [Authentication Integration (Using SAML)](https://docs.posit.co/connect/ ## Kubernetes -Recommended for new installations running Connect 2026.04.0+. +Recommended for Connect 2026.04.0+. ```{.yaml include="rstudio-connect-saml-kubernetes.yaml" filename="values.yaml"} ``` diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index 196f60e7c..b479edebd 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -20,7 +20,7 @@ There are several content containers listed as execution environments by default ## Kubernetes -Recommended for new installations running Connect 2026.04.0+. +Recommended for Connect 2026.04.0+. Use `executionEnvironments` instead of `launcher.customRuntimeYaml` to define content images. Unlike `customRuntimeYaml`, changes to `executionEnvironments` take effect on every `helm upgrade` without requiring a pod restart or database reset. diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index e0c97c459..2d51b21b1 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -25,7 +25,7 @@ The registry credentials secret must be specified in two places in the values to ## Kubernetes -Recommended for new installations running Connect 2026.04.0+. +Recommended for Connect 2026.04.0+. The `backends.kubernetes.defaultResourceJobBase.spec.template.spec.imagePullSecrets` provides the pod-level `imagePullSecret` for content and init containers. diff --git a/examples/connect/index.qmd b/examples/connect/index.qmd index fb009be63..d311e2353 100644 --- a/examples/connect/index.qmd +++ b/examples/connect/index.qmd @@ -10,7 +10,7 @@ The examples in this directory provide a starting point for deploying Posit Conn Posit Connect supports two backends for off-host execution: -- **`backends.kubernetes`** (recommended) -- Connect 2026.04.0+ manages content Jobs and Services natively through Kubernetes. New installations should use this backend. +- **`backends.kubernetes`** (recommended) -- Connect 2026.04.0+ manages content Jobs and Services natively through Kubernetes. - **Launcher** -- For Connect versions older than 2026.04.0. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). Examples that involve off-host execution configuration provide values for both backends in separate tabs, with the recommended `backends.kubernetes` approach shown first. diff --git a/examples/connect/storage/additional-volumes.qmd b/examples/connect/storage/additional-volumes.qmd index 67b15b137..2b38ad1bc 100644 --- a/examples/connect/storage/additional-volumes.qmd +++ b/examples/connect/storage/additional-volumes.qmd @@ -16,7 +16,7 @@ For example, if you need to add TLS certificates for Connect via a `ConfigMap` t ## Kubernetes -Recommended for new installations running Connect 2026.04.0+. +Recommended for Connect 2026.04.0+. Specify content container volumes and mounts under `backends.kubernetes.defaultResourceJobBase` using standard Kubernetes Job spec fields. Name the content container `connect-content`. From 817a6dbded5560b86f7500f3e86139ef462c9245 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 11:23:30 -0500 Subject: [PATCH 06/15] Replace tabbed panels with separate sections for each backend Show both Kubernetes and Launcher examples as regular sections on the same page instead of using Quarto tabbed panels. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/application-configuration/index.qmd | 4 ---- examples/connect/auth/oidc.qmd | 4 ---- examples/connect/auth/saml.qmd | 4 ---- examples/connect/container-images/custom-images.qmd | 4 ---- examples/connect/container-images/private-images.qmd | 4 ---- examples/connect/index.qmd | 2 +- examples/connect/storage/additional-volumes.qmd | 4 ---- 7 files changed, 1 insertion(+), 25 deletions(-) diff --git a/examples/connect/application-configuration/index.qmd b/examples/connect/application-configuration/index.qmd index c10db5ab4..541e3fbae 100644 --- a/examples/connect/application-configuration/index.qmd +++ b/examples/connect/application-configuration/index.qmd @@ -15,8 +15,6 @@ These settings are recommend for most deployments and are described below: {{< include ../_prereqs.qmd >}} -::: {.panel-tabset} - ## Kubernetes Recommended for Connect 2026.04.0+. @@ -30,5 +28,3 @@ For Connect versions older than 2026.04.0. ```{.yaml include="rstudio-connect-recommended-app-config.yaml" filename="values.yaml"} ``` - -::: diff --git a/examples/connect/auth/oidc.qmd b/examples/connect/auth/oidc.qmd index 99f916f27..21486b88c 100644 --- a/examples/connect/auth/oidc.qmd +++ b/examples/connect/auth/oidc.qmd @@ -14,8 +14,6 @@ See the [OpenID Connect Authentication](https://docs.posit.co/connect/admin/auth {{< include ../_prereqs.qmd >}} -::: {.panel-tabset} - ## Kubernetes Recommended for Connect 2026.04.0+. @@ -29,5 +27,3 @@ For Connect versions older than 2026.04.0. ```{.yaml include="rstudio-connect-oidc.yaml" filename="values.yaml"} ``` - -::: diff --git a/examples/connect/auth/saml.qmd b/examples/connect/auth/saml.qmd index b434a05b6..26920c58b 100644 --- a/examples/connect/auth/saml.qmd +++ b/examples/connect/auth/saml.qmd @@ -14,8 +14,6 @@ See the [Authentication Integration (Using SAML)](https://docs.posit.co/connect/ {{< include ../_prereqs.qmd >}} -::: {.panel-tabset} - ## Kubernetes Recommended for Connect 2026.04.0+. @@ -29,5 +27,3 @@ For Connect versions older than 2026.04.0. ```{.yaml include="rstudio-connect-saml.yaml" filename="values.yaml"} ``` - -::: diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index b479edebd..d1c847f49 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -16,8 +16,6 @@ There are several content containers listed as execution environments by default {{< include ../_prereqs.qmd >}} -::: {.panel-tabset} - ## Kubernetes Recommended for Connect 2026.04.0+. @@ -33,5 +31,3 @@ For Connect versions older than 2026.04.0. ```{.yaml include="rstudio-connect-custom-image.yaml" filename="values.yaml"} ``` - -::: diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index 2d51b21b1..054bf5728 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -21,8 +21,6 @@ The registry credentials secret must be specified in two places in the values to {{< include ../_prereqs.qmd >}} -::: {.panel-tabset} - ## Kubernetes Recommended for Connect 2026.04.0+. @@ -40,5 +38,3 @@ The `launcher.templateValues.pod.imagePullSecrets` provides the pod-level `image ```{.yaml include="rstudio-connect-custom-image-private.yaml" filename="values.yaml"} ``` - -::: diff --git a/examples/connect/index.qmd b/examples/connect/index.qmd index d311e2353..a40ae8a84 100644 --- a/examples/connect/index.qmd +++ b/examples/connect/index.qmd @@ -13,7 +13,7 @@ Posit Connect supports two backends for off-host execution: - **`backends.kubernetes`** (recommended) -- Connect 2026.04.0+ manages content Jobs and Services natively through Kubernetes. - **Launcher** -- For Connect versions older than 2026.04.0. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). -Examples that involve off-host execution configuration provide values for both backends in separate tabs, with the recommended `backends.kubernetes` approach shown first. +Examples that involve off-host execution configuration provide values for both backends, with the recommended `backends.kubernetes` approach shown first. Each example has a beginning description and a series of `TODO` comments. Before using an example, read through all the comments and ensure you address each `TODO`. diff --git a/examples/connect/storage/additional-volumes.qmd b/examples/connect/storage/additional-volumes.qmd index 2b38ad1bc..c63b0338b 100644 --- a/examples/connect/storage/additional-volumes.qmd +++ b/examples/connect/storage/additional-volumes.qmd @@ -12,8 +12,6 @@ For example, if you need to add TLS certificates for Connect via a `ConfigMap` t {{< include ../_prereqs.qmd >}} -::: {.panel-tabset} - ## Kubernetes Recommended for Connect 2026.04.0+. @@ -29,5 +27,3 @@ For Connect versions older than 2026.04.0. ```{.yaml include="rstudio-connect-with-additional-mounts.yaml" filename="values.yaml"} ``` - -::: From 6abef42eb58eab3b855fc48e6c127e4f2300f477 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 11:36:47 -0500 Subject: [PATCH 07/15] Remove launcher.enabled from auth examples that have no other launcher config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The OIDC and SAML examples only configure authentication — they have no launcher-specific customizations (templateValues, customRuntimeYaml, etc.), so they don't need separate Kubernetes examples or backend sections. Remove the Kubernetes YAML files, backend sections from the .qmd pages, and the bare launcher.enabled setting from the Launcher YAML files. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/auth/oidc.qmd | 11 --- .../auth/rstudio-connect-oidc-kubernetes.yaml | 77 ------------------- .../connect/auth/rstudio-connect-oidc.yaml | 3 - .../auth/rstudio-connect-saml-kubernetes.yaml | 68 ---------------- .../connect/auth/rstudio-connect-saml.yaml | 3 - examples/connect/auth/saml.qmd | 11 --- 6 files changed, 173 deletions(-) delete mode 100644 examples/connect/auth/rstudio-connect-oidc-kubernetes.yaml delete mode 100644 examples/connect/auth/rstudio-connect-saml-kubernetes.yaml diff --git a/examples/connect/auth/oidc.qmd b/examples/connect/auth/oidc.qmd index 21486b88c..0ec27f091 100644 --- a/examples/connect/auth/oidc.qmd +++ b/examples/connect/auth/oidc.qmd @@ -14,16 +14,5 @@ See the [OpenID Connect Authentication](https://docs.posit.co/connect/admin/auth {{< include ../_prereqs.qmd >}} -## Kubernetes - -Recommended for Connect 2026.04.0+. - -```{.yaml include="rstudio-connect-oidc-kubernetes.yaml" filename="values.yaml"} -``` - -## Launcher - -For Connect versions older than 2026.04.0. - ```{.yaml include="rstudio-connect-oidc.yaml" filename="values.yaml"} ``` diff --git a/examples/connect/auth/rstudio-connect-oidc-kubernetes.yaml b/examples/connect/auth/rstudio-connect-oidc-kubernetes.yaml deleted file mode 100644 index d169edf66..000000000 --- a/examples/connect/auth/rstudio-connect-oidc-kubernetes.yaml +++ /dev/null @@ -1,77 +0,0 @@ -# Using a license file with the helm chart: -# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-file -# If you would like to use a license key see this documentation: -# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-key -license: - file: - secret: posit-licenses # TODO: Change to the secret name in your cluster - secretKey: connect.lic # TODO: Change to the secret key containing your Connect license - -# Configures Connect shared storage -sharedStorage: - create: true - mount: true - storageClassName: nfs-sc-rwx # TODO: Change to a RWX StorageClass available in your cluster - # volumeName: connect-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name. - requests: - storage: 100G - -launcher: - enabled: false - -backends: - kubernetes: - enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) - -# The config section overwrites values in Posit Connect's main -# .gcfg configuration file. -config: - Authentication: - Provider: oauth2 - OAuth2: - # please see https://docs.posit.co/connect/admin/authentication/oauth2-openid-based/openid-connect/ for more examples of custom OIDC integrations - # TODO: change the below to match your OIDC provider - ClientId: "0ebfafe9-237f-4e38-a85b-a0e5d6c06782" - ClientSecret: "2ab7be07-84fe-4569-b04a-ce8f1ebfc077" - OpenIDConnectIssuer: "https://example.com/issuer" - # - # Enable this for a better user experience, unless - # managing a large number of groups is a concern: - # GroupsAutoProvision: true - # - # By default the following claims are mapped to the following values - # in Connect. Uncomment and adjust the values below if your claims are - # different. - # https://docs.posit.co/connect/admin/authentication/oauth2-openid-based/openid-connect/#customizing-openid-connect - # UniqueIdClaim: "sub" - # EmailClaim: "email" - # FirstNameClaim: "given_name" - # LastNameClaim: "family_name" - # UsernameClaim: "preferred_username" - # GroupsClaim: "groups" - # - # When troubleshooting an OpenID Connect problem, more verbose logging - # is produced by uncommenting the following line: - # Logging: true - # - # By default all users get created with the Viewer role which is the default - # setting in Authorization.DefaultUserRole, which can be modified. - # Users can be automatically mapped to different roles based on group - # membership. - # https://docs.posit.co/connect/admin/authentication/oauth2-openid-based/openid-connect/#user-role-mapping - # - # Authorization: - # UserRoleGroupMapping: true - # PublisherRoleMapping: "Developers" - # AdministratorRoleMapping: "Administrators" - # - # Configures the Postgres connection for Posit Connect. - Database: - Provider: "Postgres" - Postgres: - # The URL syntax below is to utilize a PostgreSQL database installed - # in the cluster as described in the Kubernetes Cluster Preparation - # page of this guide. Change this URL if your PostgreSQL database is - # setup externally or in a different location. - URL: "postgres://connect@postgres.example.com:5432/connect?sslmode=disable" - Password: "" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=. diff --git a/examples/connect/auth/rstudio-connect-oidc.yaml b/examples/connect/auth/rstudio-connect-oidc.yaml index 169bc382a..0028acdd3 100644 --- a/examples/connect/auth/rstudio-connect-oidc.yaml +++ b/examples/connect/auth/rstudio-connect-oidc.yaml @@ -16,9 +16,6 @@ sharedStorage: requests: storage: 100G -launcher: - enabled: true # Required for Off-Host Execution mode - # The config section overwrites values in Posit Connect's main # .gcfg configuration file. config: diff --git a/examples/connect/auth/rstudio-connect-saml-kubernetes.yaml b/examples/connect/auth/rstudio-connect-saml-kubernetes.yaml deleted file mode 100644 index f76c507f3..000000000 --- a/examples/connect/auth/rstudio-connect-saml-kubernetes.yaml +++ /dev/null @@ -1,68 +0,0 @@ -# Using a license file with the helm chart: -# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-file -# If you would like to use a license key see this documentation: -# https://github.com/rstudio/helm/tree/main/charts/rstudio-connect#license-key -license: - file: - secret: posit-licenses # TODO: Change to the secret name in your cluster - secretKey: connect.lic # TODO: Change to the secret key containing your Connect license - -# Configures Connect shared storage -sharedStorage: - create: true - mount: true - storageClassName: nfs-sc-rwx # TODO: Change to a RWX StorageClass available in your cluster - # volumeName: connect-shared-pv-name # Only needed if PVs have been statically provisioned, in which case this will need to match the PV name. - requests: - storage: 100G - -launcher: - enabled: false - -backends: - kubernetes: - enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) - -# The config section overwrites values in Posit Connect's main -# .gcfg configuration file. -config: - Authentication: - Provider: saml - SAML: - # Please see https://docs.posit.co/connect/admin/authentication/saml-based/saml/ for more examples of custom SAML integrations - IdPMetaDataURL: "https://idp.example.com/saml/metadata" # TODO: Change to match your saml provider's metadata url - IdPAttributeProfile: default # TODO: Change to match your auth provider. Accepted values are "okta", "azure" (Azure AD/Entra ID), and "default" (all others) - # Setting IdPAttributeProfile will match Connect with certain attributes. - # These can be customized instead by not setting SAML.IdPAttributeProfile - # and defining each attribute instead in this section. - # https://docs.posit.co/connect/admin/authentication/saml-based/azure-ad-saml/#saml-attributes - # - # Enable this for a better user experience, unless - # managing a large number of groups is a concern: - # GroupsAutoProvision: true - # - # When troubleshooting a SAML problem, more verbose logging - # is produced by uncommenting the following line: - # Logging: true - # - # By default all users get created with the Viewer role which is the default - # setting in Authorization.DefaultUserRole, which can be modified. - # Users can be automatically mapped to different roles based on group - # membership. - # https://docs.posit.co/connect/admin/authentication/oauth2-openid-based/openid-connect/#user-role-mapping - # - # Authorization: - # UserRoleGroupMapping: true - # PublisherRoleMapping: "Developers" - # AdministratorRoleMapping: "Administrators" - # - # Configures the Postgres connection for Posit Connect. - Database: - Provider: "Postgres" - Postgres: - # The URL syntax below is to utilize a PostgreSQL database installed - # in the cluster as described in the Kubernetes Cluster Preparation - # page of this guide. Change this URL if your PostgreSQL database is - # setup externally or in a different location. - URL: "postgres://connect@postgres.example.com:5432/connect?sslmode=disable" - Password: "" # TODO: Remove this line and instead set the password during helm install with --set config.Postgres.Password=. diff --git a/examples/connect/auth/rstudio-connect-saml.yaml b/examples/connect/auth/rstudio-connect-saml.yaml index 763c890ac..510e5cf87 100644 --- a/examples/connect/auth/rstudio-connect-saml.yaml +++ b/examples/connect/auth/rstudio-connect-saml.yaml @@ -16,9 +16,6 @@ sharedStorage: requests: storage: 100G -launcher: - enabled: true # Required for Off-Host Execution mode - # The config section overwrites values in Posit Connect's main # .gcfg configuration file. config: diff --git a/examples/connect/auth/saml.qmd b/examples/connect/auth/saml.qmd index 26920c58b..d112c5e28 100644 --- a/examples/connect/auth/saml.qmd +++ b/examples/connect/auth/saml.qmd @@ -14,16 +14,5 @@ See the [Authentication Integration (Using SAML)](https://docs.posit.co/connect/ {{< include ../_prereqs.qmd >}} -## Kubernetes - -Recommended for Connect 2026.04.0+. - -```{.yaml include="rstudio-connect-saml-kubernetes.yaml" filename="values.yaml"} -``` - -## Launcher - -For Connect versions older than 2026.04.0. - ```{.yaml include="rstudio-connect-saml.yaml" filename="values.yaml"} ``` From 9ecefa46bf420df4b4f88134131ad0b0717c1522 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 13:54:00 -0500 Subject: [PATCH 08/15] Clarify that executionEnvironments is the recommended approach Mark executionEnvironments as recommended in the shared description and add upgrade guidance in the Launcher sections of both container image pages. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/container-images/custom-images.qmd | 4 ++-- examples/connect/container-images/private-images.qmd | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index d1c847f49..c8beafbd6 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [rstudio/content-base](https://hub.docker.com/r/rstudio/content-base) - Content init container [rstudio/rstudio-connect-content-init](https://hub.docker.com/r/rstudio/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (recommended) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. {{< include ../_prereqs.qmd >}} @@ -27,7 +27,7 @@ Use `executionEnvironments` instead of `launcher.customRuntimeYaml` to define co ## Launcher -For Connect versions older than 2026.04.0. +For Connect versions older than 2026.04.0. If upgrading to Connect 2026.04.0+, use `executionEnvironments` instead of `customRuntimeYaml`. ```{.yaml include="rstudio-connect-custom-image.yaml" filename="values.yaml"} ``` diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index 054bf5728..46355c0b0 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [ghcr.io/rstudio/content-base](https://github.com/rstudio/rstudio-docker-products/pkgs/container/content-base) - Content init container [ghcr.io/rstudio/rstudio-connect-content-init](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (recommended) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. These images can be pulled from your own container registry instead of the public Posit provided images. This example also shows where to provide private registry credentials in the form of a Kubernetes secret of type `kubernetes.io/dockercfg`. @@ -32,7 +32,7 @@ The `backends.kubernetes.defaultResourceJobBase.spec.template.spec.imagePullSecr ## Launcher -For Connect versions older than 2026.04.0. +For Connect versions older than 2026.04.0. If upgrading to Connect 2026.04.0+, use `executionEnvironments` instead of `customRuntimeYaml`. The `launcher.templateValues.pod.imagePullSecrets` provides the pod-level `imagePullSecret` that provides the secret to pull the `launcher.defaultInitContainer` as well. From 0d3a813f42c3fc396c091792e5f30f5f45c992b9 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 13:54:59 -0500 Subject: [PATCH 09/15] Stop recommending customRuntimeYaml in container image docs Drop customRuntimeYaml references from shared descriptions and Kubernetes sections. Launcher examples still use it for older versions but the docs no longer draw attention to it. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/container-images/custom-images.qmd | 6 +++--- examples/connect/container-images/private-images.qmd | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index c8beafbd6..f513eecc7 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [rstudio/content-base](https://hub.docker.com/r/rstudio/content-base) - Content init container [rstudio/rstudio-connect-content-init](https://hub.docker.com/r/rstudio/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (recommended) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` overrides the default execution environments. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. {{< include ../_prereqs.qmd >}} @@ -20,14 +20,14 @@ There are several content containers listed as execution environments by default Recommended for Connect 2026.04.0+. -Use `executionEnvironments` instead of `launcher.customRuntimeYaml` to define content images. Unlike `customRuntimeYaml`, changes to `executionEnvironments` take effect on every `helm upgrade` without requiring a pod restart or database reset. +Define content images with `executionEnvironments`. Changes take effect on every `helm upgrade` without requiring a pod restart or database reset. ```{.yaml include="rstudio-connect-custom-image-kubernetes.yaml" filename="values.yaml"} ``` ## Launcher -For Connect versions older than 2026.04.0. If upgrading to Connect 2026.04.0+, use `executionEnvironments` instead of `customRuntimeYaml`. +For Connect versions older than 2026.04.0. ```{.yaml include="rstudio-connect-custom-image.yaml" filename="values.yaml"} ``` diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index 46355c0b0..1f3c620f0 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [ghcr.io/rstudio/content-base](https://github.com/rstudio/rstudio-docker-products/pkgs/container/content-base) - Content init container [ghcr.io/rstudio/rstudio-connect-content-init](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` (recommended) or `customRuntimeYaml` (Launcher) uses the execution environments defined in that section instead of the default ones. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` overrides the default execution environments. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. These images can be pulled from your own container registry instead of the public Posit provided images. This example also shows where to provide private registry credentials in the form of a Kubernetes secret of type `kubernetes.io/dockercfg`. @@ -32,7 +32,7 @@ The `backends.kubernetes.defaultResourceJobBase.spec.template.spec.imagePullSecr ## Launcher -For Connect versions older than 2026.04.0. If upgrading to Connect 2026.04.0+, use `executionEnvironments` instead of `customRuntimeYaml`. +For Connect versions older than 2026.04.0. The `launcher.templateValues.pod.imagePullSecrets` provides the pod-level `imagePullSecret` that provides the secret to pull the `launcher.defaultInitContainer` as well. From 86b6be32406327c39d73fd727c25462bb26d9d49 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 13:56:14 -0500 Subject: [PATCH 10/15] Remove outdated default execution environments bootstrapping text The default-runtime.yaml bootstrapping behavior is being removed in an upcoming PR, so drop the paragraph referencing it from both container image doc pages. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/container-images/custom-images.qmd | 2 +- examples/connect/container-images/private-images.qmd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index f513eecc7..be1927204 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [rstudio/content-base](https://hub.docker.com/r/rstudio/content-base) - Content init container [rstudio/rstudio-connect-content-init](https://hub.docker.com/r/rstudio/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` overrides the default execution environments. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. {{< include ../_prereqs.qmd >}} diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index 1f3c620f0..c3c45ff1b 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -12,7 +12,7 @@ There are a minimum of three images that Connect requires to function in Off-Hos - Content container [ghcr.io/rstudio/content-base](https://github.com/rstudio/rstudio-docker-products/pkgs/container/content-base) - Content init container [ghcr.io/rstudio/rstudio-connect-content-init](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect-content-init) -There are several content containers listed as execution environments by default on initial Connect startup based on the listing in the [default-runtime.yaml](https://github.com/rstudio/helm/blob/main/charts/rstudio-connect/default-runtime.yaml) file. Setting `executionEnvironments` overrides the default execution environments. Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. +Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. These images can be pulled from your own container registry instead of the public Posit provided images. This example also shows where to provide private registry credentials in the form of a Kubernetes secret of type `kubernetes.io/dockercfg`. From 401038af0c95866507d540998909156d6ca97cc4 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 14:03:09 -0500 Subject: [PATCH 11/15] Use 'and later' instead of '+' for version references in docs Spell out '2026.04.0 and later' in prose for clarity, rather than relying on the '+' shorthand. Co-Authored-By: Claude Opus 4.6 (1M context) --- examples/connect/application-configuration/index.qmd | 2 +- examples/connect/container-images/custom-images.qmd | 2 +- examples/connect/container-images/private-images.qmd | 2 +- examples/connect/index.qmd | 2 +- examples/connect/storage/additional-volumes.qmd | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/connect/application-configuration/index.qmd b/examples/connect/application-configuration/index.qmd index 541e3fbae..3870a0c47 100644 --- a/examples/connect/application-configuration/index.qmd +++ b/examples/connect/application-configuration/index.qmd @@ -17,7 +17,7 @@ These settings are recommend for most deployments and are described below: ## Kubernetes -Recommended for Connect 2026.04.0+. +Recommended for Connect 2026.04.0 and later. ```{.yaml include="rstudio-connect-recommended-app-config-kubernetes.yaml" filename="values.yaml"} ``` diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index be1927204..109391005 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -18,7 +18,7 @@ Additional content containers may be added to provide more R, Python, and Quarto ## Kubernetes -Recommended for Connect 2026.04.0+. +Recommended for Connect 2026.04.0 and later. Define content images with `executionEnvironments`. Changes take effect on every `helm upgrade` without requiring a pod restart or database reset. diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index c3c45ff1b..199dc78b6 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -23,7 +23,7 @@ The registry credentials secret must be specified in two places in the values to ## Kubernetes -Recommended for Connect 2026.04.0+. +Recommended for Connect 2026.04.0 and later. The `backends.kubernetes.defaultResourceJobBase.spec.template.spec.imagePullSecrets` provides the pod-level `imagePullSecret` for content and init containers. diff --git a/examples/connect/index.qmd b/examples/connect/index.qmd index a40ae8a84..64f079fcf 100644 --- a/examples/connect/index.qmd +++ b/examples/connect/index.qmd @@ -10,7 +10,7 @@ The examples in this directory provide a starting point for deploying Posit Conn Posit Connect supports two backends for off-host execution: -- **`backends.kubernetes`** (recommended) -- Connect 2026.04.0+ manages content Jobs and Services natively through Kubernetes. +- **`backends.kubernetes`** (recommended) -- Connect 2026.04.0 and later manages content Jobs and Services natively through Kubernetes. - **Launcher** -- For Connect versions older than 2026.04.0. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). Examples that involve off-host execution configuration provide values for both backends, with the recommended `backends.kubernetes` approach shown first. diff --git a/examples/connect/storage/additional-volumes.qmd b/examples/connect/storage/additional-volumes.qmd index c63b0338b..1682d3fc7 100644 --- a/examples/connect/storage/additional-volumes.qmd +++ b/examples/connect/storage/additional-volumes.qmd @@ -14,7 +14,7 @@ For example, if you need to add TLS certificates for Connect via a `ConfigMap` t ## Kubernetes -Recommended for Connect 2026.04.0+. +Recommended for Connect 2026.04.0 and later. Specify content container volumes and mounts under `backends.kubernetes.defaultResourceJobBase` using standard Kubernetes Job spec fields. Name the content container `connect-content`. From 739ee1f72fa323e9ae24839dd9b4112eabb5e3ed Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 14:04:21 -0500 Subject: [PATCH 12/15] Also update YAML comments to use 'and later' for version references Consistent with the .qmd prose change. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../rstudio-connect-recommended-app-config-kubernetes.yaml | 2 +- .../rstudio-connect-custom-image-kubernetes.yaml | 2 +- .../rstudio-connect-custom-image-private-kubernetes.yaml | 2 +- .../rstudio-connect-with-additional-mounts-kubernetes.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/connect/application-configuration/rstudio-connect-recommended-app-config-kubernetes.yaml b/examples/connect/application-configuration/rstudio-connect-recommended-app-config-kubernetes.yaml index eb5058b2e..a5e43f6ef 100644 --- a/examples/connect/application-configuration/rstudio-connect-recommended-app-config-kubernetes.yaml +++ b/examples/connect/application-configuration/rstudio-connect-recommended-app-config-kubernetes.yaml @@ -47,7 +47,7 @@ launcher: backends: kubernetes: - enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0 and later) defaultResourceJobBase: spec: template: diff --git a/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml b/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml index 82ca8bb1e..431573273 100644 --- a/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml +++ b/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml @@ -28,7 +28,7 @@ launcher: backends: kubernetes: - enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0 and later) # Define the custom image(s) for the content pod(s) init container defaultInitContainer: repository: ghcr.io/rstudio/rstudio-connect-content-init # TODO: Change to match your custom image repository diff --git a/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml b/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml index 562c3198f..7c92f04ce 100644 --- a/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml +++ b/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml @@ -29,7 +29,7 @@ launcher: backends: kubernetes: - enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0 and later) # Define the custom image(s) for the content pod(s) init container defaultInitContainer: repository: ghcr.io/rstudio/rstudio-connect-content-init # TODO: Change to match your custom image repository diff --git a/examples/connect/storage/rstudio-connect-with-additional-mounts-kubernetes.yaml b/examples/connect/storage/rstudio-connect-with-additional-mounts-kubernetes.yaml index 22d2170e7..bf6038381 100644 --- a/examples/connect/storage/rstudio-connect-with-additional-mounts-kubernetes.yaml +++ b/examples/connect/storage/rstudio-connect-with-additional-mounts-kubernetes.yaml @@ -37,7 +37,7 @@ launcher: # which is often the case if you need to mount data for content to access backends: kubernetes: - enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0+) + enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0 and later) defaultResourceJobBase: spec: template: From a2a7d0b8e0a2d790ff5a491082288f5dbc6fe654 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 15:09:00 -0500 Subject: [PATCH 13/15] Use new posit-dev/images-connect images in Kubernetes examples Update the Kubernetes custom image examples to reference the new images from posit-dev/images-connect (connect, connect-content, connect-content-init) instead of the legacy rstudio/rstudio-docker-products images. Update the runtime versions to match the new content image tag format (R4.5.2-python3.14.3-ubuntu-24.04) and drop the unneeded ubuntu2204- tagPrefix. Launcher examples continue to reference the legacy images since they target older Connect versions. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../container-images/custom-images.qmd | 6 ++--- .../container-images/private-images.qmd | 6 ++--- ...tudio-connect-custom-image-kubernetes.yaml | 22 +++++++++---------- ...nnect-custom-image-private-kubernetes.yaml | 22 +++++++++---------- 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/examples/connect/container-images/custom-images.qmd b/examples/connect/container-images/custom-images.qmd index 109391005..a63e17a1e 100644 --- a/examples/connect/container-images/custom-images.qmd +++ b/examples/connect/container-images/custom-images.qmd @@ -8,9 +8,9 @@ This example deploys Posit Connect using custom images instead of the default pu There are a minimum of three images that Connect requires to function in Off-Host Execution mode. They are listed below with their cooresponding default public repositories. -- Connect service container [rstudio/rstudio-connect](https://hub.docker.com/r/rstudio/rstudio-connect) -- Content container [rstudio/content-base](https://hub.docker.com/r/rstudio/content-base) -- Content init container [rstudio/rstudio-connect-content-init](https://hub.docker.com/r/rstudio/rstudio-connect-content-init) +- Connect service container [posit/connect](https://hub.docker.com/r/posit/connect) +- Content container [posit/connect-content](https://hub.docker.com/r/posit/connect-content) +- Content init container [posit/connect-content-init](https://hub.docker.com/r/posit/connect-content-init) Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. diff --git a/examples/connect/container-images/private-images.qmd b/examples/connect/container-images/private-images.qmd index 199dc78b6..21762707c 100644 --- a/examples/connect/container-images/private-images.qmd +++ b/examples/connect/container-images/private-images.qmd @@ -8,9 +8,9 @@ This example deploys Posit Connect using custom images in registries requiring a There are a minimum of three images that Connect requires to function in Off-Host Execution mode. They are listed below with their cooresponding default public repositories on ghcr.io -- Connect service container [ghcr.io/rstudio/rstudio-connect](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect) -- Content container [ghcr.io/rstudio/content-base](https://github.com/rstudio/rstudio-docker-products/pkgs/container/content-base) -- Content init container [ghcr.io/rstudio/rstudio-connect-content-init](https://github.com/rstudio/rstudio-docker-products/pkgs/container/rstudio-connect-content-init) +- Connect service container [ghcr.io/posit-dev/connect](https://github.com/posit-dev/images-connect/pkgs/container/connect) +- Content container [ghcr.io/posit-dev/connect-content](https://github.com/posit-dev/images-connect/pkgs/container/connect-content) +- Content init container [ghcr.io/posit-dev/connect-content-init](https://github.com/posit-dev/images-connect/pkgs/container/connect-content-init) Additional content containers may be added to provide more R, Python, and Quarto versions and other system dependencies. See the [Content Execution Environment](https://docs.posit.co/connect/admin/appendix/off-host/execution-environments/) section in the Connect Admin Guide for more details. diff --git a/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml b/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml index 431573273..062e38d91 100644 --- a/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml +++ b/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml @@ -19,8 +19,7 @@ sharedStorage: # Define the custom image for the Connect pod(s) image: - repository: ghcr.io/rstudio/rstudio-connect # TODO: Change to match your custom image repository - tagPrefix: ubuntu2204- # TODO: Change to match your custom image tag prefix + repository: ghcr.io/posit-dev/connect # TODO: Change to match your custom image repository tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. launcher: @@ -31,8 +30,7 @@ backends: enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0 and later) # Define the custom image(s) for the content pod(s) init container defaultInitContainer: - repository: ghcr.io/rstudio/rstudio-connect-content-init # TODO: Change to match your custom image repository - tagPrefix: ubuntu2204- # TODO: Change to match your custom image tag prefix + repository: ghcr.io/posit-dev/connect-content-init # TODO: Change to match your custom image repository tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. # Define the custom image(s) for the content pod(s). @@ -40,21 +38,21 @@ backends: # without requiring a pod restart or database reset. executionEnvironments: # TODO: Add custom images based on the below template - - name: ghcr.io/rstudio/content-base:r4.2.2-py3.11.3-ubuntu2204 # TODO: Change to match your custom image repository + - name: ghcr.io/posit-dev/connect-content:R4.5.2-python3.14.3-ubuntu-24.04 # TODO: Change to match your custom image repository title: "Custom Runtime" # TODO: Change to a descriptive title - description: "Runtime with R 4.2.2 and Python 3.11.3" # TODO: Change to a descriptive description + description: "Runtime with R 4.5.2 and Python 3.14.3" # TODO: Change to a descriptive description python: installations: - - path: /opt/python/3.11.3/bin/python3 # TODO: Change to match the Python path available in your image - version: 3.11.3 # TODO: Change to match the Python version available in your image + - path: /opt/python/3.14.3/bin/python3 # TODO: Change to match the Python path available in your image + version: 3.14.3 # TODO: Change to match the Python version available in your image r: installations: - - path: /opt/R/4.2.2/bin/R # TODO: Change to match the R path available in your image - version: 4.2.2 # TODO: Change to match the R version available in your image + - path: /opt/R/4.5.2/bin/R # TODO: Change to match the R path available in your image + version: 4.5.2 # TODO: Change to match the R version available in your image quarto: installations: - - path: /opt/quarto/1.3.340/bin/quarto # TODO: Change to match the quarto path available in your image - version: 1.3.340 # TODO: Change to match the Quarto version available in your image + - path: /opt/quarto/1.8.27/bin/quarto # TODO: Change to match the quarto path available in your image + version: 1.8.27 # TODO: Change to match the Quarto version available in your image # The config section overwrites values in Posit Connect's main # .gcfg configuration file. diff --git a/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml b/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml index 7c92f04ce..d8866efc5 100644 --- a/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml +++ b/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml @@ -18,8 +18,7 @@ sharedStorage: # Define the custom image for the Connect pod(s) image: - repository: ghcr.io/rstudio/rstudio-connect # TODO: Change to match your custom image repository - tagPrefix: ubuntu2204- # TODO: Change to match your custom image tag prefix + repository: ghcr.io/posit-dev/connect # TODO: Change to match your custom image repository tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. imagePullSecrets: - name: private-registery-creds # TODO: Change this to match the secret of type kubernetes.io/dockercfg in your cluster containing authentication credentials to your registry. More information: https://kubernetes.io/docs/concepts/configuration/secret/#docker-config-secrets @@ -32,8 +31,7 @@ backends: enabled: true # Required for Off-Host Execution mode (Connect 2026.04.0 and later) # Define the custom image(s) for the content pod(s) init container defaultInitContainer: - repository: ghcr.io/rstudio/rstudio-connect-content-init # TODO: Change to match your custom image repository - tagPrefix: ubuntu2204- # TODO: Change to match your custom image tag prefix + repository: ghcr.io/posit-dev/connect-content-init # TODO: Change to match your custom image repository tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. defaultResourceJobBase: spec: @@ -47,21 +45,21 @@ backends: # without requiring a pod restart or database reset. executionEnvironments: # TODO: Add custom images based on the below template - - name: ghcr.io/rstudio/content-base:r4.2.2-py3.11.3-ubuntu2204 # TODO: Change to match your custom image repository + - name: ghcr.io/posit-dev/connect-content:R4.5.2-python3.14.3-ubuntu-24.04 # TODO: Change to match your custom image repository title: "Custom Runtime" # TODO: Change to a descriptive title - description: "Runtime with R 4.2.2 and Python 3.11.3" # TODO: Change to a descriptive description + description: "Runtime with R 4.5.2 and Python 3.14.3" # TODO: Change to a descriptive description python: installations: - - path: /opt/python/3.11.3/bin/python3 # TODO: Change to match the Python path available in your image - version: 3.11.3 # TODO: Change to match the Python version available in your image + - path: /opt/python/3.14.3/bin/python3 # TODO: Change to match the Python path available in your image + version: 3.14.3 # TODO: Change to match the Python version available in your image r: installations: - - path: /opt/R/4.2.2/bin/R # TODO: Change to match the R path available in your image - version: 4.2.2 # TODO: Change to match the R version available in your image + - path: /opt/R/4.5.2/bin/R # TODO: Change to match the R path available in your image + version: 4.5.2 # TODO: Change to match the R version available in your image quarto: installations: - - path: /opt/quarto/1.3.340/bin/quarto # TODO: Change to match the quarto path available in your image - version: 1.3.340 # TODO: Change to match the Quarto version available in your image + - path: /opt/quarto/1.8.27/bin/quarto # TODO: Change to match the quarto path available in your image + version: 1.8.27 # TODO: Change to match the Quarto version available in your image # The config section overwrites values in Posit Connect's main # .gcfg configuration file. From 4b97825c6005c99c3e863b144a87219049545652 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 15:14:08 -0500 Subject: [PATCH 14/15] Set tagPrefix to empty in Kubernetes examples using posit-dev images The chart's default tagPrefix is ubuntu2204-, which is appended to the auto-filled appVersion tag. The new posit-dev/images-connect images do not use that prefix (tags are just the version, like 2026.03.1), so explicitly clear tagPrefix to produce a valid image reference. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../rstudio-connect-custom-image-kubernetes.yaml | 2 ++ .../rstudio-connect-custom-image-private-kubernetes.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml b/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml index 062e38d91..b707d75cf 100644 --- a/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml +++ b/examples/connect/container-images/rstudio-connect-custom-image-kubernetes.yaml @@ -20,6 +20,7 @@ sharedStorage: # Define the custom image for the Connect pod(s) image: repository: ghcr.io/posit-dev/connect # TODO: Change to match your custom image repository + tagPrefix: "" # New posit-dev/images-connect images do not use a tag prefix tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. launcher: @@ -31,6 +32,7 @@ backends: # Define the custom image(s) for the content pod(s) init container defaultInitContainer: repository: ghcr.io/posit-dev/connect-content-init # TODO: Change to match your custom image repository + tagPrefix: "" # New posit-dev/images-connect images do not use a tag prefix tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. # Define the custom image(s) for the content pod(s). diff --git a/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml b/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml index d8866efc5..e1a04bd14 100644 --- a/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml +++ b/examples/connect/container-images/rstudio-connect-custom-image-private-kubernetes.yaml @@ -19,6 +19,7 @@ sharedStorage: # Define the custom image for the Connect pod(s) image: repository: ghcr.io/posit-dev/connect # TODO: Change to match your custom image repository + tagPrefix: "" # New posit-dev/images-connect images do not use a tag prefix tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. imagePullSecrets: - name: private-registery-creds # TODO: Change this to match the secret of type kubernetes.io/dockercfg in your cluster containing authentication credentials to your registry. More information: https://kubernetes.io/docs/concepts/configuration/secret/#docker-config-secrets @@ -32,6 +33,7 @@ backends: # Define the custom image(s) for the content pod(s) init container defaultInitContainer: repository: ghcr.io/posit-dev/connect-content-init # TODO: Change to match your custom image repository + tagPrefix: "" # New posit-dev/images-connect images do not use a tag prefix tag: "" # TODO: Change to match your custom image tag. By default when this is left blank the chart app version is automatically filled out. defaultResourceJobBase: spec: From 62e3f147c8267bd8856be126791622ce81c09c69 Mon Sep 17 00:00:00 2001 From: Lucas Rodriguez Date: Tue, 21 Apr 2026 15:36:33 -0500 Subject: [PATCH 15/15] Update examples/connect/index.qmd Co-authored-by: E. David Aja --- examples/connect/index.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/connect/index.qmd b/examples/connect/index.qmd index 64f079fcf..adf710f2f 100644 --- a/examples/connect/index.qmd +++ b/examples/connect/index.qmd @@ -10,7 +10,7 @@ The examples in this directory provide a starting point for deploying Posit Conn Posit Connect supports two backends for off-host execution: -- **`backends.kubernetes`** (recommended) -- Connect 2026.04.0 and later manages content Jobs and Services natively through Kubernetes. +- **`backends.kubernetes`** (recommended) -- Connect 2026.04.0 and later manages content Jobs and Services directly. - **Launcher** -- For Connect versions older than 2026.04.0. Existing installations can upgrade using the [upgrade guide](upgrade-launcher-to-kubernetes/launcher-to-kubernetes.qmd). Examples that involve off-host execution configuration provide values for both backends, with the recommended `backends.kubernetes` approach shown first.