Skip to content

Clarify registry auth behavior per install method#4176

Merged
AmberAlston merged 3 commits into
mainfrom
registry-auth-docs-by-install-method
Jun 15, 2026
Merged

Clarify registry auth behavior per install method#4176
AmberAlston merged 3 commits into
mainfrom
registry-auth-docs-by-install-method

Conversation

@AmberAlston

@AmberAlston AmberAlston commented Jun 12, 2026

Copy link
Copy Markdown
Member

Preview links

Tied to https://app.shortcut.com/replicated/story/136977/update-proxy-registry-and-registry-auth-docs-to-explain-how-auth-works-across-install-methods

Summary

  • Registry security page: Replaced the generic registry_token description with per-install-method breakdown (KOTS/EC v2 use license ID, Helm CLI/EC v3 use license ID or service account token)
  • Proxy registry overview: Expanded "steps vary by deployment method" into concrete per-method explanations of how pull secrets are created and what credentials are used
  • Fixed a typo ("steps the enable" -> "steps to enable")

Related: sc-136977

Test plan

  • Verify links to existing pages (/vendor/private-images-kots, /vendor/helm-image-registry, /vendor/packaging-private-images) still resolve
  • Review proxy URL example format (proxy.replicated.com/proxy/<app-slug>/...) matches actual behavior
  • Confirm EC v3 service account token description aligns with current implementation

🤖 Generated with Claude Code

The end customer auth section previously only referenced registry_token
without explaining how credentials differ across Helm CLI, KOTS, EC v2,
and EC v3 installs. The proxy registry overview said "steps vary" without
giving any context on what varies and why.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@AmberAlston AmberAlston requested a review from a team as a code owner June 12, 2026 21:54
@netlify

netlify Bot commented Jun 12, 2026

Copy link
Copy Markdown

Deploy Preview for replicated-docs ready!

Name Link
🔨 Latest commit b040548
🔍 Latest deploy log https://app.netlify.com/projects/replicated-docs/deploys/6a302e00d8fe420008789e08
😎 Deploy Preview https://deploy-preview-4176--replicated-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented Jun 12, 2026

Copy link
Copy Markdown

Deploy Preview for replicated-docs-upgrade ready!

Name Link
🔨 Latest commit b040548
🔍 Latest deploy log https://app.netlify.com/projects/replicated-docs-upgrade/deploys/6a302e00765a4e00088f009f
😎 Deploy Preview https://deploy-preview-4176--replicated-docs-upgrade.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@replicated-ci replicated-ci added type::docs Improvements or additions to documentation type::feature labels Jun 12, 2026
### End customer authentication

A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Replicated.Passive] In general, use active voice instead of passive voice ('is read').

A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Replicated.Passive] In general, use active voice instead of passive voice ('is used').

A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Replicated.WordSwapsCaseSensitive] Use 'Admin Console' instead of 'admin console'.


- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console.

- **Helm CLI and Embedded Cluster v3 installations**: Customers authenticate using either a license ID or an enterprise portal service account token. The credentials are provided during `helm registry login` or `docker login` before installation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Replicated.WordSwapsCaseSensitive] Use 'Enterprise Portal' instead of 'enterprise portal'.


- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console.

- **Helm CLI and Embedded Cluster v3 installations**: Customers authenticate using either a license ID or an enterprise portal service account token. The credentials are provided during `helm registry login` or `docker login` before installation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Replicated.Passive] In general, use active voice instead of passive voice ('are provided').


- **Helm CLI and Embedded Cluster v3 installations**: Customers authenticate using either a license ID or an enterprise portal service account token. The credentials are provided during `helm registry login` or `docker login` before installation.

In all cases, pull access is scoped to images belonging to the vendor's account. All requests to pull images are denied when a customer's license expires or the expiration date is changed to a past date.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Replicated.Passive] In general, use active voice instead of passive voice ('is scoped').


- **Helm CLI and Embedded Cluster v3 installations**: Customers authenticate using either a license ID or an enterprise portal service account token. The credentials are provided during `helm registry login` or `docker login` before installation.

In all cases, pull access is scoped to images belonging to the vendor's account. All requests to pull images are denied when a customer's license expires or the expiration date is changed to a past date.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Replicated.Passive] In general, use active voice instead of passive voice ('are denied').


- **Helm CLI and Embedded Cluster v3 installations**: Customers authenticate using either a license ID or an enterprise portal service account token. The credentials are provided during `helm registry login` or `docker login` before installation.

In all cases, pull access is scoped to images belonging to the vendor's account. All requests to pull images are denied when a customer's license expires or the expiration date is changed to a past date.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Replicated.Passive] In general, use active voice instead of passive voice ('is changed').

* [Use the Proxy Registry with Helm CLI Installations](/vendor/helm-image-registry)
After connecting your registry, the steps to enable the proxy registry vary depending on your application deployment method:

* **Helm CLI installations**: The Replicated SDK, included as a subchart, creates the image pull secret in the cluster at runtime. Customer credentials are provided during `helm registry login` before installation. For more information, see [Use the Proxy Registry with Helm CLI Installations](/vendor/helm-image-registry).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Replicated.Passive] In general, use active voice instead of passive voice ('are provided').


* **KOTS and Embedded Cluster v2 installations**: Replicated automatically builds an image pull secret using the customer's license ID and includes it in the release payload. Image references in your manifests are rewritten to proxy-prefixed URLs (for example, `proxy.replicated.com/proxy/<app-slug>/gcr.io/my-org/my-app:latest`). For more information, see [Use the Proxy Registry with Replicated Installers](/vendor/private-images-kots).

* **Embedded Cluster v3 installations**: The Embedded Cluster daemon handles registry authentication using an enterprise portal service account token instead of a license ID.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Replicated.WordSwapsCaseSensitive] Use 'Enterprise Portal' instead of 'enterprise portal'.

…kens

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console. Embedded Cluster v2 installations accessed through the Enterprise Portal can also use an enterprise portal service account token.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 [vale] reported by reviewdog 🐶
[Replicated.Passive] In general, use active voice instead of passive voice ('is used').

A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console. Embedded Cluster v2 installations accessed through the Enterprise Portal can also use an enterprise portal service account token.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Replicated.WordSwapsCaseSensitive] Use 'Admin Console' instead of 'admin console'.

A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console. Embedded Cluster v2 installations accessed through the Enterprise Portal can also use an enterprise portal service account token.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Replicated.WordSwapsCaseSensitive] Use 'Enterprise Portal' instead of 'enterprise portal'.


- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console. Embedded Cluster v2 installations accessed through the Enterprise Portal can also use an enterprise portal service account token.

- **Helm CLI and Embedded Cluster v3 installations**: Customers authenticate using either a license ID or an enterprise portal service account token. The credentials are provided during `helm registry login` or `docker login` before installation.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm i don't think EC V3 supports using a service account token to auth here. i believe we only use the license id. unless the license id is set to a service account token when it's downloaded?


* **KOTS and Embedded Cluster v2 installations**: Replicated automatically builds an image pull secret using the customer's license ID and includes it in the release payload. Image references in your manifests are rewritten to proxy-prefixed URLs (for example, `proxy.replicated.com/proxy/<app-slug>/gcr.io/my-org/my-app:latest`). For more information, see [Use the Proxy Registry with Replicated Installers](/vendor/private-images-kots).

* **Embedded Cluster v3 installations**: The Embedded Cluster daemon handles registry authentication using an enterprise portal service account token instead of a license ID.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same note as above. EC V3 uses license.spec.licenseID, i assume SaaS sets that to the service account token?

A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

- **KOTS and Embedded Cluster v2 installations**: The KOTS license ID is used as both the username and password when authenticating to `registry.replicated.com` and `proxy.replicated.com`. Replicated builds the image pull secret (`dockerconfigjson`) automatically and includes it in the release payload delivered to the admin console. Embedded Cluster v2 installations accessed through the Enterprise Portal can also use an enterprise portal service account token.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

username is hardcoded to LICENSE_ID

Per eng review: the actual username in pull secrets is implementation-
specific and varies between server-side and client-side. Keep the docs
focused on the credential source (license ID) without specifying the
exact username/password format.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

- **KOTS and Embedded Cluster v2 installations**: Replicated builds the image pull secret automatically using credentials derived from the customer's license ID and includes it in the release payload delivered to the admin console. Embedded Cluster v2 installations accessed through the Enterprise Portal can also use an enterprise portal service account token.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Replicated.WordSwapsCaseSensitive] Use 'Admin Console' instead of 'admin console'.

A valid (unexpired) license file has an embedded `registry_token` value. Replicated components shipped to customers use this value to authenticate to the registry. Only pull access is enabled when authenticating using a `registry_token`. A `registry_token` has pull access to all images in the tenant's account. All requests to pull images are denied when a license expires or the expiration date is changed to a past date.
End customer access to the registry is read-only (pull access only). The specific credential used depends on the installation method:

- **KOTS and Embedded Cluster v2 installations**: Replicated builds the image pull secret automatically using credentials derived from the customer's license ID and includes it in the release payload delivered to the admin console. Embedded Cluster v2 installations accessed through the Enterprise Portal can also use an enterprise portal service account token.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [vale] reported by reviewdog 🐶
[Replicated.WordSwapsCaseSensitive] Use 'Enterprise Portal' instead of 'enterprise portal'.

@AmberAlston AmberAlston merged commit 97f5f4c into main Jun 15, 2026
5 checks passed
@AmberAlston AmberAlston deleted the registry-auth-docs-by-install-method branch June 15, 2026 16:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type::docs Improvements or additions to documentation type::feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants