From 00872408a4fb51fae62c98cb50345e4097b5f428 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Mon, 12 Aug 2024 12:05:19 -0600 Subject: [PATCH 01/30] Add Embedded Cluster to Replicated intro content --- docs/intro-kots.md | 18 +++++++++--------- docs/intro-replicated.md | 9 ++++----- docs/partials/kots/_kots-definition.mdx | 2 +- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/docs/intro-kots.md b/docs/intro-kots.md index 2dcefb9f66..58358f431f 100644 --- a/docs/intro-kots.md +++ b/docs/intro-kots.md @@ -12,12 +12,12 @@ The Replicated KOTS entitlement is required to install applications with KOTS. F -KOTS communicates securely with the Replicated vendor platform to synchronize customer licenses, check for available application updates, send instance data, share customer-generated support bundles, and more. +KOTS communicates securely with the Replicated Vendor Portal to synchronize customer licenses, check for available application updates, send instance data, share customer-generated support bundles, and more. Installing an application with KOTS provides access to feautures such as: * Support for air gap installations -* Support for installations on VMs or bare metal servers +* Support for installations on VMs or bare metal servers, when using Replicated Embedded Cluster or Replicated kURL * The KOTS Admin Console, which provides a user interface where customers can install and manage their application instances * Instance telemetry automatically sent to the vendor portal for instances running in customer environments * Strict preflight checks that block installation if environment requirements are not met @@ -29,13 +29,13 @@ KOTS is an open source project that is maintained by Replicated. For more inform ## About Installing with KOTS KOTS can be used to install applications in Kubernetes clusters, including: +* Clusters provisioned on VMs or bare metal servers with Replicated Embedded Cluster or Replicated kURL * Existing clusters brought by the user -* Online or air gapped clusters -* Embedded clusters provisioned on VMs or bare metal servers with Replicated Embedded Cluster or Replicated kURL +* Online or air gap clusters -To install an application with KOTS, users first run an installation script to install KOTS in the target cluster and deploy the KOTS Admin Console. After KOTS is installed, users can log in to the KOTS Admin Console to upload their license file, configure the application, run preflight checks, and install and deploy the application. +To install an application with KOTS, users first run an installation script that installs KOTS in the target cluster and deploys the KOTS Admin Console. After KOTS is installed, users can log in to the KOTS Admin Console to upload their license file, configure the application, run preflight checks, and install and deploy the application. -The following diagram demonstrates how a single release promoted to the Stable channel in the Replicated vendor platform can be installed using KOTS in an embedded cluster on a VM, in an air gapped cluster, and in an existing internet-connected cluster: +The following diagram demonstrates how a single release promoted to the Stable channel in the Vendor Portal can be installed using KOTS on a VM, in an air gap cluster, and in an existing internet-connected cluster: Embedded cluster, air gap, and existing cluster app installation workflows @@ -43,8 +43,8 @@ The following diagram demonstrates how a single release promoted to the Stable c As shown in the diagram above: * For installations in existing internet-connected clusters, users run a command to install KOTS in their cluster. -* For embedded cluster installations on VMs or bare metal servers, users run an installation script that both provisions a cluster in their environment and installs KOTS in the cluster. -* For installations in air gapped clusters, users download air gap bundles for KOTS and the application from the Replicated download portal and then provide the bundles during installation. +* For installations on VMs or bare metal servers, users run an installation script that both provisions a cluster in their environment and installs KOTS in the cluster. +* For installations in air gap clusters, users download air gap bundles for KOTS and the application from the Replicated Download Portal and then provide the bundles during installation. All users must provide a license file to install with KOTS. After KOTS is installed in the cluster, users can access the KOTS Admin Console to provide their license file and deploy the application. @@ -66,7 +66,7 @@ The following shows an example of the Admin Console dashboard for an application ### KOTS CLI -The kots command-line interface (CLI) is a kubectl plugin. Customers can run commands with the KOTS CLI to install and manage their application instances with KOTS programmatically. +The KOTS command-line interface (CLI) is a kubectl plugin. Customers can run commands with the KOTS CLI to install and manage their application instances with KOTS programmatically. For information about getting started with the KOTS CLI, see [Installing the KOTS CLI](/reference/kots-cli-getting-started). diff --git a/docs/intro-replicated.md b/docs/intro-replicated.md index c93a877be0..030dcb197c 100644 --- a/docs/intro-replicated.md +++ b/docs/intro-replicated.md @@ -3,7 +3,6 @@ pagination_prev: null --- import ApiAbout from "/docs/partials/vendor-api/_api-about.mdx" -import Kots from "/docs/partials/kots/_kots-definition.mdx" # Introduction to Replicated @@ -63,11 +62,11 @@ For more information about working with customers and custom license fields, see ### Install -Applications distributed with Replicated can be installed using the Helm CLI or the Replicated KOTS installer. The Helm CLI supports installation of Helm charts and KOTS supports installation of Helm charts and Kubernetes manifests. +Applications distributed with the Replicated Platform can support multiple different installation methods from the same application release. - - -For more information, see the [KOTS documentation](intro-kots). +The primary recommended installation methods include: +* **Replicated Embedded Cluster**: With Embedded Cluster, ISVs can deliver Kubernetes and their application together as a single appliance, allowing customers to install on VMs or bare metal servers. Embedded Cluster uses Replicated KOTS to install the application and supports installation in online and air gap environments. For more information, see [Using Emebdded Cluster](/vendor/embedded-overview). +* **Helm CLI**: ISVs can also support Helm installations, optionally enhanced with Replciated features like the Replicated SDK and the Replicated proxy servive. For more information, see [Installing with Helm](/vendor/install-with-helm). ### Report diff --git a/docs/partials/kots/_kots-definition.mdx b/docs/partials/kots/_kots-definition.mdx index 379119143e..89f851c327 100644 --- a/docs/partials/kots/_kots-definition.mdx +++ b/docs/partials/kots/_kots-definition.mdx @@ -1 +1 @@ -Replicated KOTS is a kubectl plugin and an in-cluster Admin Console that provides highly successful installations of Helm charts and Kubernetes applications into customer-controlled environments, including on-prem and air gap environments. KOTS also supports installations on VMs or bare metal servers through _embedded clusters_, which are clusters built from a customized Kubernetes distribution embedded with an application and provisioned in the customer environment at the time of installation. \ No newline at end of file +Replicated KOTS is a kubectl plugin and an in-cluster Admin Console that provides highly successful installations of Helm charts and Kubernetes applications into customer-controlled environments, including on-prem and air gap environments. \ No newline at end of file From c20bc833c17639fdc48e18cf51eb3f0a86f487b4 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 13 Aug 2024 09:24:10 -0600 Subject: [PATCH 02/30] typos --- docs/intro-replicated.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro-replicated.md b/docs/intro-replicated.md index 030dcb197c..d3ad65de2b 100644 --- a/docs/intro-replicated.md +++ b/docs/intro-replicated.md @@ -66,7 +66,7 @@ Applications distributed with the Replicated Platform can support multiple diffe The primary recommended installation methods include: * **Replicated Embedded Cluster**: With Embedded Cluster, ISVs can deliver Kubernetes and their application together as a single appliance, allowing customers to install on VMs or bare metal servers. Embedded Cluster uses Replicated KOTS to install the application and supports installation in online and air gap environments. For more information, see [Using Emebdded Cluster](/vendor/embedded-overview). -* **Helm CLI**: ISVs can also support Helm installations, optionally enhanced with Replciated features like the Replicated SDK and the Replicated proxy servive. For more information, see [Installing with Helm](/vendor/install-with-helm). +* **Helm CLI**: ISVs can also support Helm installations, enhanced with Replicated features like the Replicated SDK and the Replicated proxy service. For more information, see [Installing with Helm](/vendor/install-with-helm). ### Report From 7e0f6a0505e082b92961b92429685a9c47465e1c Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 13 Aug 2024 09:28:43 -0600 Subject: [PATCH 03/30] edits --- docs/intro-replicated.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/intro-replicated.md b/docs/intro-replicated.md index d3ad65de2b..09390ebc66 100644 --- a/docs/intro-replicated.md +++ b/docs/intro-replicated.md @@ -65,8 +65,8 @@ For more information about working with customers and custom license fields, see Applications distributed with the Replicated Platform can support multiple different installation methods from the same application release. The primary recommended installation methods include: -* **Replicated Embedded Cluster**: With Embedded Cluster, ISVs can deliver Kubernetes and their application together as a single appliance, allowing customers to install on VMs or bare metal servers. Embedded Cluster uses Replicated KOTS to install the application and supports installation in online and air gap environments. For more information, see [Using Emebdded Cluster](/vendor/embedded-overview). -* **Helm CLI**: ISVs can also support Helm installations, enhanced with Replicated features like the Replicated SDK and the Replicated proxy service. For more information, see [Installing with Helm](/vendor/install-with-helm). +* **Replicated Embedded Cluster**: With Embedded Cluster, Kubernetes and the application are delivered together as a single appliance, allowing customers to install on VMs or bare metal servers. Embedded Cluster uses Replicated KOTS to install the application and supports installation in online and air gap environments. For more information, see [Using Emebdded Cluster](/vendor/embedded-overview). +* **Helm**: Helm installations can be enhanced with Replicated components like the Replicated SDK, which provides instance telemetry and other features through an in-cluster API, and the Replicated proxy service, which provides proxy access to private images. For more information, see [Installing with Helm](/vendor/install-with-helm). ### Report From ecb9d52bbf8697e3362c52476d1843fb25554374 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 13 Aug 2024 14:23:56 -0600 Subject: [PATCH 04/30] edits --- ...tro-replicated.md => intro-replicated.mdx} | 99 +++++++++++++++---- 1 file changed, 81 insertions(+), 18 deletions(-) rename docs/{intro-replicated.md => intro-replicated.mdx} (61%) diff --git a/docs/intro-replicated.md b/docs/intro-replicated.mdx similarity index 61% rename from docs/intro-replicated.md rename to docs/intro-replicated.mdx index 09390ebc66..8b4edeeacc 100644 --- a/docs/intro-replicated.md +++ b/docs/intro-replicated.mdx @@ -3,14 +3,80 @@ pagination_prev: null --- import ApiAbout from "/docs/partials/vendor-api/_api-about.mdx" +import Replicated from "/docs/partials/getting-started/_replicated-definition.mdx" +import Helm from "/docs/partials/helm/_helm-definition.mdx" +import Kots from "/docs/partials/kots/_kots-definition.mdx" +import KotsEntitlement from "/docs/partials/kots/_kots-entitlement-note.mdx" +import SDKOverview from "/docs/partials/replicated-sdk/_overview.mdx" # Introduction to Replicated This topic provides an introduction to working with the Replicated Platform, including key features, supported application installation options, and interfaces. -## Overview +This topic provides an overview of distributing applications with the Replicated Platform. It includes information about the Replicated Platform features used to distribute applications, as well as the options for packaging applications. -The Replicated Platform is a commercial software distribution platform. Independent software vendors (ISVs) can use features of the Replicated Platform to distribute modern enterprise software into complex, customer-controlled environments, including on-prem and air gap. +## About the Replicated Platform + + + +### About Distributing Applications with Replicated + +The following diagram demonstrates distributing an application with the Replicated Platform and then installing the application in a customer environment: + +![replicated platform features workflow](/images/replicated-platform.png) + +[View a larger version of this image](/images/replicated-platform.png) + +As shown in the diagram above: +* The Replicated SDK can be distributed alongside an application to get access to an in-cluster API to more easily integrate key features. +* Replicated Compatibility Matrix can be used to quickly generate Kubernetes clusters for running application tests as part of continuous integration and continuous delivery (CI/CD) workflows. +* After testing, application releases can be promoted to a channel in the Replicated Vendor Portal to be shared with customers or internal teams. +* Customers can be assigned to channels in order to control which application releases they are able to access and install. +* Customers' unique licenses grant proxy access to private application images through the Replicated proxy service. +* Before installation, customers can run preflight checks to verify that their environment meets installation requirements. +* Customers can install using any method, including Helm or Replicated Embedded Cluster. +* Instance data is automatically sent to the Vendor Portal by the Replicated SDK. If the application was installed using KOTS, then KOTS also sends instance data. +* If any issues occur during installation or at runtime, customers can generate and send a support bundle. Support bundles can be uploaded in the Vendor Portal for analysis. + +For more information about the Replicated features depicted in this diagram, see: +* [About the Replicated SDK](/vendor/replicated-sdk-overview) +* [About Compatibility Matrix](/vendor/testing-about) +* [About Channels and Releases](/vendor/releases-about) +* [About Customers](/vendor/licenses-about) +* [Introduction to KOTS](kots-intro) +* [Installing with Helm](/vendor/install-with-helm) +* [About Preflight Checks and Support Bundles](/vendor/preflight-support-bundle-about) +* [About Instance and Event Data](/vendor/instance-insights-event-data) + +### Platform Interfaces + +This section describes the GUI, CLI, and API that software vendors use to manage applications with the Replicated Platform. + +#### Vendor Portal + +The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. + +The following shows an example of the **Reporting** page for a customer: + +![Customer reporting page showing two active instances](/images/customer-reporting-page.png) + +[View a larger version of this image](/images/customer-reporting-page.png) + +#### Replicated CLI + +The Replicated command-line interface (CLI) is the CLI for the Vendor Portal. The Replicated CLI can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams, license files, and so on. For more information, see [Installing the Replicated CLI](/reference/replicated-cli-installing). + +![terminal with Replicated CLI commands](/images/replicated-cli.gif) + +#### Vendor API v3 + + + +For more information, see [Using the Vendor API V3](/reference/vendor-api-using). + +![landing page of the vendor api documentation site](/images/vendor-api-docs.png) + +## About the Commercial Software Distribution Life Cycle {#life-cycle} Replicated Platform features are designed to support ISVs in each phase of the commercial software distribution life cycle, as shown below: @@ -68,6 +134,7 @@ The primary recommended installation methods include: * **Replicated Embedded Cluster**: With Embedded Cluster, Kubernetes and the application are delivered together as a single appliance, allowing customers to install on VMs or bare metal servers. Embedded Cluster uses Replicated KOTS to install the application and supports installation in online and air gap environments. For more information, see [Using Emebdded Cluster](/vendor/embedded-overview). * **Helm**: Helm installations can be enhanced with Replicated components like the Replicated SDK, which provides instance telemetry and other features through an in-cluster API, and the Replicated proxy service, which provides proxy access to private images. For more information, see [Installing with Helm](/vendor/install-with-helm). +KOTS also supports online and air gap installations in existing clusters. For more information, see [Introduction to KOTS](kots-intro). ### Report When installed alongside an application, the Replicated SDK and Replicated KOTS automatically send instance data from the customer environment to the Replicated Vendor Portal. This instance data includes health and status indicators, adoption metrics, and performance metrics. For more information, see [About Instance and Event Data](/vendor/instance-insights-event-data). @@ -82,30 +149,26 @@ Support teams can use Replicated features to more quickly diagnose and resolve a - Provision customer-representative environments with Compatibility Matrix to recreate and diagnose issues. See [About Compatibility Matrix](/vendor/testing-about). - Get insights into an instance's status by accessing telemetry data, which covers the health of the application, the current application version, and details about the infrastructure and cluster where the application is running. For more information, see [Customer Reporting](/vendor/customer-reporting). For more information, see [Customer Reporting](/vendor/customer-reporting). -## Vendor Platform Interfaces +## About Packaging Applications with Replicated -This section describes the GUI, CLI, and API that software vendors use to interact with the vendor platform. +Replicated strongly recommends that all applications are packaged using Helm because many enterprise users expect to be able to install an application with Helm. -### Vendor Portal + -The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. +Helm-based applications distributed with Replicated can be installed with Helm or with the Replicated KOTS and Replicated Embedded Cluster installers. -The following shows an example of the **Reporting** page for a customer: - -![Customer reporting page showing two active instances](/images/customer-reporting-page.png) - -[View a larger version of this image](/images/customer-reporting-page.png) +### Packaging KOTS and Embedded Cluster Releases -### Replicated CLI + -The Replicated command-line interface (CLI) is the CLI for the Vendor Portal. The Replicated CLI can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams, license files, and so on. For more information, see [Installing the Replicated CLI](/reference/replicated-cli-installing). +Deploying Helm-based applications with KOTS provides additional functionality not directly available with Helm, such as the KOTS Admin Console and support for air gap installations. Additionally, when you package your application using Helm, you can support Helm and KOTS installations from the same release without having to maintain separate sets of Helm charts and application manifests. -![terminal with Replicated CLI commands](/images/replicated-cli.gif) +For more information about how to distribute and install Helm charts with KOTS, see [About Distributing Helm Charts with KOTS](/vendor/helm-native-about). -### Vendor API v3 + - +### Packaging Helm-Only Releases -For more information, see [Using the Vendor API V3](/reference/vendor-api-using). +Helm-based applications distributed with the Replicated platform can be installed with Helm. This allows you to support Helm installations for customers that prefer it, while also having access to Replicated features such as tools for licensing, releasing, and supporting applications. -![landing page of the vendor api documentation site](/images/vendor-api-docs.png) +For more information about installing applications distributed with Replicated using the Helm CLI, see [Installing with Helm](install-with-helm). \ No newline at end of file From 7b528e59bc1d3e326d86f0d4c8178d283dc1b0d0 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Thu, 22 Aug 2024 12:31:27 -0600 Subject: [PATCH 05/30] remove separate topic on distributing apps --- docs/intro-replicated.mdx | 79 +++++++++++++++------------------------ docs/intro.md | 3 -- netlify.toml | 10 +++-- sidebars.js | 1 - 4 files changed, 37 insertions(+), 56 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index 8b4edeeacc..af6b7619ea 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -19,8 +19,6 @@ This topic provides an overview of distributing applications with the Replicated -### About Distributing Applications with Replicated - The following diagram demonstrates distributing an application with the Replicated Platform and then installing the application in a customer environment: ![replicated platform features workflow](/images/replicated-platform.png) @@ -39,42 +37,49 @@ As shown in the diagram above: * If any issues occur during installation or at runtime, customers can generate and send a support bundle. Support bundles can be uploaded in the Vendor Portal for analysis. For more information about the Replicated features depicted in this diagram, see: -* [About the Replicated SDK](/vendor/replicated-sdk-overview) -* [About Compatibility Matrix](/vendor/testing-about) -* [About Channels and Releases](/vendor/releases-about) -* [About Customers](/vendor/licenses-about) -* [Introduction to KOTS](kots-intro) -* [Installing with Helm](/vendor/install-with-helm) -* [About Preflight Checks and Support Bundles](/vendor/preflight-support-bundle-about) -* [About Instance and Event Data](/vendor/instance-insights-event-data) +* [About the Replicated SDK](replicated-sdk-overview) +* [About Compatibility Matrix](testing-about) +* [About Channels and Releases](releases-about) +* [About Customers](licenses-about) +* [About Installing an Application](/enterprise/installing-overview) in the KOTS documentation +* [Installing with Helm](install-with-helm) +* [About Preflight Checks and Support Bundles](preflight-support-bundle-about) +* [About Instance and Event Data](instance-insights-event-data) + + +## Replicated Terminology + +The following are some key Replicated Platform terms that are helpful to know before getting started: + +* **Replicated KOTS**: Replicated KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. See [Introduction to KOTS](intro-kots). -### Platform Interfaces +* **Admin Console**: The Admin Console is the user interface for installing and managing applications with KOTS. -This section describes the GUI, CLI, and API that software vendors use to manage applications with the Replicated Platform. +* **Replicated Embedded Cluster**: Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ alongside the application. Each version of Embedded Cluster includes a specific version of Replicated KOTS, which provides the Admin Console. See [Using Embedded Cluster](/vendor/embedded-overview). -#### Vendor Portal +* **Air gap**: _Air gap_ refers to customer environments that do not have outbound internet access. Air gap environments are common for enterprise users that require high security. -The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. +* **Preflight Checks**: Preflight checks are conformance tests that verify the installation environment meets the requirements for the application. Preflight checks are provided by the open source Troubleshoot project, which is maintained by Replicated. See [About Preflight Checks and Support Bundles](preflight-support-bundle-about). -The following shows an example of the **Reporting** page for a customer: +* **Support Bundles**: Support bundles information from the installation environment for the purpose of providing troubleshooting information to users. Support bundles can also be shared with ISVs or with Replicated for additional troubleshooting help. Preflight checks are provided by the open source Troubleshoot project, which is maintained by Replicated. See [About Preflight Checks and Support Bundles](preflight-support-bundle-about). -![Customer reporting page showing two active instances](/images/customer-reporting-page.png) +* **Vendor Portal**: The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. -[View a larger version of this image](/images/customer-reporting-page.png) +* **Replicated CLI**: The Replicated command-line interface (CLI) is the CLI for the Vendor Portal. The Replicated CLI can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams, license files, and so on. For more information, see [Installing the Replicated CLI](/reference/replicated-cli-installing). -#### Replicated CLI +* **Vendor API v3**: The Vendor API is the API for the Vendor Portal. This API can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams and license files. -The Replicated command-line interface (CLI) is the CLI for the Vendor Portal. The Replicated CLI can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams, license files, and so on. For more information, see [Installing the Replicated CLI](/reference/replicated-cli-installing). +* **Customer**: In the Vendor Portal, a customer represents a single licensed user of your software. See [About Customers](licenses-about). -![terminal with Replicated CLI commands](/images/replicated-cli.gif) +* **Release**: A release represents a single version of your application. Releases contain the files (Helm charts and YAML manifests) that will be distributed to your customers. For example, an Embedded Cluster release includes the application Helm chart, the Embedded Cluster Config, and a KOTS manifest that describes the Helm chart. See [About Channels and Releases](releases-about). -#### Vendor API v3 +* **Channel**: Each release is promoted to one or more channels, which are used to control which customers can access the release. For example, vendors might keep separate channels for internal-only, experimental, beta, and generally available (GA) releases. Customers and internal users can access the releases promoted to the channel where they are assigned. See [About Channels and Releases](releases-about). - +* **Application**: Within a Vendor Portal team, an application is the top-level container that groups a set of customers, releases, and channels. It is common for teams to create multiple different applications for testing purposes. -For more information, see [Using the Vendor API V3](/reference/vendor-api-using). +* **Replicated SDK**: The Replicated SDK is a Helm chart that can be installed as a small service alongside your application. It provides access to telemetry and custom metrics on instances of your application running in customer environments as well as an in-cluster API. See [About the Replicated SDK](/vendor/replicated-sdk-overview). -![landing page of the vendor api documentation site](/images/vendor-api-docs.png) +* **Replicated Compatibility Matrix**: Replicated Compatibility Matrix quickly provisions clusters with support for various Kubernetes distributions and versions. You can use Compatibility Matrix to get kubectl access to running clusters within minutes or less. See [About Compatibility Matrix](/vendor/testing-about). ## About the Commercial Software Distribution Life Cycle {#life-cycle} @@ -147,28 +152,4 @@ Support teams can use Replicated features to more quickly diagnose and resolve a - Customize and generate support bundles, which collect and analyze redacted information from the customer's cluster, environment, and application instance. See [About Preflights Checks and Support Bundles](/vendor/preflight-support-bundle-about). - Provision customer-representative environments with Compatibility Matrix to recreate and diagnose issues. See [About Compatibility Matrix](/vendor/testing-about). -- Get insights into an instance's status by accessing telemetry data, which covers the health of the application, the current application version, and details about the infrastructure and cluster where the application is running. For more information, see [Customer Reporting](/vendor/customer-reporting). For more information, see [Customer Reporting](/vendor/customer-reporting). - -## About Packaging Applications with Replicated - -Replicated strongly recommends that all applications are packaged using Helm because many enterprise users expect to be able to install an application with Helm. - - - -Helm-based applications distributed with Replicated can be installed with Helm or with the Replicated KOTS and Replicated Embedded Cluster installers. - -### Packaging KOTS and Embedded Cluster Releases - - - -Deploying Helm-based applications with KOTS provides additional functionality not directly available with Helm, such as the KOTS Admin Console and support for air gap installations. Additionally, when you package your application using Helm, you can support Helm and KOTS installations from the same release without having to maintain separate sets of Helm charts and application manifests. - -For more information about how to distribute and install Helm charts with KOTS, see [About Distributing Helm Charts with KOTS](/vendor/helm-native-about). - - - -### Packaging Helm-Only Releases - -Helm-based applications distributed with the Replicated platform can be installed with Helm. This allows you to support Helm installations for customers that prefer it, while also having access to Replicated features such as tools for licensing, releasing, and supporting applications. - -For more information about installing applications distributed with Replicated using the Helm CLI, see [Installing with Helm](install-with-helm). \ No newline at end of file +- Get insights into an instance's status by accessing telemetry data, which covers the health of the application, the current application version, and details about the infrastructure and cluster where the application is running. For more information, see [Customer Reporting](/vendor/customer-reporting). For more information, see [Customer Reporting](/vendor/customer-reporting). \ No newline at end of file diff --git a/docs/intro.md b/docs/intro.md index 40986cd956..e7c5cf4585 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -45,9 +45,6 @@ pagination_next: null
  • Introduction to Replicated
  • -
  • - About Distributing Applications with Replicated -
  • Replicated Quick Start
  • diff --git a/netlify.toml b/netlify.toml index 80b0270ed0..d31cfd7c17 100644 --- a/netlify.toml +++ b/netlify.toml @@ -124,11 +124,11 @@ [[redirects]] from="https://docs.replicated.com/vendor/helm-overview" - to="https://docs.replicated.com/vendor/distributing-overview" + to="https://docs.replicated.com/vendor/helm-native-about" [[redirects]] from="https://docs.replicated.com/vendor/helm-install" - to="https://docs.replicated.com/vendor/distributing-overview" + to="https://docs.replicated.com/vendor/helm-native-about" [[redirects]] from="https://docs.replicated.com/vendor/testing-replicated-instance-types" @@ -170,7 +170,11 @@ [[redirects]] from="https://docs.replicated.com/vendor/support-bundle-helm-customizing" - to="https://docs.replicated.com/vendor/support-bundle-customizing" + to="https://docs.replicated.com/vendor/support-bundle-customizing" + +[[redirects]] + from="https://docs.replicated.com/vendor/distributing-overview" + to="https://docs.replicated.com/intro-replicated" ################################################### # Redirects To the Enterprise Section diff --git a/sidebars.js b/sidebars.js index 9ed63147fd..bcef909944 100644 --- a/sidebars.js +++ b/sidebars.js @@ -118,7 +118,6 @@ const sidebars = { }, ], }, - 'vendor/distributing-overview', // PRODUCT DOCS {type: 'html', value: '
    product docs
    ', defaultStyle: true}, { From fb34191035025024d6be53a35b81180ef1a9d854 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 1 Oct 2024 13:54:14 -0600 Subject: [PATCH 06/30] file extension changes --- docs/{intro-kots.md => intro-kots.mdx} | 0 docs/intro-replicated.md | 112 ------------------------- 2 files changed, 112 deletions(-) rename docs/{intro-kots.md => intro-kots.mdx} (100%) delete mode 100644 docs/intro-replicated.md diff --git a/docs/intro-kots.md b/docs/intro-kots.mdx similarity index 100% rename from docs/intro-kots.md rename to docs/intro-kots.mdx diff --git a/docs/intro-replicated.md b/docs/intro-replicated.md deleted file mode 100644 index 4cc3883ce8..0000000000 --- a/docs/intro-replicated.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -pagination_prev: null ---- - -import ApiAbout from "/docs/partials/vendor-api/_api-about.mdx" -import Kots from "/docs/partials/kots/_kots-definition.mdx" - -# Introduction to Replicated - -This topic provides an introduction to working with the Replicated Platform, including key features, supported application installation options, and interfaces. - -## Overview - -The Replicated Platform is a commercial software distribution platform. Independent software vendors (ISVs) can use features of the Replicated Platform to distribute modern enterprise software into complex, customer-controlled environments, including on-prem and air gap. - -Replicated Platform features are designed to support ISVs in each phase of the commercial software distribution life cycle, as shown below: - -![software distribution life cycle wheel](/images/software-dev-lifecycle.png) - -[View a larger version of this image](/images/software-dev-lifecycle.png) - -The following describes the phases of the software distribution life cycle: - -* **[Develop](#develop)**: Application design and architecture decisions align with customer needs, and development teams can quickly iterate on new features. -* **[Test](#test)**: Run automated tests in several customer-representative environments as part of continuous integration and continuous delivery (CI/CD) workflows. -* **[Release](#release)**: Use a single, automated release process to share new releases with both on-prem and SaaS customers. -* **[License](#license)**: Licenses are customized to each customer and are easy to issue, manage, and update. -* **[Install](#install)**: Provide unique installation options depending on customers' preferences and experience levels. -* **[Report](#report)**: Make more informed prioritization decisions by collecting adoption and performance data for application instances running in customer environments. -* **[Support](#support)**: Diagnose and resolve support issues quickly. - -For more information about the Replicated features that support each of these phases, see the sections below. - -### Develop - -The Replicated SDK exposes an in-cluster API that can be developed against to quickly integrate and test core functionality with an application. For example, when the SDK is installed alongside an application in a customer environment, the in-cluster API can be used to send custom metrics from the instance to the Replicated vendor platform. - -For more information about using the Replicated SDK, see [About the Replicated SDK](/vendor/replicated-sdk-overview). - -### Test - -The Replicated Compatibility Matrix rapidly provisions ephemeral Kubernetes clusters, including multi-node and OpenShift clusters. When integrated into existing CI/CD pipelines for an application, the Compatibility Matrix can be used to automatically create a variety of customer-representative environments for testing code changes. - -For more information, see [About Compatibility Matrix](/vendor/testing-about). - -### Release - -Release channels in the Replicated Vendor Portal allow ISVs to make different application versions available to different customers, without needing to maintain separate code bases. For example, a "Beta" channel can be used to share beta releases of an application with only a certain subset of customers. - -For more information about working with channels, see [About Channels and Releases](/vendor/releases-about). - -Additionally, the Replicated proxy registry grants proxy access to private application images using the customers' license. This ensures that customers have the right access to images based on the channel they are assigned. For more information about using the proxy registry, see [About the Replicated Proxy Registry](/vendor/private-images-about). - -### License - -Create customers in the Replicated Vendor Portal to handle licensing for your application in both online and air gap environments. For example: -* License free trials and different tiers of product plans -* Create and manage custom license entitlements -* Automatically restrict access to expired accounts -* Verify license entitlements both before installation and during runtime - -For more information about working with customers and custom license fields, see [About Customers](/vendor/licenses-about). - -### Install - -Applications distributed with Replicated can be installed using the Helm CLI or the Replicated KOTS installer. The Helm CLI supports installation of Helm charts and KOTS supports installation of Helm charts and Kubernetes manifests. - - - -For more information, see the [KOTS documentation](intro-kots). - -### Report - -When installed alongside an application, the Replicated SDK and Replicated KOTS automatically send instance data from the customer environment to the Replicated Vendor Portal. This instance data includes health and status indicators, adoption metrics, and performance metrics. For more information, see [About Instance and Event Data](/vendor/instance-insights-event-data). - -ISVs can also set up email and Slack notifications to get alerted of important instance issues or performance trends. For more information, see [Configuring Instance Notifications](/vendor/instance-notifications-config). - -### Support - -Support teams can use Replicated features to more quickly diagnose and resolve application issues. For example: - -- Customize and generate support bundles, which collect and analyze redacted information from the customer's cluster, environment, and application instance. See [About Preflights Checks and Support Bundles](/vendor/preflight-support-bundle-about). -- Provision customer-representative environments with Compatibility Matrix to recreate and diagnose issues. See [About Compatibility Matrix](/vendor/testing-about). -- Get insights into an instance's status by accessing telemetry data, which covers the health of the application, the current application version, and details about the infrastructure and cluster where the application is running. For more information, see [Customer Reporting](/vendor/customer-reporting). For more information, see [Customer Reporting](/vendor/customer-reporting). - -## Vendor Platform Interfaces - -This section describes the GUI, CLI, and API that software vendors use to interact with the vendor platform. - -### Vendor Portal - -The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. - -The following shows an example of the **Reporting** page for a customer: - -![Customer reporting page showing two active instances](/images/customer-reporting-page.png) - -[View a larger version of this image](/images/customer-reporting-page.png) - -### Replicated CLI - -The Replicated command-line interface (CLI) is the CLI for the Vendor Portal. The Replicated CLI can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams, license files, and so on. For more information, see [Installing the Replicated CLI](/reference/replicated-cli-installing). - -![terminal with Replicated CLI commands](/images/replicated-cli.gif) - -### Vendor API v3 - - - -For more information, see [Using the Vendor API V3](/reference/vendor-api-using). - -![landing page of the vendor api documentation site](/images/vendor-api-docs.png) From c3a32435f8af31334851b94c00604399d423c23f Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 1 Oct 2024 14:43:40 -0600 Subject: [PATCH 07/30] edits --- docs/intro-replicated.mdx | 51 ++++++++------ docs/vendor/distributing-overview.mdx | 98 --------------------------- docs/vendor/kots-faq.mdx | 74 ++++++++------------ sidebars.js | 2 +- 4 files changed, 60 insertions(+), 165 deletions(-) delete mode 100644 docs/vendor/distributing-overview.mdx diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index af6b7619ea..02a6ad4e5b 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -26,8 +26,8 @@ The following diagram demonstrates distributing an application with the Replicat [View a larger version of this image](/images/replicated-platform.png) As shown in the diagram above: -* The Replicated SDK can be distributed alongside an application to get access to an in-cluster API to more easily integrate key features. -* Replicated Compatibility Matrix can be used to quickly generate Kubernetes clusters for running application tests as part of continuous integration and continuous delivery (CI/CD) workflows. +* The [Replicated SDK](replicated-sdk-overview) can be distributed alongside an application to get access to an in-cluster API to more easily integrate key features. +* Replicated [Compatibility Matrix](testing-about) can be used to quickly generate Kubernetes clusters for running application tests as part of continuous integration and continuous delivery (CI/CD) workflows. * After testing, application releases can be promoted to a channel in the Replicated Vendor Portal to be shared with customers or internal teams. * Customers can be assigned to channels in order to control which application releases they are able to access and install. * Customers' unique licenses grant proxy access to private application images through the Replicated proxy service. @@ -47,23 +47,33 @@ For more information about the Replicated features depicted in this diagram, see * [About Instance and Event Data](instance-insights-event-data) -## Replicated Terminology +## Key Products and Features The following are some key Replicated Platform terms that are helpful to know before getting started: -* **Replicated KOTS**: Replicated KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. See [Introduction to KOTS](intro-kots). +### Compatibility Matrix -* **Admin Console**: The Admin Console is the user interface for installing and managing applications with KOTS. +Compatibility Matrix quickly provisions clusters with support for various Kubernetes distributions and versions. You can use Compatibility Matrix to get kubectl access to running clusters within minutes or less. See [About Compatibility Matrix](/vendor/testing-about). -* **Replicated Embedded Cluster**: Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ alongside the application. Each version of Embedded Cluster includes a specific version of Replicated KOTS, which provides the Admin Console. See [Using Embedded Cluster](/vendor/embedded-overview). +### Embedded Cluster -* **Air gap**: _Air gap_ refers to customer environments that do not have outbound internet access. Air gap environments are common for enterprise users that require high security. +Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ alongside the application. Each version of Embedded Cluster includes a specific version of Replicated KOTS, which provides the Admin Console. See [Using Embedded Cluster](/vendor/embedded-overview). -* **Preflight Checks**: Preflight checks are conformance tests that verify the installation environment meets the requirements for the application. Preflight checks are provided by the open source Troubleshoot project, which is maintained by Replicated. See [About Preflight Checks and Support Bundles](preflight-support-bundle-about). +### KOTS and the Admin Console -* **Support Bundles**: Support bundles information from the installation environment for the purpose of providing troubleshooting information to users. Support bundles can also be shared with ISVs or with Replicated for additional troubleshooting help. Preflight checks are provided by the open source Troubleshoot project, which is maintained by Replicated. See [About Preflight Checks and Support Bundles](preflight-support-bundle-about). +KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. See [Introduction to KOTS](intro-kots). -* **Vendor Portal**: The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. +The Admin Console is the user interface for installing and managing applications with KOTS. + +### Proxy Registry + +### Replicated SDK + +The Replicated SDK is a Helm chart that can be installed as a small service alongside your application. It provides access to telemetry and custom metrics on instances of your application running in customer environments as well as an in-cluster API. See [About the Replicated SDK](/vendor/replicated-sdk-overview). + +### Vendor Portal + +The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. * **Replicated CLI**: The Replicated command-line interface (CLI) is the CLI for the Vendor Portal. The Replicated CLI can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams, license files, and so on. For more information, see [Installing the Replicated CLI](/reference/replicated-cli-installing). @@ -77,26 +87,22 @@ The following are some key Replicated Platform terms that are helpful to know be * **Application**: Within a Vendor Portal team, an application is the top-level container that groups a set of customers, releases, and channels. It is common for teams to create multiple different applications for testing purposes. -* **Replicated SDK**: The Replicated SDK is a Helm chart that can be installed as a small service alongside your application. It provides access to telemetry and custom metrics on instances of your application running in customer environments as well as an in-cluster API. See [About the Replicated SDK](/vendor/replicated-sdk-overview). - -* **Replicated Compatibility Matrix**: Replicated Compatibility Matrix quickly provisions clusters with support for various Kubernetes distributions and versions. You can use Compatibility Matrix to get kubectl access to running clusters within minutes or less. See [About Compatibility Matrix](/vendor/testing-about). +## About the Commercial Software Distribution Lifecycle {#life-cycle} -## About the Commercial Software Distribution Life Cycle {#life-cycle} +Replicated Platform features are designed to support ISVs in each phase of the commercial software distribution lifecycle, as shown below: -Replicated Platform features are designed to support ISVs in each phase of the commercial software distribution life cycle, as shown below: - -![software distribution life cycle wheel](/images/software-dev-lifecycle.png) +![software distribution lifecycle wheel](/images/software-dev-lifecycle.png) [View a larger version of this image](/images/software-dev-lifecycle.png) -The following describes the phases of the software distribution life cycle: +The following describes the phases of the software distribution lifecycle: * **[Develop](#develop)**: Application design and architecture decisions align with customer needs, and development teams can quickly iterate on new features. * **[Test](#test)**: Run automated tests in several customer-representative environments as part of continuous integration and continuous delivery (CI/CD) workflows. -* **[Release](#release)**: Use a single, automated release process to share new releases with both on-prem and SaaS customers. +* **[Release](#release)**: Use channels to share releases with external and internal users, publish release artifacts securely, and use consistent versioning. * **[License](#license)**: Licenses are customized to each customer and are easy to issue, manage, and update. * **[Install](#install)**: Provide unique installation options depending on customers' preferences and experience levels. -* **[Report](#report)**: Make more informed prioritization decisions by collecting adoption and performance data for application instances running in customer environments. +* **[Report](#report)**: Make more informed prioritization decisions by collecting usage and performance metadata for application instances running in customer environments. * **[Support](#support)**: Diagnose and resolve support issues quickly. For more information about the Replicated features that support each of these phases, see the sections below. @@ -119,15 +125,15 @@ Release channels in the Replicated Vendor Portal allow ISVs to make different ap For more information about working with channels, see [About Channels and Releases](/vendor/releases-about). -Additionally, the Replicated proxy service grants proxy access to private application images using the customers' license. This ensures that customers have the right access to images based on the channel they are assigned. For more information about using the proxy registry, see [About the Replicated Proxy Service](/vendor/private-images-about). +Additionally, the Replicated proxy registry grants proxy access to private application images using the customers' license. This ensures that customers have the right access to images based on the channel they are assigned. For more information about using the proxy registry, see [About the Replicated Proxy Registry](/vendor/private-images-about). ### License Create customers in the Replicated Vendor Portal to handle licensing for your application in both online and air gap environments. For example: * License free trials and different tiers of product plans * Create and manage custom license entitlements -* Automatically restrict access to expired accounts * Verify license entitlements both before installation and during runtime +* Measure and report usage For more information about working with customers and custom license fields, see [About Customers](/vendor/licenses-about). @@ -140,6 +146,7 @@ The primary recommended installation methods include: * **Helm**: Helm installations can be enhanced with Replicated components like the Replicated SDK, which provides instance telemetry and other features through an in-cluster API, and the Replicated proxy service, which provides proxy access to private images. For more information, see [Installing with Helm](/vendor/install-with-helm). KOTS also supports online and air gap installations in existing clusters. For more information, see [Introduction to KOTS](kots-intro). + ### Report When installed alongside an application, the Replicated SDK and Replicated KOTS automatically send instance data from the customer environment to the Replicated Vendor Portal. This instance data includes health and status indicators, adoption metrics, and performance metrics. For more information, see [About Instance and Event Data](/vendor/instance-insights-event-data). diff --git a/docs/vendor/distributing-overview.mdx b/docs/vendor/distributing-overview.mdx deleted file mode 100644 index 0e44d267a3..0000000000 --- a/docs/vendor/distributing-overview.mdx +++ /dev/null @@ -1,98 +0,0 @@ ---- -pagination_prev: null ---- - -import Replicated from "../partials/getting-started/_replicated-definition.mdx" -import Helm from "../partials/helm/_helm-definition.mdx" -import Kots from "../partials/kots/_kots-definition.mdx" -import KotsEntitlement from "../partials/kots/_kots-entitlement-note.mdx" -import SDKOverview from "../partials/replicated-sdk/_overview.mdx" - -# About Distributing Applications - -This topic provides an overview of distributing applications with the Replicated Platform. It includes information about the Replicated Platform features used to distribute applications, as well as the options for packaging applications. - -## About Distributing with Replicated - - - -_Distributing_ software with the Replicated Platform refers to using Replicated features to enhance and support each phase of the commercial software distribution life cycle: -* Develop -* Test -* Release -* License -* Install -* Report -* Support - -For more information about how Replicated defines the commercial software distribution life cycle, see [Introduction to Replicated](../intro-replicated). - -The following diagram demonstrates the process of distributing an application with the Replicated Platform and then installing the application in an enterprise customer environment: - -![replicated platform features workflow](/images/replicated-platform.png) - -[View a larger version of this image](/images/replicated-platform.png) - -As shown in the diagram above: -* The Replicated SDK can be distributed alongside an application to get access to an in-cluster API to more easily integrate key features. -* Replicated Compatibility Matrix can be used to quickly generate Kubernetes clusters for running application tests as part of continuous integration and continuous delivery (CI/CD) workflows. -* After testing, application releases can be promoted to a channel in the Replicated Vendor Portal to be shared with customers or internal teams. -* Customers can be assigned to channels in order to control which application releases they are able to access and install. -* Customers' unique licenses grant proxy access to private application images through the Replicated proxy registry. -* Before installation, customers can run preflight checks to verify that their environment meets installation requirements. -* Customers can install using any method, including the Helm CLI, Replicated KOTS, or any proprietary installation method already used by the ISV. -* Instance data is automatically sent to the Vendor Portal by the Replicated SDK. If the application was installed using KOTS, then KOTS also sends instance data. -* If any issues occur during installation or at runtime, customers can generate and send a support bundle. Support bundles can be uploaded in the Vendor Portal for analysis. - -For more information about the Replicated features depicted in this diagram, see: -* [About the Replicated SDK](replicated-sdk-overview) -* [About Compatibility Matrix](testing-about) -* [About Channels and Releases](releases-about) -* [About Customers](licenses-about) -* [About Installing an Application](/enterprise/installing-overview) in the KOTS documentation -* [Installing with Helm](install-with-helm) -* [About Preflight Checks and Support Bundles](preflight-support-bundle-about) -* [About Instance and Event Data](instance-insights-event-data) - -## About Packaging Applications - -This section describes the options for packaging an application that is distributed with the Replicated platform. -### Packaging with Helm (Recommended) - - - -Replicated strongly recommends that all applications are packaged using Helm because many enterprise users expect to be able to install an application with the Helm CLI. - -Helm-based applications distributed with Replicated can be installed with the Helm CLI or with the Replicated KOTS installer. - -#### Helm CLI Installations - -Helm-based applications distributed with the Replicated platform can be installed with the Helm CLI. This allows you to continue to support Helm CLI installations for your customers, while also having access to Replicated features such as tools for licensing, releasing, and supporting applications. - -For more information about installing applications distributed with Replicated using the Helm CLI, see [Installing with Helm](install-with-helm). - -#### KOTS Installations - - - -Deploying Helm-based applications with KOTS provides additional functionality not directly available with the Helm CLI, such as the KOTS Admin Console and support for air gap installations. Additionally, when you package your application using Helm, you can support Helm CLI and KOTS installations from the same release without having to maintain separate sets of Helm charts and application manifests. - -For more information about how to distribute and install Helm charts with KOTS, see [About Distributing Helm Charts with KOTS](/vendor/helm-native-about). - - - -### Packaging with Kubernetes - -For ISVs that do not want to use Helm, applications distributed with Replicated can be packaged as standard Kubernetes manifest files. Applications packaged as Kubernetes manifests can be installed using Replicated KOTS or any proprietary installer already used by the ISV. - - - -For more information about how to distribute and install Kubernetes manifest-based applications with KOTS, see the [KOTS documentation](../intro-kots). - - - -## About Distributing the Replicated SDK with an Application {#sdk} - - - -For information about the Replicated SDK API endpoints, see [Replicated SDK API](/reference/replicated-sdk-apis). For information about developing against the SDK API locally, see [Developing Against the SDK API](replicated-sdk-development). \ No newline at end of file diff --git a/docs/vendor/kots-faq.mdx b/docs/vendor/kots-faq.mdx index 2c4fab10a3..f00d707b7c 100644 --- a/docs/vendor/kots-faq.mdx +++ b/docs/vendor/kots-faq.mdx @@ -1,65 +1,43 @@ import SDKOverview from "../partials/replicated-sdk/_overview.mdx" import EmbeddedKubernetes from "../partials/kots/_embedded-kubernetes-definition.mdx" -# KOTS Terminology and FAQs +# Replicated FAQs -This topic lists key terminology and frequently-asked questions (FAQs) for the Replicated KOTS installer that are helpful to understand before getting started. +This topic lists frequently-asked questions (FAQs) for the Replicated Platform. -## Key Terminology +## Platform FAQs -### Air Gap +### If I distribute my application with Replicated, can my customers still install with the Helm CLI? -_Air gap_ refers to customer environments that do not have outbound internet access. Air gap environments are common for enterprise users that require high security. +Yes. -### Embedded Kubernetes +## Compatibility Matrix FAQs - +### What types of clusters can I create with Compatibility Matrix? -Both the Replicated Embedded Cluster and Replicated kURL installers can be used to embed Kubernetes with your application. For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or [Introduction to kURL](/vendor/kurl-about). +### How does billing work? -### KOTS Custom Resources +### How do I buy more credits? -KOTS provides several Kubernetes custom resources in the `kots.io` API group. KOTS custom resources are consumed by KOTS or other kubectl plugins and are _not_ deployed to the cluster. +## KOTS and Embedded Cluster FAQs -Software vendors can configure KOTS custom resources to provide installation instructions and control the application experience in the KOTS Admin Console. +### What is the difference between the KOTS and Embedded Cluster installers? -For more information, see [About Custom Resources](/reference/custom-resource-about). +### What do I have to do to enable Embedded Cluster installations for my application? -### KOTS Template Functions +Enabling Embedded Cluster installations requires that the Replicated KOTS entitlement is assigned to your Vendor Portal team. -KOTS provides a set of custom template functions based on the Go text/template library that can be used in any Kubernetes manifests for applications deployed with KOTS. +Teams with the KOTS entitlement can create KOTS-enabled releases by configuring the custom resources required by KOTS to install the application. You also need to add the Embedded Cluster Config. -KOTS template functions can be used to generate values specific to the customer environment that can be useful during installation. For example, customer entitlement information, user-provided configuration values, or the number of nodes detected in the Kubernetes cluster where the application is installed. +For a checklist of the required and optional custom resources for KOTS, see [Onboarding with KOTS](/vendor/distributing-workflow). -For more information, see [About Template Functions](/reference/template-functions-about). +### How do Embedded Cluster installations on VMs or bare metal servers work? -## FAQs - -### What is KOTS? - -Replicated KOTS is an open source kubectl plugin maintained by Replicated. KOTS provides highly successful installations of Kubernetes applications into diverse environments (including on-prem and air gap environments). - -For more information, see [Introduction to KOTS](../intro-kots). - -### What do I have to do to enable KOTS installations for my application? - -Enabling KOTS installations requires that the Replicated KOTS entitlement is assigned to your Vendor Portal team. - -Teams with the KOTS entitlement can create KOTS-enabled releases by configuring the custom resources required by KOTS to install the application. For a checklist of the required and optional custom resources for KOTS, see [Onboarding with KOTS](/vendor/distributing-workflow). - -### How do KOTS installations in existing clusters work? - -Enterprise users installing an application with KOTS first run the `kubectl kots install` command to install KOTS in the target cluster. KOTS deploys the Admin Console, where users can log in to provide their license file, define application-specific configuration values, run preflight checks, and install the application. - -For detailed installation steps, see [Installing in Existing Clusters](/enterprise/installing-existing-cluster). - -### How do KOTS installations on VMs or bare metal servers work? - -In installations on VMs or bare metal servers, users run an installation command that provisions a cluster on a VM or bare metal server. Clusters can be provisioned with Replicated Embedded Cluster or with Replicated kURL. +In installations on VMs or bare metal servers, users run an installation command that provisions a cluster on a VM or bare metal server. KOTS then deploys the Admin Console in the cluster, where users can log in to provide their license file, define application-specific configuration values, run preflight checks, and install the application. -For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or [Introduction to kURL](/vendor/kurl-about). +For more information, see [Using Embedded Cluster](/vendor/embedded-overview). ### What's the difference between Replicated Embedded Cluster and kURL? @@ -69,11 +47,11 @@ For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or ### Can I use my own branding for KOTS installations? -The KOTS Admin Console and the download portal support the use of a custom logo. Additionally, software vendors can use custom domains for Replicated services to avoid exposing the default Replicated domains to enterprise users. +The KOTS Admin Console and the Customer Portal support the use of a custom logo. Additionally, software vendors can use custom domains for Replicated services to avoid exposing the default Replicated domains to enterprise users. -For more information, see [Customizing the Admin Console and Download Portal](/vendor/admin-console-customize-app-icon) and [About Custom Domains](custom-domains). +For more information, see [Customizing the Admin Console and Customer Portal](/vendor/admin-console-customize-app-icon) and [About Custom Domains](custom-domains). -### Does KOTS support installations into air gap environments? +### Does Replicated support installations into air gap environments? Yes. Software vendors can use KOTS to generate air gap bundles for installation into air gap environments. KOTS also provides customer-specific download portals where air gap bundles and license files can be shared with enterprise users. @@ -85,7 +63,7 @@ Yes. An application deployed with KOTS can use one or more Helm charts, can incl For more information, see [About Distributing Helm Charts with KOTS](/vendor/helm-native-about). -### What are the use cases for installing applications with KOTS versus Helm? +### What are the use cases for installing applications with Embedded Cluster versus Helm? Helm is a popular package manager for Kubernetes applications. Many enterprise users that have experience with Kubernetes and Helm will expect to be able to install an application with the Helm CLI. @@ -104,3 +82,11 @@ The Replicated SDK is a Helm chart that can be installed as a small service alon Replicated recommends that all applications include the SDK because it provides access to key functionality not available through KOTS, such as support for sending custom metrics from application instances. When both the SDK and KOTS are installed in a cluster alongside an application, both send instance telemetry to the Vendor Portal. For more information, see [Installing the Replicated SDK](/vendor/replicated-sdk-installing). + +## Replicated SDK FAQs + +## Vendor Portal FAQs + +### Can I alias Replicated endpoints? + +### How does Replicated collect insights and telemetry from instances of my application? diff --git a/sidebars.js b/sidebars.js index 06bf5219e2..d2fd53835a 100644 --- a/sidebars.js +++ b/sidebars.js @@ -36,6 +36,7 @@ const sidebars = { //GET STARTED {type: 'html', value: '
    getting started
    ', defaultStyle: true}, 'intro-replicated', + 'vendor/kots-faq', 'vendor/replicated-onboarding', // { // type: 'category', @@ -184,7 +185,6 @@ const sidebars = { label: 'Distributing and Installing with KOTS', items: [ 'intro-kots', - 'vendor/kots-faq', 'vendor/distributing-workflow', { type: 'category', From 2fb98a8b8b4a3823c585b12ea99eddaa4691c37e Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 1 Oct 2024 15:07:40 -0600 Subject: [PATCH 08/30] update platform diagram --- docs/intro-replicated.mdx | 8 ++++---- static/images/replicated-platform.png | Bin 113658 -> 114460 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index 02a6ad4e5b..40e38d03de 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -26,11 +26,11 @@ The following diagram demonstrates distributing an application with the Replicat [View a larger version of this image](/images/replicated-platform.png) As shown in the diagram above: -* The [Replicated SDK](replicated-sdk-overview) can be distributed alongside an application to get access to an in-cluster API to more easily integrate key features. -* Replicated [Compatibility Matrix](testing-about) can be used to quickly generate Kubernetes clusters for running application tests as part of continuous integration and continuous delivery (CI/CD) workflows. +* The Replicated SDK can be distributed alongside an application to get access to an in-cluster API to more easily integrate key features. +* Replicated Compatibility Matrix can be used to quickly generate Kubernetes clusters for running application tests as part of continuous integration and continuous delivery (CI/CD) workflows. * After testing, application releases can be promoted to a channel in the Replicated Vendor Portal to be shared with customers or internal teams. * Customers can be assigned to channels in order to control which application releases they are able to access and install. -* Customers' unique licenses grant proxy access to private application images through the Replicated proxy service. +* Customers' unique licenses grant proxy access to private application images through the Replicated proxy registry. * Before installation, customers can run preflight checks to verify that their environment meets installation requirements. * Customers can install using any method, including Helm or Replicated Embedded Cluster. * Instance data is automatically sent to the Vendor Portal by the Replicated SDK. If the application was installed using KOTS, then KOTS also sends instance data. @@ -143,7 +143,7 @@ Applications distributed with the Replicated Platform can support multiple diffe The primary recommended installation methods include: * **Replicated Embedded Cluster**: With Embedded Cluster, Kubernetes and the application are delivered together as a single appliance, allowing customers to install on VMs or bare metal servers. Embedded Cluster uses Replicated KOTS to install the application and supports installation in online and air gap environments. For more information, see [Using Emebdded Cluster](/vendor/embedded-overview). -* **Helm**: Helm installations can be enhanced with Replicated components like the Replicated SDK, which provides instance telemetry and other features through an in-cluster API, and the Replicated proxy service, which provides proxy access to private images. For more information, see [Installing with Helm](/vendor/install-with-helm). +* **Helm**: Helm installations can be enhanced with Replicated components like the Replicated SDK, which provides instance telemetry and other features through an in-cluster API, and the Replicated proxy registry, which provides proxy access to private images. For more information, see [Installing with Helm](/vendor/install-with-helm). KOTS also supports online and air gap installations in existing clusters. For more information, see [Introduction to KOTS](kots-intro). diff --git a/static/images/replicated-platform.png b/static/images/replicated-platform.png index 9b18ded22e1139ac19035c10ae4eafb445001ddd..c0d3d82b8c68a09e2bfc007a2088d8709ea92072 100644 GIT binary patch literal 114460 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

    m}fbwIkQ_TSi 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 Date: Tue, 1 Oct 2024 16:58:22 -0600 Subject: [PATCH 09/30] updating diagram description --- docs/intro-replicated.mdx | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index 40e38d03de..4724e524b9 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -11,30 +11,29 @@ import SDKOverview from "/docs/partials/replicated-sdk/_overview.mdx" # Introduction to Replicated -This topic provides an introduction to working with the Replicated Platform, including key features, supported application installation options, and interfaces. - -This topic provides an overview of distributing applications with the Replicated Platform. It includes information about the Replicated Platform features used to distribute applications, as well as the options for packaging applications. +This topic provides an introduction to the Replicated Platform, including a platform overview and a list of key features. It also describes the Commercial Software Distribution Lifecycle and how Replicated features can be used in each phase of the lifecycle. ## About the Replicated Platform -The following diagram demonstrates distributing an application with the Replicated Platform and then installing the application in a customer environment: +The following diagram demonstrates the process of using the Replicated Platform to distribute an application, install the application in a customer environment, and support the application after installation: ![replicated platform features workflow](/images/replicated-platform.png) [View a larger version of this image](/images/replicated-platform.png) -As shown in the diagram above: -* The Replicated SDK can be distributed alongside an application to get access to an in-cluster API to more easily integrate key features. -* Replicated Compatibility Matrix can be used to quickly generate Kubernetes clusters for running application tests as part of continuous integration and continuous delivery (CI/CD) workflows. -* After testing, application releases can be promoted to a channel in the Replicated Vendor Portal to be shared with customers or internal teams. -* Customers can be assigned to channels in order to control which application releases they are able to access and install. -* Customers' unique licenses grant proxy access to private application images through the Replicated proxy registry. -* Before installation, customers can run preflight checks to verify that their environment meets installation requirements. -* Customers can install using any method, including Helm or Replicated Embedded Cluster. -* Instance data is automatically sent to the Vendor Portal by the Replicated SDK. If the application was installed using KOTS, then KOTS also sends instance data. -* If any issues occur during installation or at runtime, customers can generate and send a support bundle. Support bundles can be uploaded in the Vendor Portal for analysis. +The diagram above first shows an application that is packaged with the Replicated SDK. When installed alongside an application, the Replicated SDK provides an in-cluster API that can be used to interact with the Replicated Vendor Portal. For example, the SDK API can return details about the customer's license or report telemetry on the application instance back to the Vendor Portal. + +When an application is ready to be shared with customers or internal teams, it can be added to a release in the Vendor Portal. The diagram above shows how this process of creating releases can be automated as part of continuous integration and continuous delivery (CI/CD) workflows. The CI/CD workflow depicted in the diagram shows Replicated Compatibility Matrix being used to automatically provision clusters where the application release is installed and tested. + +The CI/CD workflow in the diagram then pushes application images to the vendor's image registry and publishes a release in the Vendor Portal to the "Stable" channel. Customers and internal teams can be assigned to different channels in the Vendor Portal in order to control which application releases they are able to access and install. + +Next, the diagram shows how an enterprise customer named "Big Bank" uses the license they were issued to install the application release in their environment. Vendors can create and manage licenses in the Vendor Portal. + +The installation process depicted in the diagram shows the license being used to access application images through the Replicated proxy registry. It also shows preflight checks running before installation to verify that the environment meets the requirements for the application and the installer. + +Finally, the diagram shows how data from the installed application instance is automatically sent to the Vendor Portal by the Replicated SDK API and the KOTS Admin Console. Additionally, the diagram shows tooling from the open source Troubelshoot project being used to generate support bundles and send those bundles back to the Vendor Portal. Support bundles include logs and other important diagnostic data that can be used by the vendor's support team for the purpose of troubleshooting issues. For more information about the Replicated features depicted in this diagram, see: * [About the Replicated SDK](replicated-sdk-overview) @@ -47,7 +46,7 @@ For more information about the Replicated features depicted in this diagram, see * [About Instance and Event Data](instance-insights-event-data) -## Key Products and Features +## Replicated Platform Features The following are some key Replicated Platform terms that are helpful to know before getting started: From 35d387e0f9512b22d7933516772f4d7addfc9217 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 1 Oct 2024 17:24:44 -0600 Subject: [PATCH 10/30] updating diagram description --- docs/intro-replicated.mdx | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index 4724e524b9..f547d781f6 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -23,25 +23,33 @@ The following diagram demonstrates the process of using the Replicated Platform [View a larger version of this image](/images/replicated-platform.png) -The diagram above first shows an application that is packaged with the Replicated SDK. When installed alongside an application, the Replicated SDK provides an in-cluster API that can be used to interact with the Replicated Vendor Portal. For example, the SDK API can return details about the customer's license or report telemetry on the application instance back to the Vendor Portal. +The diagram above first shows an application that is packaged with the **Replicated SDK**. When installed alongside an application, the Replicated SDK provides an in-cluster API that can be used to interact with the Replicated Vendor Portal. For example, the SDK API can return details about the customer's license or report telemetry on the application instance back to the Vendor Portal. -When an application is ready to be shared with customers or internal teams, it can be added to a release in the Vendor Portal. The diagram above shows how this process of creating releases can be automated as part of continuous integration and continuous delivery (CI/CD) workflows. The CI/CD workflow depicted in the diagram shows Replicated Compatibility Matrix being used to automatically provision clusters where the application release is installed and tested. +When an application is ready to be shared with customers or internal teams, it can be added to a release in the **Vendor Portal**. The diagram above shows how this process of creating releases can be automated as part of continuous integration and continuous delivery (CI/CD) workflows. The CI/CD workflow depicted in the diagram shows **Replicated Compatibility Matrix** being used to automatically provision clusters where the application release is installed and tested. -The CI/CD workflow in the diagram then pushes application images to the vendor's image registry and publishes a release in the Vendor Portal to the "Stable" channel. Customers and internal teams can be assigned to different channels in the Vendor Portal in order to control which application releases they are able to access and install. +The CI/CD workflow in the diagram then pushes application images to the vendor's image registry and publishes a **release** in the Vendor Portal to the **"Stable" channel**. Customers and internal teams are assigned to channels in the Vendor Portal to control which application releases they are able to access and install. -Next, the diagram shows how an enterprise customer named "Big Bank" uses the license they were issued to install the application release in their environment. Vendors can create and manage licenses in the Vendor Portal. +Next, the diagram shows how an enterprise **customer** named "Big Bank" uses the license they were issued to install the application release in their environment. Vendors create and manage licenses and entitlements in the Vendor Portal. -The installation process depicted in the diagram shows the license being used to access application images through the Replicated proxy registry. It also shows preflight checks running before installation to verify that the environment meets the requirements for the application and the installer. +The installation process depicted in the diagram shows the license being used to access application images through the **Replicated proxy registry**. It also shows **preflight checks** running before installation to verify that the environment meets the requirements for the application and the installer. -Finally, the diagram shows how data from the installed application instance is automatically sent to the Vendor Portal by the Replicated SDK API and the KOTS Admin Console. Additionally, the diagram shows tooling from the open source Troubelshoot project being used to generate support bundles and send those bundles back to the Vendor Portal. Support bundles include logs and other important diagnostic data that can be used by the vendor's support team for the purpose of troubleshooting issues. +This diagram depicts the application being installed with the **Replicated Embedded Cluster** installer. With Embedded Cluster, Kubernetes is distributed alongside the application. This allows a Kubernetes application to be installed on a VM or bare metal server. Embedded Cluster installations first provision a cluster, then use the **Replicated KOTS** installer to install the application in the cluster. KOTS also provide an **Admin Console** UI for the customer to manage the application and the cluster. + +The diagram shows the following present in the cluster after installation: +* The application +* The Replicated SDK +* The KOTS Admin Console +* Tooling from the open source **Troubleshoot** project, which is maintained by Replicated + +Finally, the diagram shows how **instance data** and telemetry is automatically sent to the Vendor Portal by the Replicated SDK API and the Admin Console. Additionally, the diagram shows Troubleshoot tooling being used to generate **support bundles** and send those bundles back to the Vendor Portal. Support bundles include logs and other important diagnostic data that can be used by the vendor's support team for the purpose of troubleshooting issues. For more information about the Replicated features depicted in this diagram, see: * [About the Replicated SDK](replicated-sdk-overview) * [About Compatibility Matrix](testing-about) * [About Channels and Releases](releases-about) * [About Customers](licenses-about) -* [About Installing an Application](/enterprise/installing-overview) in the KOTS documentation -* [Installing with Helm](install-with-helm) +* [Using Embedded Cluster](/vendor/embedded-overview) +* [Installing with Embedded Cluster](/enterprise/installing-embedded) * [About Preflight Checks and Support Bundles](preflight-support-bundle-about) * [About Instance and Event Data](instance-insights-event-data) From b10b493d624342cc54d9148de5e6dedad9ed2bb9 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Tue, 1 Oct 2024 17:35:14 -0600 Subject: [PATCH 11/30] edits --- docs/intro-replicated.mdx | 40 +++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index f547d781f6..a23f9c0419 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -56,47 +56,55 @@ For more information about the Replicated features depicted in this diagram, see ## Replicated Platform Features -The following are some key Replicated Platform terms that are helpful to know before getting started: +The following describes the key features of the Replicated Platform. ### Compatibility Matrix -Compatibility Matrix quickly provisions clusters with support for various Kubernetes distributions and versions. You can use Compatibility Matrix to get kubectl access to running clusters within minutes or less. See [About Compatibility Matrix](/vendor/testing-about). +Replicated Compatibility Matrix can be used to get kubectl access to running clusters within minutes or less. Compatibility Matrix supports various Kubernetes distributions and versions and can be interacted with through the Vendor Portal or the Replicated CLI. + +For more information, see [About Compatibility Matrix](/vendor/testing-about). ### Embedded Cluster -Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ alongside the application. Each version of Embedded Cluster includes a specific version of Replicated KOTS, which provides the Admin Console. See [Using Embedded Cluster](/vendor/embedded-overview). +Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together as a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ alongside the application. + +Additionally, each version of Embedded Cluster includes a specific version of the Replicated KOTS installer. KOTS is used to install the application and also provides the Admin Console. + +For more information, see [Using Embedded Cluster](/vendor/embedded-overview). ### KOTS and the Admin Console -KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. See [Introduction to KOTS](intro-kots). +KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. + +The Admin Console is the user interface for installing and managing applications with KOTS. KOTS also provides a CLI that can be used to programmatically install and manage applications. -The Admin Console is the user interface for installing and managing applications with KOTS. +For more information, see [Introduction to KOTS](intro-kots). ### Proxy Registry -### Replicated SDK +The Replicated proxy registry grants proxy access to an application's images using the customer's unique license. This means that customers can get access application images during installation without the vendor needing to provide registry credentials. -The Replicated SDK is a Helm chart that can be installed as a small service alongside your application. It provides access to telemetry and custom metrics on instances of your application running in customer environments as well as an in-cluster API. See [About the Replicated SDK](/vendor/replicated-sdk-overview). +For more information, see [About the Replicated Proxy Registry](/vendor/private-images-about). -### Vendor Portal +### Replicated SDK -The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. +The Replicated SDK is a Helm chart that can be installed as a small service alongside your application. It provides an in-cluster API that can be used to communicate with the Vendor Portal. For example, the SDK API can return details about the customer's license or report telemetry on the application instance back to the Vendor Portal. -* **Replicated CLI**: The Replicated command-line interface (CLI) is the CLI for the Vendor Portal. The Replicated CLI can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams, license files, and so on. For more information, see [Installing the Replicated CLI](/reference/replicated-cli-installing). +For more information, see [About the Replicated SDK](/vendor/replicated-sdk-overview). -* **Vendor API v3**: The Vendor API is the API for the Vendor Portal. This API can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams and license files. +### Vendor Portal -* **Customer**: In the Vendor Portal, a customer represents a single licensed user of your software. See [About Customers](licenses-about). +The Replicated Vendor Portal is the web-based user interface that you can use to configure and manage all of the Replicated features for distributing and managing application releases, supporting your release, viewing customer insights and reporting, and managing teams. -* **Release**: A release represents a single version of your application. Releases contain the files (Helm charts and YAML manifests) that will be distributed to your customers. For example, an Embedded Cluster release includes the application Helm chart, the Embedded Cluster Config, and a KOTS manifest that describes the Helm chart. See [About Channels and Releases](releases-about). +The Vendor Portal can also be interacted with programmatically using the following developer tools: -* **Channel**: Each release is promoted to one or more channels, which are used to control which customers can access the release. For example, vendors might keep separate channels for internal-only, experimental, beta, and generally available (GA) releases. Customers and internal users can access the releases promoted to the channel where they are assigned. See [About Channels and Releases](releases-about). +* **Replicated CLI**: The Replicated CLI can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams, license files, and so on. For more information, see [Installing the Replicated CLI](/reference/replicated-cli-installing). -* **Application**: Within a Vendor Portal team, an application is the top-level container that groups a set of customers, releases, and channels. It is common for teams to create multiple different applications for testing purposes. +* **Vendor API v3**: The Vendor API can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams and license files. For more information, see [Using the Vendor API v3](/reference/vendor-api-using). ## About the Commercial Software Distribution Lifecycle {#life-cycle} -Replicated Platform features are designed to support ISVs in each phase of the commercial software distribution lifecycle, as shown below: +Replicated Platform features are designed to support ISVs in each phase of the commercial software distribution lifecycle shown below: ![software distribution lifecycle wheel](/images/software-dev-lifecycle.png) From 45d0db4603a04c18bd2a64f8b7b42635d632c93d Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 2 Oct 2024 10:40:26 -0600 Subject: [PATCH 12/30] editing faqs --- docs/vendor/kots-faq.mdx | 74 ++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/docs/vendor/kots-faq.mdx b/docs/vendor/kots-faq.mdx index f00d707b7c..1583ec27c0 100644 --- a/docs/vendor/kots-faq.mdx +++ b/docs/vendor/kots-faq.mdx @@ -1,5 +1,6 @@ import SDKOverview from "../partials/replicated-sdk/_overview.mdx" import EmbeddedKubernetes from "../partials/kots/_embedded-kubernetes-definition.mdx" +import Helm from "../partials/helm/_helm-definition.mdx" # Replicated FAQs @@ -7,47 +8,74 @@ This topic lists frequently-asked questions (FAQs) for the Replicated Platform. ## Platform FAQs -### If I distribute my application with Replicated, can my customers still install with the Helm CLI? +### What application packaging options are supported for applications distributed with Replicated? -Yes. +Replicated strongly recommends that all applications are packaged using Helm because many enterprise customers expect to be able to install an application with Helm in their own cluster. + + + +For vendors that do not want to use Helm, applications distributed with Replicated can be packaged as Kubernetes manifest files. Applications packaged as Kubernetes manifests can be installed with the Replicated installers (Replicated Embedded Cluster and Replicated KOTS). + +### What are the different installation options for applications distributed with Replicated? + +The following can be used to install applications distributed with Replicated: +* **Replicated Embedded Cluster**: Emebdded Cluster supports installation on VMs or bare metal servers in online (internet-connected) or air gap environments +* **Helm**: Applications packaged with Helm can be installed in internet-connected clusters using the Helm CLI +* **Replicated KOTS**: KOTS supports installation in online or air gap clusters. + +It is not necessary to create and manage separate release directories for each type of installation; a single release in the Replicated Vendor Portal can be configured to support installation with the Helm CLI and Replicated installers. + +For a tutorial that demonstrates how to add the Bitnami Gitea Helm chart to a release in the Replicated Vendor Portal and then install with both KOTS and the Helm CLI, see [Install a Helm Chart with KOTS and Helm CLI](/vendor/tutorial-kots-helm-setup). ## Compatibility Matrix FAQs ### What types of clusters can I create with Compatibility Matrix? +Compatibility Matrix supports a variety of VM and cloud distributions, including Red Hat OpenShift, Replicated Embedded Cluster, and Oracle Container Engine for Kubernetes (OKE). For a complete list, see [Supported Compatibility Matrix Cluster Types](/vendor/testing-supported-clusters). + ### How does billing work? -### How do I buy more credits? +Clusters created with Compatibility Matrix are billed by the minute. Per-minute billing begins when the cluster reaches a running status and ends when the cluster is deleted. For more information, see [Billing and Credits](/vendor/testing-about#billing-and-credits). -## KOTS and Embedded Cluster FAQs +### How do I buy credits? -### What is the difference between the KOTS and Embedded Cluster installers? +To create clusters with Compatibility Matrix, you must have credits in your Vendor Portal account. If you have a contract, you can purchase credits by logging in to the Vendor Portal and going to **[Compatibility Matrix > Buy additional credits](https://vendor.replicated.com/compatibility-matrix)**. Otherwise, to request credits, log in to the Vendor Portal and go to **[Compatibility Matrix > Request more credits](https://vendor.replicated.com/compatibility-matrix)**. -### What do I have to do to enable Embedded Cluster installations for my application? +### How do I add Comaptibility Matrix to my CI/CD pipelines? -Enabling Embedded Cluster installations requires that the Replicated KOTS entitlement is assigned to your Vendor Portal team. +You can use Replicated CLI commands to integrate Compatibility Matrix into your CI/CD development and production workflows. This allows you to programmatically create multiple different types of clusters where you can deploy and test your application before releasing. + +For more information, see [About Integrating with CI/CD](/vendor/ci-overview). -Teams with the KOTS entitlement can create KOTS-enabled releases by configuring the custom resources required by KOTS to install the application. You also need to add the Embedded Cluster Config. +## KOTS and Embedded Cluster FAQs -For a checklist of the required and optional custom resources for KOTS, see [Onboarding with KOTS](/vendor/distributing-workflow). +### What is the Admin Console? ### How do Embedded Cluster installations on VMs or bare metal servers work? -In installations on VMs or bare metal servers, users run an installation command that provisions a cluster on a VM or bare metal server. +Users run an Embedded Cluster installation command on their VM or bare metal server that provisions a cluster. Embedded Cluster also installs KOTS in the cluster, which deploys the Admin Console. -KOTS then deploys the Admin Console in the cluster, where users can log in to provide their license file, define application-specific configuration values, run preflight checks, and install the application. +Users log in to the Admin Console to provide application-specific configuration values, optionally join more nodes to the cluster, run preflight checks, and finally install the application. -For more information, see [Using Embedded Cluster](/vendor/embedded-overview). +For more information, see [Installing with Embedded Cluster](/enterprise/installing-embedded). -### What's the difference between Replicated Embedded Cluster and kURL? +### What's the difference between Embedded Cluster and kURL? Replicated Embedded Cluster is a successor to Replicated kURL. Compared to kURL, Embedded Cluster feature offers significantly faster installation, updates, and node joins, a redesigned Admin Console UI, improved support for multi-node clusters, one-click updates that update the application and the cluster at the same time, and more. For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or [Introduction to kURL](/vendor/kurl-about). -### Can I use my own branding for KOTS installations? +### What do I have to do to enable Embedded Cluster installations for my application? + +Enabling Embedded Cluster installations requires that the Replicated KOTS entitlement is assigned to your Vendor Portal team. + +Releases that support installation with Embedded Cluster include the Embedded Cluster Config, as well as the manifests required by the KOTS installer to define the Admin Console experience and install the application. + +For more information, see [Onboarding with KOTS](/vendor/distributing-workflow). -The KOTS Admin Console and the Customer Portal support the use of a custom logo. Additionally, software vendors can use custom domains for Replicated services to avoid exposing the default Replicated domains to enterprise users. +### Can I use my own branding for Embedded Cluster and KOTS installations? + +The KOTS Admin Console and the Replicated Customer Portal support the use of a custom logo. Additionally, software vendors can use custom domains to alias the endpoints for Replicated services. For more information, see [Customizing the Admin Console and Customer Portal](/vendor/admin-console-customize-app-icon) and [About Custom Domains](custom-domains). @@ -55,7 +83,7 @@ For more information, see [Customizing the Admin Console and Customer Portal](/v Yes. Software vendors can use KOTS to generate air gap bundles for installation into air gap environments. KOTS also provides customer-specific download portals where air gap bundles and license files can be shared with enterprise users. -Air gap installations are supported for existing and embedded clusters. +Air gap installations are supported for existing and embedded clusters. ### Can I deploy Helm charts with KOTS? @@ -63,17 +91,15 @@ Yes. An application deployed with KOTS can use one or more Helm charts, can incl For more information, see [About Distributing Helm Charts with KOTS](/vendor/helm-native-about). -### What are the use cases for installing applications with Embedded Cluster versus Helm? - -Helm is a popular package manager for Kubernetes applications. Many enterprise users that have experience with Kubernetes and Helm will expect to be able to install an application with the Helm CLI. +## Replicated SDK FAQs -The UI-based installation experience of KOTS can provide an easier installation experience for enterprise users that do not have experience with Kubernetes or Helm. Additionally, KOTS provides support for installations into air gap environments, which is not directly supported by Helm. +### Is the SDK supported in air gap environments? -### Can I support both Helm CLI and KOTS installations for my application? +Yes. The SDK can be installed in air gap mode to run in environments with no outbound internet access. -Yes. Software vendors that distribute their application as one or more Helm charts can support installations with both the Helm CLI and with KOTS from the same release. +### How should I develop against the SDK? -For a tutorial that demonstrates how to add the Bitnami Gitea Helm chart to a release in the Replicated Vendor Portal and then install with both KOTS and the Helm CLI, see [Install a Helm Chart with KOTS and Helm CLI](/vendor/tutorial-kots-helm-setup). +You can install the SDK in development mode to quickly integrate and test when developing against the SDK API. ### How does the Replicated SDK work with KOTS? @@ -83,8 +109,6 @@ Replicated recommends that all applications include the SDK because it provides For more information, see [Installing the Replicated SDK](/vendor/replicated-sdk-installing). -## Replicated SDK FAQs - ## Vendor Portal FAQs ### Can I alias Replicated endpoints? From 457819527c0e43a2e6b36005c3d6244a00897ac7 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 2 Oct 2024 11:34:52 -0600 Subject: [PATCH 13/30] editing faqs --- docs/intro-replicated.mdx | 5 +- docs/vendor/kots-faq.mdx | 133 +++++++++++++++++++++++++++++++------- 2 files changed, 112 insertions(+), 26 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index a23f9c0419..d5ff4045bd 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -8,6 +8,7 @@ import Helm from "/docs/partials/helm/_helm-definition.mdx" import Kots from "/docs/partials/kots/_kots-definition.mdx" import KotsEntitlement from "/docs/partials/kots/_kots-entitlement-note.mdx" import SDKOverview from "/docs/partials/replicated-sdk/_overview.mdx" +import CSDL from "/docs/partials/getting-started/_csdl-overview.mdx" # Introduction to Replicated @@ -104,12 +105,14 @@ The Vendor Portal can also be interacted with programmatically using the followi ## About the Commercial Software Distribution Lifecycle {#life-cycle} -Replicated Platform features are designed to support ISVs in each phase of the commercial software distribution lifecycle shown below: +Replicated Platform features are designed to support ISVs in each phase of the Commercial Software Distribution Lifecycle shown below: ![software distribution lifecycle wheel](/images/software-dev-lifecycle.png) [View a larger version of this image](/images/software-dev-lifecycle.png) + + The following describes the phases of the software distribution lifecycle: * **[Develop](#develop)**: Application design and architecture decisions align with customer needs, and development teams can quickly iterate on new features. diff --git a/docs/vendor/kots-faq.mdx b/docs/vendor/kots-faq.mdx index 1583ec27c0..7b70080124 100644 --- a/docs/vendor/kots-faq.mdx +++ b/docs/vendor/kots-faq.mdx @@ -1,14 +1,15 @@ import SDKOverview from "../partials/replicated-sdk/_overview.mdx" import EmbeddedKubernetes from "../partials/kots/_embedded-kubernetes-definition.mdx" import Helm from "../partials/helm/_helm-definition.mdx" +import CSDL from "../partials/getting-started/_csdl-overview.mdx" # Replicated FAQs -This topic lists frequently-asked questions (FAQs) for the Replicated Platform. +This topic lists frequently-asked questions (FAQs) for different components of the Replicated Platform. -## Platform FAQs +## Getting Started FAQs -### What application packaging options are supported for applications distributed with Replicated? +### What are the supported application packaging options? Replicated strongly recommends that all applications are packaged using Helm because many enterprise customers expect to be able to install an application with Helm in their own cluster. @@ -16,7 +17,7 @@ Replicated strongly recommends that all applications are packaged using Helm bec For vendors that do not want to use Helm, applications distributed with Replicated can be packaged as Kubernetes manifest files. Applications packaged as Kubernetes manifests can be installed with the Replicated installers (Replicated Embedded Cluster and Replicated KOTS). -### What are the different installation options for applications distributed with Replicated? +### What are the supported installation options? The following can be used to install applications distributed with Replicated: * **Replicated Embedded Cluster**: Emebdded Cluster supports installation on VMs or bare metal servers in online (internet-connected) or air gap environments @@ -27,6 +28,46 @@ It is not necessary to create and manage separate release directories for each t For a tutorial that demonstrates how to add the Bitnami Gitea Helm chart to a release in the Replicated Vendor Portal and then install with both KOTS and the Helm CLI, see [Install a Helm Chart with KOTS and Helm CLI](/vendor/tutorial-kots-helm-setup). +### What are the different pricing plans? + +Replicated offers a variety of pricing plans that provide different levels of access to Replicated features and different Replicated support tiers. + +For more information, see the [Pricing](https://www.replicated.com/pricing) page on the Replicated website. + +### What is the Commercial Sotware Distribution Lifecycle? + + + +The phases are: +* Develop +* Test +* Release +* License +* Install +* Report +* Support + +For more information about the Replicated features that enhance each phase of the lifecycle, see [About the Commerical Software Distribution Lifecycle](../intro-replicated#life-cycle) in _Introduction to Replicated_. + +### How do I get started with Replicated? + +Replicated recommends that new users start by completing labs and tutorials to get familiar with the platform and the processes of creating, installing, and iterating on releases for an application. + +When you are ready to begin onboarding your own application to the Replicated Platform, see [Replicated Quick Start](replicated-onboarding). + +The following labs in Instruqt provide a hands-on introduction to working with Replicated features, without needing your own sample application or development environment: + +* [Distributing Your Application with Replicated](https://play.instruqt.com/embed/replicated/tracks/distributing-with-replicated?token=em_VHOEfNnBgU3auAnN): Learn how to quickly get value from the Replicated Platform for your application. +* [Avoiding Installation Pitfalls](https://play.instruqt.com/embed/replicated/tracks/avoiding-installation-pitfalls?token=em_gJjtIzzTTtdd5RFG): Learn how to use preflight checks to avoid common installation issues and assure your customer is installing into a supported environment. +* [Closing the Support Information Gap](https://play.instruqt.com/embed/replicated/tracks/closing-information-gap?token=em_MO2XXCz3bAgwtEca): Learn how to use support bundles to close the information gap between your customers and your support team. +* [Protecting Your Assets](https://play.instruqt.com/embed/replicated/tracks/protecting-your-assets?token=em_7QjY34G_UHKoREBd): Assure your customers have the right access to your application artifacts and features using Replicated licensing. + +The following getting started tutorials demonstrate how to integrate key Replicated features with a sample Helm chart application: +* [Install a Helm Chart on a VM with Embedded Cluster](/vendor/tutorial-embedded-cluster-setup): Create a release that can be installed on a VM with the Embedded Cluster installer. +* [Install a Helm Chart with KOTS and the Helm CLI](/vendor/tutorial-kots-helm-setup): Create a release that can be installed with both the KOTS installer and the Helm CLI. +* [Set Helm Chart Values with KOTS](/vendor/tutorial-config-setup): Configure the Admin Console Config screen to collect user-supplied values. +* [Add Preflight Checks to a Helm Chart](/vendor/tutorial-preflight-helm-setup): Create preflight checks for your application by addin a spec for preflight checks to a Secret in the Helm templates. + ## Compatibility Matrix FAQs ### What types of clusters can I create with Compatibility Matrix? @@ -49,9 +90,7 @@ For more information, see [About Integrating with CI/CD](/vendor/ci-overview). ## KOTS and Embedded Cluster FAQs -### What is the Admin Console? - -### How do Embedded Cluster installations on VMs or bare metal servers work? +### How do Embedded Cluster installations work? Users run an Embedded Cluster installation command on their VM or bare metal server that provisions a cluster. Embedded Cluster also installs KOTS in the cluster, which deploys the Admin Console. @@ -59,13 +98,35 @@ Users log in to the Admin Console to provide application-specific configuration For more information, see [Installing with Embedded Cluster](/enterprise/installing-embedded). +### What is the Admin Console? + +The Admin Console is the user interface deployed by the Replicated KOTS installer. Users log in to the Admin Console to configure and install the application. Users also access to the Admin Console after installation to complete application mangement tasks such as performing updates, syncing their license, generating support bundles, and (for Embedded Cluster installations) managing the cluster. + +The Admin Console is available in installations with Replicated Embedded Cluster on VMs or bare metal servers and with KOTS in existing clusters. + +The following shows an example of the Admin Console dashboard: + +admin console dashboard + +[View a larger version of this image](/images/gitea-ec-ready.png) + +### Does Replicated support installations into air gap environments? + +Yes. The Replicated Embedded Cluster and KOTS installers support installation in air gap environments. Software vendors can use the Replicated Platform to generate air gap bundles. Additionally, Replicated provides a Download Portal where air gap bundles and license files can be shared with enterprise customers. + +### Can I deploy Helm charts with KOTS? + +Yes. An application deployed with KOTS can use one or more Helm charts, can include Helm charts as components, and can use more than a single instance of any Helm chart. Each Helm chart deployed by KOTS requires a unique HelmChart custom resource (`apiVersion: kots.io/v1beta2`) in the release. + +For more information, see [About Distributing Helm Charts with KOTS](/vendor/helm-native-about). + ### What's the difference between Embedded Cluster and kURL? Replicated Embedded Cluster is a successor to Replicated kURL. Compared to kURL, Embedded Cluster feature offers significantly faster installation, updates, and node joins, a redesigned Admin Console UI, improved support for multi-node clusters, one-click updates that update the application and the cluster at the same time, and more. For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or [Introduction to kURL](/vendor/kurl-about). -### What do I have to do to enable Embedded Cluster installations for my application? +### How do I enable Embedded Cluster installations for my application? Enabling Embedded Cluster installations requires that the Replicated KOTS entitlement is assigned to your Vendor Portal team. @@ -73,33 +134,29 @@ Releases that support installation with Embedded Cluster include the Embedded Cl For more information, see [Onboarding with KOTS](/vendor/distributing-workflow). -### Can I use my own branding for Embedded Cluster and KOTS installations? +### Can I use my own branding? -The KOTS Admin Console and the Replicated Customer Portal support the use of a custom logo. Additionally, software vendors can use custom domains to alias the endpoints for Replicated services. - -For more information, see [Customizing the Admin Console and Customer Portal](/vendor/admin-console-customize-app-icon) and [About Custom Domains](custom-domains). - -### Does Replicated support installations into air gap environments? +The KOTS Admin Console and the Replicated Download Portal support the use of a custom logo. Additionally, software vendors can use custom domains to alias the endpoints for Replicated services. -Yes. Software vendors can use KOTS to generate air gap bundles for installation into air gap environments. KOTS also provides customer-specific download portals where air gap bundles and license files can be shared with enterprise users. +For more information, see [Customizing the Admin Console and Download Portal](/vendor/admin-console-customize-app-icon) and [About Custom Domains](custom-domains). -Air gap installations are supported for existing and embedded clusters. +## Replicated SDK FAQs -### Can I deploy Helm charts with KOTS? +### What is the SDK? -Yes. An application deployed with KOTS can use one or more Helm charts, can include Helm charts as components, and can use more than a single instance of any Helm chart. Each Helm chart deployed by KOTS requires a unique HelmChart custom resource (`apiVersion: kots.io/v1beta2`) in the release. + -For more information, see [About Distributing Helm Charts with KOTS](/vendor/helm-native-about). +### Is the SDK supported in air gap environments? -## Replicated SDK FAQs +Yes. The Replicated SDK has an _air gap mode_ that allows it to run in environments with no outbound internet access. When installed in air gap mode, the SDK does not attempt to connect to the internet. This avoids any failures that would occur when the SDK is unable to make outbound requests in air gap environments. -### Is the SDK supported in air gap environments? +For more information, see [Installing the SDK in Air Gap Environments](/vendor/replicated-sdk-airgap). -Yes. The SDK can be installed in air gap mode to run in environments with no outbound internet access. +### How do I integrate and test the SDK API with my application? -### How should I develop against the SDK? +You can use the Replicated SDK in _integration mode_ to develop locally against the SDK API without needing to make real changes in the Replicated Vendor Portal or in your environment. -You can install the SDK in development mode to quickly integrate and test when developing against the SDK API. +For more information, see [Developing Against the SDK API](/vendor/replicated-sdk-development). ### How does the Replicated SDK work with KOTS? @@ -111,6 +168,32 @@ For more information, see [Installing the Replicated SDK](/vendor/replicated-sdk ## Vendor Portal FAQs +## How do I add and remove team members? + +Admins can add, remove, and manage team members from the Vendor Portal. For more information, see [Managing Team Members](/vendor/team-management). + +### How do I manage RBAC policies for my team members? + +By default, every team has two policies created automatically: Admin and Read Only. If you have an Enterprise plan, you will also have the Sales and Support policies created automatically. These default policies are not configurable. + +You can also configure custom RBAC policies if you are on the Enterprise pricing plan. Creating custom RBAC policies lets you limit which areas of the Vendor Portal are accessible to team members, and control read and read/write privileges to groups based on their role. + +For more information, see [Configuring RBAC Policies](vendor/team-management-rbac-configuring). + ### Can I alias Replicated endpoints? -### How does Replicated collect insights and telemetry from instances of my application? +Yes. Replicated supports the use of custom domains to alias the endpoints for Replicated services, such as the Download Portal, the Replicated app service, and the Replicated proxy registry. + +Replicated domains are external to your domain and can require additional security reviews by your customer. Using custom domains as aliases can bring the domains inside an existing security review and reduce your exposure. + +For more information, see [Using Custom Domains](/vendor/custom-domains-using). + +### How does Replicated collect telemetry from instances of my application? + +For instances running in online (internet-connected) environments, either Replicated KOTS or the Replicated SDK periodically sends a small amount of data to the Vendor Portal, depending on which is installed in the cluster alongside the application. If both KOTS and the SDK are installed in the cluster (such as when a Helm chart that includes the SDK is installed by KOTS), then both send instance data. + +For air gap instances, Replicated KOTS and the Replicated SDK collect and store instance telemetry in a Kubernetes Secret in the customer environment. The Replicated SDK also stores any custom metrics within its Secret. + +The telemetry and custom metrics stored in the Secret are collected when a support bundle is generated in the environment. When the support bundle is uploaded to the Vendor Portal, the telemetry and custom metrics are associated with the correct customer and instance ID, and the Vendor Portal updates the instance insights and event data accordingly. + +For more information, see [About Instance and Event Data](/vendor/instance-insights-event-data). \ No newline at end of file From d3ad7f80cdaa3833039eea9e28cb9fdf2fc116d2 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 2 Oct 2024 11:38:04 -0600 Subject: [PATCH 14/30] add missing partial --- docs/partials/getting-started/_csdl-overview.mdx | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/partials/getting-started/_csdl-overview.mdx diff --git a/docs/partials/getting-started/_csdl-overview.mdx b/docs/partials/getting-started/_csdl-overview.mdx new file mode 100644 index 0000000000..6b51ad955e --- /dev/null +++ b/docs/partials/getting-started/_csdl-overview.mdx @@ -0,0 +1,5 @@ +Commercial software distribution is the business process that independent software vendors (ISVs) use to enable enterprise customers to self-host a fully private instance of the vendor's application in an environment controlled by the customer. + +Replicated has developed the Commercial Software Distribution Lifecycle to represents the stages that are essential for every company that wants to deliver their software securely and reliably to customer controlled environments. + +This lifecycle was inspired by the DevOps lifecycle and the Software Development Lifecycle (SDLC), but it focuses on the unique things that must be done to successfully distribute third party, commercial software to tens, hundreds, or thousands of enterprise customers. \ No newline at end of file From cd5436d2a960dc68c7b09f0c7a5a14f33154268b Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 2 Oct 2024 11:41:30 -0600 Subject: [PATCH 15/30] undo changes to faqs --- docs/vendor/kots-faq.mdx | 183 ++++++++++----------------------------- sidebars.js | 2 +- 2 files changed, 46 insertions(+), 139 deletions(-) diff --git a/docs/vendor/kots-faq.mdx b/docs/vendor/kots-faq.mdx index 7b70080124..2c4fab10a3 100644 --- a/docs/vendor/kots-faq.mdx +++ b/docs/vendor/kots-faq.mdx @@ -1,118 +1,83 @@ import SDKOverview from "../partials/replicated-sdk/_overview.mdx" import EmbeddedKubernetes from "../partials/kots/_embedded-kubernetes-definition.mdx" -import Helm from "../partials/helm/_helm-definition.mdx" -import CSDL from "../partials/getting-started/_csdl-overview.mdx" -# Replicated FAQs +# KOTS Terminology and FAQs -This topic lists frequently-asked questions (FAQs) for different components of the Replicated Platform. +This topic lists key terminology and frequently-asked questions (FAQs) for the Replicated KOTS installer that are helpful to understand before getting started. -## Getting Started FAQs +## Key Terminology -### What are the supported application packaging options? +### Air Gap -Replicated strongly recommends that all applications are packaged using Helm because many enterprise customers expect to be able to install an application with Helm in their own cluster. +_Air gap_ refers to customer environments that do not have outbound internet access. Air gap environments are common for enterprise users that require high security. - +### Embedded Kubernetes -For vendors that do not want to use Helm, applications distributed with Replicated can be packaged as Kubernetes manifest files. Applications packaged as Kubernetes manifests can be installed with the Replicated installers (Replicated Embedded Cluster and Replicated KOTS). + -### What are the supported installation options? +Both the Replicated Embedded Cluster and Replicated kURL installers can be used to embed Kubernetes with your application. For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or [Introduction to kURL](/vendor/kurl-about). -The following can be used to install applications distributed with Replicated: -* **Replicated Embedded Cluster**: Emebdded Cluster supports installation on VMs or bare metal servers in online (internet-connected) or air gap environments -* **Helm**: Applications packaged with Helm can be installed in internet-connected clusters using the Helm CLI -* **Replicated KOTS**: KOTS supports installation in online or air gap clusters. +### KOTS Custom Resources -It is not necessary to create and manage separate release directories for each type of installation; a single release in the Replicated Vendor Portal can be configured to support installation with the Helm CLI and Replicated installers. +KOTS provides several Kubernetes custom resources in the `kots.io` API group. KOTS custom resources are consumed by KOTS or other kubectl plugins and are _not_ deployed to the cluster. -For a tutorial that demonstrates how to add the Bitnami Gitea Helm chart to a release in the Replicated Vendor Portal and then install with both KOTS and the Helm CLI, see [Install a Helm Chart with KOTS and Helm CLI](/vendor/tutorial-kots-helm-setup). - -### What are the different pricing plans? - -Replicated offers a variety of pricing plans that provide different levels of access to Replicated features and different Replicated support tiers. - -For more information, see the [Pricing](https://www.replicated.com/pricing) page on the Replicated website. - -### What is the Commercial Sotware Distribution Lifecycle? - - +Software vendors can configure KOTS custom resources to provide installation instructions and control the application experience in the KOTS Admin Console. -The phases are: -* Develop -* Test -* Release -* License -* Install -* Report -* Support +For more information, see [About Custom Resources](/reference/custom-resource-about). -For more information about the Replicated features that enhance each phase of the lifecycle, see [About the Commerical Software Distribution Lifecycle](../intro-replicated#life-cycle) in _Introduction to Replicated_. +### KOTS Template Functions -### How do I get started with Replicated? +KOTS provides a set of custom template functions based on the Go text/template library that can be used in any Kubernetes manifests for applications deployed with KOTS. -Replicated recommends that new users start by completing labs and tutorials to get familiar with the platform and the processes of creating, installing, and iterating on releases for an application. +KOTS template functions can be used to generate values specific to the customer environment that can be useful during installation. For example, customer entitlement information, user-provided configuration values, or the number of nodes detected in the Kubernetes cluster where the application is installed. -When you are ready to begin onboarding your own application to the Replicated Platform, see [Replicated Quick Start](replicated-onboarding). +For more information, see [About Template Functions](/reference/template-functions-about). -The following labs in Instruqt provide a hands-on introduction to working with Replicated features, without needing your own sample application or development environment: +## FAQs -* [Distributing Your Application with Replicated](https://play.instruqt.com/embed/replicated/tracks/distributing-with-replicated?token=em_VHOEfNnBgU3auAnN): Learn how to quickly get value from the Replicated Platform for your application. -* [Avoiding Installation Pitfalls](https://play.instruqt.com/embed/replicated/tracks/avoiding-installation-pitfalls?token=em_gJjtIzzTTtdd5RFG): Learn how to use preflight checks to avoid common installation issues and assure your customer is installing into a supported environment. -* [Closing the Support Information Gap](https://play.instruqt.com/embed/replicated/tracks/closing-information-gap?token=em_MO2XXCz3bAgwtEca): Learn how to use support bundles to close the information gap between your customers and your support team. -* [Protecting Your Assets](https://play.instruqt.com/embed/replicated/tracks/protecting-your-assets?token=em_7QjY34G_UHKoREBd): Assure your customers have the right access to your application artifacts and features using Replicated licensing. +### What is KOTS? -The following getting started tutorials demonstrate how to integrate key Replicated features with a sample Helm chart application: -* [Install a Helm Chart on a VM with Embedded Cluster](/vendor/tutorial-embedded-cluster-setup): Create a release that can be installed on a VM with the Embedded Cluster installer. -* [Install a Helm Chart with KOTS and the Helm CLI](/vendor/tutorial-kots-helm-setup): Create a release that can be installed with both the KOTS installer and the Helm CLI. -* [Set Helm Chart Values with KOTS](/vendor/tutorial-config-setup): Configure the Admin Console Config screen to collect user-supplied values. -* [Add Preflight Checks to a Helm Chart](/vendor/tutorial-preflight-helm-setup): Create preflight checks for your application by addin a spec for preflight checks to a Secret in the Helm templates. +Replicated KOTS is an open source kubectl plugin maintained by Replicated. KOTS provides highly successful installations of Kubernetes applications into diverse environments (including on-prem and air gap environments). -## Compatibility Matrix FAQs +For more information, see [Introduction to KOTS](../intro-kots). -### What types of clusters can I create with Compatibility Matrix? +### What do I have to do to enable KOTS installations for my application? -Compatibility Matrix supports a variety of VM and cloud distributions, including Red Hat OpenShift, Replicated Embedded Cluster, and Oracle Container Engine for Kubernetes (OKE). For a complete list, see [Supported Compatibility Matrix Cluster Types](/vendor/testing-supported-clusters). +Enabling KOTS installations requires that the Replicated KOTS entitlement is assigned to your Vendor Portal team. -### How does billing work? +Teams with the KOTS entitlement can create KOTS-enabled releases by configuring the custom resources required by KOTS to install the application. For a checklist of the required and optional custom resources for KOTS, see [Onboarding with KOTS](/vendor/distributing-workflow). -Clusters created with Compatibility Matrix are billed by the minute. Per-minute billing begins when the cluster reaches a running status and ends when the cluster is deleted. For more information, see [Billing and Credits](/vendor/testing-about#billing-and-credits). +### How do KOTS installations in existing clusters work? -### How do I buy credits? +Enterprise users installing an application with KOTS first run the `kubectl kots install` command to install KOTS in the target cluster. KOTS deploys the Admin Console, where users can log in to provide their license file, define application-specific configuration values, run preflight checks, and install the application. -To create clusters with Compatibility Matrix, you must have credits in your Vendor Portal account. If you have a contract, you can purchase credits by logging in to the Vendor Portal and going to **[Compatibility Matrix > Buy additional credits](https://vendor.replicated.com/compatibility-matrix)**. Otherwise, to request credits, log in to the Vendor Portal and go to **[Compatibility Matrix > Request more credits](https://vendor.replicated.com/compatibility-matrix)**. +For detailed installation steps, see [Installing in Existing Clusters](/enterprise/installing-existing-cluster). -### How do I add Comaptibility Matrix to my CI/CD pipelines? +### How do KOTS installations on VMs or bare metal servers work? -You can use Replicated CLI commands to integrate Compatibility Matrix into your CI/CD development and production workflows. This allows you to programmatically create multiple different types of clusters where you can deploy and test your application before releasing. +In installations on VMs or bare metal servers, users run an installation command that provisions a cluster on a VM or bare metal server. Clusters can be provisioned with Replicated Embedded Cluster or with Replicated kURL. -For more information, see [About Integrating with CI/CD](/vendor/ci-overview). +KOTS then deploys the Admin Console in the cluster, where users can log in to provide their license file, define application-specific configuration values, run preflight checks, and install the application. -## KOTS and Embedded Cluster FAQs - -### How do Embedded Cluster installations work? - -Users run an Embedded Cluster installation command on their VM or bare metal server that provisions a cluster. Embedded Cluster also installs KOTS in the cluster, which deploys the Admin Console. - -Users log in to the Admin Console to provide application-specific configuration values, optionally join more nodes to the cluster, run preflight checks, and finally install the application. +For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or [Introduction to kURL](/vendor/kurl-about). -For more information, see [Installing with Embedded Cluster](/enterprise/installing-embedded). +### What's the difference between Replicated Embedded Cluster and kURL? -### What is the Admin Console? +Replicated Embedded Cluster is a successor to Replicated kURL. Compared to kURL, Embedded Cluster feature offers significantly faster installation, updates, and node joins, a redesigned Admin Console UI, improved support for multi-node clusters, one-click updates that update the application and the cluster at the same time, and more. -The Admin Console is the user interface deployed by the Replicated KOTS installer. Users log in to the Admin Console to configure and install the application. Users also access to the Admin Console after installation to complete application mangement tasks such as performing updates, syncing their license, generating support bundles, and (for Embedded Cluster installations) managing the cluster. +For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or [Introduction to kURL](/vendor/kurl-about). -The Admin Console is available in installations with Replicated Embedded Cluster on VMs or bare metal servers and with KOTS in existing clusters. +### Can I use my own branding for KOTS installations? -The following shows an example of the Admin Console dashboard: +The KOTS Admin Console and the download portal support the use of a custom logo. Additionally, software vendors can use custom domains for Replicated services to avoid exposing the default Replicated domains to enterprise users. -admin console dashboard +For more information, see [Customizing the Admin Console and Download Portal](/vendor/admin-console-customize-app-icon) and [About Custom Domains](custom-domains). -[View a larger version of this image](/images/gitea-ec-ready.png) +### Does KOTS support installations into air gap environments? -### Does Replicated support installations into air gap environments? +Yes. Software vendors can use KOTS to generate air gap bundles for installation into air gap environments. KOTS also provides customer-specific download portals where air gap bundles and license files can be shared with enterprise users. -Yes. The Replicated Embedded Cluster and KOTS installers support installation in air gap environments. Software vendors can use the Replicated Platform to generate air gap bundles. Additionally, Replicated provides a Download Portal where air gap bundles and license files can be shared with enterprise customers. +Air gap installations are supported for existing and embedded clusters. ### Can I deploy Helm charts with KOTS? @@ -120,43 +85,17 @@ Yes. An application deployed with KOTS can use one or more Helm charts, can incl For more information, see [About Distributing Helm Charts with KOTS](/vendor/helm-native-about). -### What's the difference between Embedded Cluster and kURL? - -Replicated Embedded Cluster is a successor to Replicated kURL. Compared to kURL, Embedded Cluster feature offers significantly faster installation, updates, and node joins, a redesigned Admin Console UI, improved support for multi-node clusters, one-click updates that update the application and the cluster at the same time, and more. - -For more information, see [Using Embedded Cluster](/vendor/embedded-overview) or [Introduction to kURL](/vendor/kurl-about). - -### How do I enable Embedded Cluster installations for my application? - -Enabling Embedded Cluster installations requires that the Replicated KOTS entitlement is assigned to your Vendor Portal team. - -Releases that support installation with Embedded Cluster include the Embedded Cluster Config, as well as the manifests required by the KOTS installer to define the Admin Console experience and install the application. - -For more information, see [Onboarding with KOTS](/vendor/distributing-workflow). - -### Can I use my own branding? - -The KOTS Admin Console and the Replicated Download Portal support the use of a custom logo. Additionally, software vendors can use custom domains to alias the endpoints for Replicated services. +### What are the use cases for installing applications with KOTS versus Helm? -For more information, see [Customizing the Admin Console and Download Portal](/vendor/admin-console-customize-app-icon) and [About Custom Domains](custom-domains). - -## Replicated SDK FAQs - -### What is the SDK? - - - -### Is the SDK supported in air gap environments? - -Yes. The Replicated SDK has an _air gap mode_ that allows it to run in environments with no outbound internet access. When installed in air gap mode, the SDK does not attempt to connect to the internet. This avoids any failures that would occur when the SDK is unable to make outbound requests in air gap environments. +Helm is a popular package manager for Kubernetes applications. Many enterprise users that have experience with Kubernetes and Helm will expect to be able to install an application with the Helm CLI. -For more information, see [Installing the SDK in Air Gap Environments](/vendor/replicated-sdk-airgap). +The UI-based installation experience of KOTS can provide an easier installation experience for enterprise users that do not have experience with Kubernetes or Helm. Additionally, KOTS provides support for installations into air gap environments, which is not directly supported by Helm. -### How do I integrate and test the SDK API with my application? +### Can I support both Helm CLI and KOTS installations for my application? -You can use the Replicated SDK in _integration mode_ to develop locally against the SDK API without needing to make real changes in the Replicated Vendor Portal or in your environment. +Yes. Software vendors that distribute their application as one or more Helm charts can support installations with both the Helm CLI and with KOTS from the same release. -For more information, see [Developing Against the SDK API](/vendor/replicated-sdk-development). +For a tutorial that demonstrates how to add the Bitnami Gitea Helm chart to a release in the Replicated Vendor Portal and then install with both KOTS and the Helm CLI, see [Install a Helm Chart with KOTS and Helm CLI](/vendor/tutorial-kots-helm-setup). ### How does the Replicated SDK work with KOTS? @@ -165,35 +104,3 @@ The Replicated SDK is a Helm chart that can be installed as a small service alon Replicated recommends that all applications include the SDK because it provides access to key functionality not available through KOTS, such as support for sending custom metrics from application instances. When both the SDK and KOTS are installed in a cluster alongside an application, both send instance telemetry to the Vendor Portal. For more information, see [Installing the Replicated SDK](/vendor/replicated-sdk-installing). - -## Vendor Portal FAQs - -## How do I add and remove team members? - -Admins can add, remove, and manage team members from the Vendor Portal. For more information, see [Managing Team Members](/vendor/team-management). - -### How do I manage RBAC policies for my team members? - -By default, every team has two policies created automatically: Admin and Read Only. If you have an Enterprise plan, you will also have the Sales and Support policies created automatically. These default policies are not configurable. - -You can also configure custom RBAC policies if you are on the Enterprise pricing plan. Creating custom RBAC policies lets you limit which areas of the Vendor Portal are accessible to team members, and control read and read/write privileges to groups based on their role. - -For more information, see [Configuring RBAC Policies](vendor/team-management-rbac-configuring). - -### Can I alias Replicated endpoints? - -Yes. Replicated supports the use of custom domains to alias the endpoints for Replicated services, such as the Download Portal, the Replicated app service, and the Replicated proxy registry. - -Replicated domains are external to your domain and can require additional security reviews by your customer. Using custom domains as aliases can bring the domains inside an existing security review and reduce your exposure. - -For more information, see [Using Custom Domains](/vendor/custom-domains-using). - -### How does Replicated collect telemetry from instances of my application? - -For instances running in online (internet-connected) environments, either Replicated KOTS or the Replicated SDK periodically sends a small amount of data to the Vendor Portal, depending on which is installed in the cluster alongside the application. If both KOTS and the SDK are installed in the cluster (such as when a Helm chart that includes the SDK is installed by KOTS), then both send instance data. - -For air gap instances, Replicated KOTS and the Replicated SDK collect and store instance telemetry in a Kubernetes Secret in the customer environment. The Replicated SDK also stores any custom metrics within its Secret. - -The telemetry and custom metrics stored in the Secret are collected when a support bundle is generated in the environment. When the support bundle is uploaded to the Vendor Portal, the telemetry and custom metrics are associated with the correct customer and instance ID, and the Vendor Portal updates the instance insights and event data accordingly. - -For more information, see [About Instance and Event Data](/vendor/instance-insights-event-data). \ No newline at end of file diff --git a/sidebars.js b/sidebars.js index d2fd53835a..06bf5219e2 100644 --- a/sidebars.js +++ b/sidebars.js @@ -36,7 +36,6 @@ const sidebars = { //GET STARTED {type: 'html', value: '

    getting started
    ', defaultStyle: true}, 'intro-replicated', - 'vendor/kots-faq', 'vendor/replicated-onboarding', // { // type: 'category', @@ -185,6 +184,7 @@ const sidebars = { label: 'Distributing and Installing with KOTS', items: [ 'intro-kots', + 'vendor/kots-faq', 'vendor/distributing-workflow', { type: 'category', From 4e4388a31f5dac75af9e1447ff7f540b07949778 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 23 Oct 2024 12:19:29 -0600 Subject: [PATCH 16/30] intro kots edits --- docs/intro-kots.mdx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/intro-kots.mdx b/docs/intro-kots.mdx index 58358f431f..846248c614 100644 --- a/docs/intro-kots.mdx +++ b/docs/intro-kots.mdx @@ -16,10 +16,10 @@ KOTS communicates securely with the Replicated Vendor Portal to synchronize cust Installing an application with KOTS provides access to feautures such as: -* Support for air gap installations +* Support for installations in air-gapped environments with no outbound internet access * Support for installations on VMs or bare metal servers, when using Replicated Embedded Cluster or Replicated kURL * The KOTS Admin Console, which provides a user interface where customers can install and manage their application instances -* Instance telemetry automatically sent to the vendor portal for instances running in customer environments +* Instance telemetry automatically sent to the Vendor Portal for instances running in customer environments * Strict preflight checks that block installation if environment requirements are not met * Backup and restore with Replicated snapshots * Support for marking releases as required to prevent users from skipping them during upgrades @@ -28,10 +28,10 @@ KOTS is an open source project that is maintained by Replicated. For more inform ## About Installing with KOTS -KOTS can be used to install applications in Kubernetes clusters, including: +KOTS can be used to install Kubernetes applications and Helm charts in the following environments: * Clusters provisioned on VMs or bare metal servers with Replicated Embedded Cluster or Replicated kURL * Existing clusters brought by the user -* Online or air gap clusters +* Online (internet-connected) or air-gapped (disconnected) clusters To install an application with KOTS, users first run an installation script that installs KOTS in the target cluster and deploys the KOTS Admin Console. After KOTS is installed, users can log in to the KOTS Admin Console to upload their license file, configure the application, run preflight checks, and install and deploy the application. @@ -42,9 +42,9 @@ The following diagram demonstrates how a single release promoted to the Stable c [View a larger version of this image](/images/kots-installation-overview.png) As shown in the diagram above: -* For installations in existing internet-connected clusters, users run a command to install KOTS in their cluster. -* For installations on VMs or bare metal servers, users run an installation script that both provisions a cluster in their environment and installs KOTS in the cluster. -* For installations in air gap clusters, users download air gap bundles for KOTS and the application from the Replicated Download Portal and then provide the bundles during installation. +* For installations in existing online (internet-connected) clusters, users run a command to install KOTS in their cluster. +* For installations on VMs or bare metal servers, users run an Embedded Cluster or kURL installation script that both provisions a cluster in their environment and installs KOTS in the cluster. +* For installations in air-gapped clusters with no outbound internet access, users download air gap bundles for KOTS and the application from the Replicated Download Portal and then provide the bundles during installation. All users must provide a license file to install with KOTS. After KOTS is installed in the cluster, users can access the KOTS Admin Console to provide their license file and deploy the application. From 20cb63d19e69b07d7f01b4b873cd26756f291f15 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 23 Oct 2024 15:30:33 -0600 Subject: [PATCH 17/30] edits to diagram description --- docs/intro-replicated.mdx | 20 +++++++----------- .../_replicated-definition.mdx | 2 +- static/images/replicated-platform.png | Bin 114460 -> 117083 bytes 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index d5ff4045bd..2220c603d9 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -18,25 +18,21 @@ This topic provides an introduction to the Replicated Platform, including a plat +The Replicated Platform features are designed to support ISVs during each phase of the Commercial Software Distribution Lifecycle. For more information, see [About the Commercial Software Distribution Lifecycle](intro-lifecycle). + The following diagram demonstrates the process of using the Replicated Platform to distribute an application, install the application in a customer environment, and support the application after installation: ![replicated platform features workflow](/images/replicated-platform.png) [View a larger version of this image](/images/replicated-platform.png) -The diagram above first shows an application that is packaged with the **Replicated SDK**. When installed alongside an application, the Replicated SDK provides an in-cluster API that can be used to interact with the Replicated Vendor Portal. For example, the SDK API can return details about the customer's license or report telemetry on the application instance back to the Vendor Portal. - -When an application is ready to be shared with customers or internal teams, it can be added to a release in the **Vendor Portal**. The diagram above shows how this process of creating releases can be automated as part of continuous integration and continuous delivery (CI/CD) workflows. The CI/CD workflow depicted in the diagram shows **Replicated Compatibility Matrix** being used to automatically provision clusters where the application release is installed and tested. - -The CI/CD workflow in the diagram then pushes application images to the vendor's image registry and publishes a **release** in the Vendor Portal to the **"Stable" channel**. Customers and internal teams are assigned to channels in the Vendor Portal to control which application releases they are able to access and install. - -Next, the diagram shows how an enterprise **customer** named "Big Bank" uses the license they were issued to install the application release in their environment. Vendors create and manage licenses and entitlements in the Vendor Portal. +The diagram above shows an application that is packaged with the [**Replicated SDK**](replicated-sdk-overview). The application is tested in clusters provisioned with the [**Replicated Compatibility Matrix**](testing-about), then added to a new release in the **Vendor Portal** using a CI/CD pipeline. -The installation process depicted in the diagram shows the license being used to access application images through the **Replicated proxy registry**. It also shows **preflight checks** running before installation to verify that the environment meets the requirements for the application and the installer. +The application is then installed by a customer ("Big Bank") in a VM. To install, the customer downloads their license, which grants proxy access to the application images through the **Replicated proxy registry**. They also download the installation assets for the [**Replicated Embedded Cluster**](/vendor/embedded-overview) installer. -This diagram depicts the application being installed with the **Replicated Embedded Cluster** installer. With Embedded Cluster, Kubernetes is distributed alongside the application. This allows a Kubernetes application to be installed on a VM or bare metal server. Embedded Cluster installations first provision a cluster, then use the **Replicated KOTS** installer to install the application in the cluster. KOTS also provide an **Admin Console** UI for the customer to manage the application and the cluster. +Embedded Cluster runs **preflight checks** to verify that the environment meets the requirements, provisions a cluster, and uses **Replicated KOTS** to deploy the application. KOTS also provide an **Admin Console** UI where the customer can manage the application and the cluster. -The diagram shows the following present in the cluster after installation: +After installing, the following are present in cluster after installation: * The application * The Replicated SDK * The KOTS Admin Console @@ -73,7 +69,7 @@ Additionally, each version of Embedded Cluster includes a specific version of th For more information, see [Using Embedded Cluster](/vendor/embedded-overview). -### KOTS and the Admin Console +### KOTS (Admin Console) KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. @@ -103,7 +99,7 @@ The Vendor Portal can also be interacted with programmatically using the followi * **Vendor API v3**: The Vendor API can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams and license files. For more information, see [Using the Vendor API v3](/reference/vendor-api-using). -## About the Commercial Software Distribution Lifecycle {#life-cycle} +## Commercial Software Distribution Lifecycle Replicated Platform features are designed to support ISVs in each phase of the Commercial Software Distribution Lifecycle shown below: diff --git a/docs/partials/getting-started/_replicated-definition.mdx b/docs/partials/getting-started/_replicated-definition.mdx index a22180a8d7..be99b21668 100644 --- a/docs/partials/getting-started/_replicated-definition.mdx +++ b/docs/partials/getting-started/_replicated-definition.mdx @@ -1 +1 @@ -Replicated is a commercial software distribution platform. Independent software vendors (ISVs) can use features of the Replicated Platform to distribute modern enterprise software into complex, customer-controlled environments, including on-prem and air gap. \ No newline at end of file +Replicated is a commercial software distribution platform. Independent software vendors (ISVs) can use features of the Replicated Platform to distribute modern commercial software into complex, customer-controlled environments, including on-prem and air gap. \ No newline at end of file diff --git a/static/images/replicated-platform.png b/static/images/replicated-platform.png index c0d3d82b8c68a09e2bfc007a2088d8709ea92072..5d7b3f77aa1fefcf595433a9a5463500920dd1fb 100644 GIT binary patch delta 49116 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 Xx$wUDJL@SYK=ygM`njxgN@xNA^~qYv From 31ee890ade7f22d12a3165c14012687be4c5443e Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 23 Oct 2024 15:43:18 -0600 Subject: [PATCH 18/30] edits --- docs/intro-replicated.mdx | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index 2220c603d9..f2aa9fcc4d 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -18,7 +18,7 @@ This topic provides an introduction to the Replicated Platform, including a plat -The Replicated Platform features are designed to support ISVs during each phase of the Commercial Software Distribution Lifecycle. For more information, see [About the Commercial Software Distribution Lifecycle](intro-lifecycle). +The Replicated Platform features are designed to support ISVs during each phase of the Commercial Software Distribution Lifecycle. For more information, see [Commercial Software Distribution Lifecycle](#csdl) below. The following diagram demonstrates the process of using the Replicated Platform to distribute an application, install the application in a customer environment, and support the application after installation: @@ -26,30 +26,13 @@ The following diagram demonstrates the process of using the Replicated Platform [View a larger version of this image](/images/replicated-platform.png) -The diagram above shows an application that is packaged with the [**Replicated SDK**](replicated-sdk-overview). The application is tested in clusters provisioned with the [**Replicated Compatibility Matrix**](testing-about), then added to a new release in the **Vendor Portal** using a CI/CD pipeline. +The diagram above shows an application that is packaged with the [**Replicated SDK**](replicated-sdk-overview). The application is tested in clusters provisioned with the [**Replicated Compatibility Matrix**](testing-about), then added to a new release in the [**Vendor Portal**](/vendor/releases-about) using an automated CI/CD pipeline. -The application is then installed by a customer ("Big Bank") in a VM. To install, the customer downloads their license, which grants proxy access to the application images through the **Replicated proxy registry**. They also download the installation assets for the [**Replicated Embedded Cluster**](/vendor/embedded-overview) installer. +The application is then installed by a customer ("Big Bank") in a VM. To install, the customer downloads their license, which grants proxy access to the application images through the [**Replicated proxy registry**](/vendor/private-images-about). They also download the installation assets for the [**Replicated Embedded Cluster**](/vendor/embedded-overview) installer. -Embedded Cluster runs **preflight checks** to verify that the environment meets the requirements, provisions a cluster, and uses **Replicated KOTS** to deploy the application. KOTS also provide an **Admin Console** UI where the customer can manage the application and the cluster. - -After installing, the following are present in cluster after installation: -* The application -* The Replicated SDK -* The KOTS Admin Console -* Tooling from the open source **Troubleshoot** project, which is maintained by Replicated - -Finally, the diagram shows how **instance data** and telemetry is automatically sent to the Vendor Portal by the Replicated SDK API and the Admin Console. Additionally, the diagram shows Troubleshoot tooling being used to generate **support bundles** and send those bundles back to the Vendor Portal. Support bundles include logs and other important diagnostic data that can be used by the vendor's support team for the purpose of troubleshooting issues. - -For more information about the Replicated features depicted in this diagram, see: -* [About the Replicated SDK](replicated-sdk-overview) -* [About Compatibility Matrix](testing-about) -* [About Channels and Releases](releases-about) -* [About Customers](licenses-about) -* [Using Embedded Cluster](/vendor/embedded-overview) -* [Installing with Embedded Cluster](/enterprise/installing-embedded) -* [About Preflight Checks and Support Bundles](preflight-support-bundle-about) -* [About Instance and Event Data](instance-insights-event-data) +Embedded Cluster runs [**preflight checks**](preflight-support-bundle-about) to verify that the environment meets the installation requirements, provisions a cluster on the VM, and uses [**Replicated KOTS**](intro-kots) to deploy the application. KOTS provides an [**Admin Console**](intro-kots#kots-admin-console) where the customer can manage the application and the cluster. +Finally, the diagram shows how [**instance data**](instance-insights-event-data) is automatically sent from the customer environment to the Vendor Portal by the Replicated SDK API and the KOTS Admin Console. Additionally, tooling from the open source [**Troubleshoot**](https://troubleshoot.sh/docs/collect/) project is used to generate and send [**support bundles**](preflight-support-bundle-about), which include logs and other important diagnostic data. ## Replicated Platform Features @@ -99,7 +82,7 @@ The Vendor Portal can also be interacted with programmatically using the followi * **Vendor API v3**: The Vendor API can be used to complete tasks programmatically, including all tasks for packaging and managing applications, and managing artifacts such as teams and license files. For more information, see [Using the Vendor API v3](/reference/vendor-api-using). -## Commercial Software Distribution Lifecycle +## Commercial Software Distribution Lifecycle {#csdl} Replicated Platform features are designed to support ISVs in each phase of the Commercial Software Distribution Lifecycle shown below: @@ -159,8 +142,6 @@ The primary recommended installation methods include: * **Replicated Embedded Cluster**: With Embedded Cluster, Kubernetes and the application are delivered together as a single appliance, allowing customers to install on VMs or bare metal servers. Embedded Cluster uses Replicated KOTS to install the application and supports installation in online and air gap environments. For more information, see [Using Emebdded Cluster](/vendor/embedded-overview). * **Helm**: Helm installations can be enhanced with Replicated components like the Replicated SDK, which provides instance telemetry and other features through an in-cluster API, and the Replicated proxy registry, which provides proxy access to private images. For more information, see [Installing with Helm](/vendor/install-with-helm). -KOTS also supports online and air gap installations in existing clusters. For more information, see [Introduction to KOTS](kots-intro). - ### Report When installed alongside an application, the Replicated SDK and Replicated KOTS automatically send instance data from the customer environment to the Replicated Vendor Portal. This instance data includes health and status indicators, adoption metrics, and performance metrics. For more information, see [About Instance and Event Data](/vendor/instance-insights-event-data). From 9b9feefa79e84b4a642cadbd39c4b0e9dea402c0 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 23 Oct 2024 16:28:59 -0600 Subject: [PATCH 19/30] edit --- docs/intro-kots.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro-kots.mdx b/docs/intro-kots.mdx index 846248c614..5f6069f048 100644 --- a/docs/intro-kots.mdx +++ b/docs/intro-kots.mdx @@ -16,7 +16,7 @@ KOTS communicates securely with the Replicated Vendor Portal to synchronize cust Installing an application with KOTS provides access to feautures such as: -* Support for installations in air-gapped environments with no outbound internet access +* Support for air gap installations * Support for installations on VMs or bare metal servers, when using Replicated Embedded Cluster or Replicated kURL * The KOTS Admin Console, which provides a user interface where customers can install and manage their application instances * Instance telemetry automatically sent to the Vendor Portal for instances running in customer environments From 7e58a37bf8ccd25f6f568ce5e9696faaff4c5827 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Wed, 13 Nov 2024 13:10:29 -0700 Subject: [PATCH 20/30] edits --- docs/intro-replicated.mdx | 11 ++++++++++- docs/partials/preflights/_preflights-sb-about.mdx | 5 +++++ ...le-about.md => preflight-support-bundle-about.mdx} | 8 +++----- 3 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 docs/partials/preflights/_preflights-sb-about.mdx rename docs/vendor/{preflight-support-bundle-about.md => preflight-support-bundle-about.mdx} (93%) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index f2aa9fcc4d..c4d659554a 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -9,6 +9,7 @@ import Kots from "/docs/partials/kots/_kots-definition.mdx" import KotsEntitlement from "/docs/partials/kots/_kots-entitlement-note.mdx" import SDKOverview from "/docs/partials/replicated-sdk/_overview.mdx" import CSDL from "/docs/partials/getting-started/_csdl-overview.mdx" +import PreflightSbAbout from "/docs/partials/preflights/_preflights-sb-about.mdx" # Introduction to Replicated @@ -46,7 +47,7 @@ For more information, see [About Compatibility Matrix](/vendor/testing-about). ### Embedded Cluster -Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together as a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ alongside the application. +Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together as a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ with the application. Additionally, each version of Embedded Cluster includes a specific version of the Replicated KOTS installer. KOTS is used to install the application and also provides the Admin Console. @@ -60,6 +61,12 @@ The Admin Console is the user interface for installing and managing applications For more information, see [Introduction to KOTS](intro-kots). +### Preflight Checks and Support Bundles + + + +For more information, see [About Preflight Checks and Support Bundles](/vendor/preflight-support-bundle-about). + ### Proxy Registry The Replicated proxy registry grants proxy access to an application's images using the customer's unique license. This means that customers can get access application images during installation without the vendor needing to provide registry credentials. @@ -92,6 +99,8 @@ Replicated Platform features are designed to support ISVs in each phase of the C +For more information about to download a copy of The Commercial Software Distribution Handbook, see [The Commercial Software Distribution Handbook](https://www.replicated.com/the-commercial-software-distribution-handbook). + The following describes the phases of the software distribution lifecycle: * **[Develop](#develop)**: Application design and architecture decisions align with customer needs, and development teams can quickly iterate on new features. diff --git a/docs/partials/preflights/_preflights-sb-about.mdx b/docs/partials/preflights/_preflights-sb-about.mdx new file mode 100644 index 0000000000..f899f05d24 --- /dev/null +++ b/docs/partials/preflights/_preflights-sb-about.mdx @@ -0,0 +1,5 @@ +Preflight checks and support bundles are provided by the Troubleshoot open source project, which is maintained by Replicated. Troubleshoot is a kubectl plugin that provides diagnostic tools for Kubernetes applications. For more information, see the open source [Troubleshoot](https://troubleshoot.sh/docs/collect/) documentation. + +Preflight checks and support bundles analyze data from customer environments to provide insights that help users to avoid or troubleshoot common issues with an application: +* **Preflight checks** run before an application is installed to check that the customer environment meets the application requirements. +* **Support bundles** collect troubleshooting data from customer environments to help users diagnose problems with application deployments. \ No newline at end of file diff --git a/docs/vendor/preflight-support-bundle-about.md b/docs/vendor/preflight-support-bundle-about.mdx similarity index 93% rename from docs/vendor/preflight-support-bundle-about.md rename to docs/vendor/preflight-support-bundle-about.mdx index cc9e7f615b..844c1aee11 100644 --- a/docs/vendor/preflight-support-bundle-about.md +++ b/docs/vendor/preflight-support-bundle-about.mdx @@ -1,14 +1,12 @@ +import Overview from "../partials/preflights/_preflights-sb-about.mdx" + # About Preflight Checks and Support Bundles This topic provides an introduction to preflight checks and support bundles, which are provided by the [Troubleshoot](https://troubleshoot.sh/) open source project. ## Overview -Preflight checks and support bundles are provided by the Troubleshoot open source project, which is maintained by Replicated. Troubleshoot is a kubectl plugin that provides diagnostic tools for Kubernetes applications. For more information, see the open source [Troubleshoot](https://troubleshoot.sh/docs/collect/) documentation. - -Preflight checks and support bundles analyze data from customer environments to provide insights that help users to avoid or troubleshoot common issues with an application: -* **Preflight checks** run before an application is installed to check that the customer environment meets the application requirements. -* **Support bundles** collect troubleshooting data from customer environments to help users diagnose problems with application deployments. + Preflight checks and support bundles consist of _collectors_, _redactors_, and _analyzers_ that are defined in a YAML specification. When preflight checks or support bundles are executed, data is collected, redacted, then analyzed to provide insights to users, as illustrated in the following diagram: From 5c8248119afeb2c3b0a05dcbe673642d34551216 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Thu, 14 Nov 2024 14:23:54 -0700 Subject: [PATCH 21/30] edits --- docs/intro-kots.mdx | 8 ++++---- docs/intro-replicated.mdx | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/intro-kots.mdx b/docs/intro-kots.mdx index 5f6069f048..65306e1954 100644 --- a/docs/intro-kots.mdx +++ b/docs/intro-kots.mdx @@ -16,7 +16,7 @@ KOTS communicates securely with the Replicated Vendor Portal to synchronize cust Installing an application with KOTS provides access to feautures such as: -* Support for air gap installations +* Support for air gap installations in environments with limited or no outbound internet access * Support for installations on VMs or bare metal servers, when using Replicated Embedded Cluster or Replicated kURL * The KOTS Admin Console, which provides a user interface where customers can install and manage their application instances * Instance telemetry automatically sent to the Vendor Portal for instances running in customer environments @@ -31,7 +31,7 @@ KOTS is an open source project that is maintained by Replicated. For more inform KOTS can be used to install Kubernetes applications and Helm charts in the following environments: * Clusters provisioned on VMs or bare metal servers with Replicated Embedded Cluster or Replicated kURL * Existing clusters brought by the user -* Online (internet-connected) or air-gapped (disconnected) clusters +* Online (internet-connected) or air-gapped (disconnected) environments To install an application with KOTS, users first run an installation script that installs KOTS in the target cluster and deploys the KOTS Admin Console. After KOTS is installed, users can log in to the KOTS Admin Console to upload their license file, configure the application, run preflight checks, and install and deploy the application. @@ -44,9 +44,9 @@ The following diagram demonstrates how a single release promoted to the Stable c As shown in the diagram above: * For installations in existing online (internet-connected) clusters, users run a command to install KOTS in their cluster. * For installations on VMs or bare metal servers, users run an Embedded Cluster or kURL installation script that both provisions a cluster in their environment and installs KOTS in the cluster. -* For installations in air-gapped clusters with no outbound internet access, users download air gap bundles for KOTS and the application from the Replicated Download Portal and then provide the bundles during installation. +* For installations in air-gapped clusters, users download air gap bundles for KOTS and the application from the Replicated Download Portal and then provide the bundles during installation. -All users must provide a license file to install with KOTS. After KOTS is installed in the cluster, users can access the KOTS Admin Console to provide their license file and deploy the application. +All users must have a valid license file to install with KOTS. After KOTS is installed in the cluster, users can access the KOTS Admin Console to provide their license and deploy the application. For more information about how to install applications with KOTS, see the [Installing an Application](/enterprise/installing-overview) section. diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index c4d659554a..25fe20a3da 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -145,11 +145,11 @@ For more information about working with customers and custom license fields, see ### Install -Applications distributed with the Replicated Platform can support multiple different installation methods from the same application release. +Applications distributed with the Replicated Platform can support multiple different installation methods from the same application release, helping you to meet your customers where they are: -The primary recommended installation methods include: -* **Replicated Embedded Cluster**: With Embedded Cluster, Kubernetes and the application are delivered together as a single appliance, allowing customers to install on VMs or bare metal servers. Embedded Cluster uses Replicated KOTS to install the application and supports installation in online and air gap environments. For more information, see [Using Emebdded Cluster](/vendor/embedded-overview). -* **Helm**: Helm installations can be enhanced with Replicated components like the Replicated SDK, which provides instance telemetry and other features through an in-cluster API, and the Replicated proxy registry, which provides proxy access to private images. For more information, see [Installing with Helm](/vendor/install-with-helm). +* Customers who are not experienced with Kubernetes or who prefer to deploy to a dedicated cluster in their environment can install on a VM or bare metal server with the Replicated Embedded Cluster installer. For more information, see [Using Embedded Cluster](/vendor/embedded-overview). +* Customers familiar with Kubernetes and Helm can install in their own existing cluster using Helm. For more information, see [Installing with Helm](/vendor/install-with-helm). +* Customers with limited or no outbound internet access can securely access and push images to their own internal registry, then install using Helm or a Replicated installer. For more information, see [Air Gap Installation with Embedded Cluster](/enterprise/installing-embedded-air-gap) and [Installing and Updating with Helm in Air Gap Environments (Alpha)](/vendor/helm-install-airgap). ### Report From 5f864183688f24b91ec453779eb5e7df495ac6c4 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Thu, 14 Nov 2024 14:39:27 -0700 Subject: [PATCH 22/30] edits to kots intro --- docs/intro-kots.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/intro-kots.mdx b/docs/intro-kots.mdx index 65306e1954..ba383ab8ad 100644 --- a/docs/intro-kots.mdx +++ b/docs/intro-kots.mdx @@ -64,6 +64,12 @@ The following shows an example of the Admin Console dashboard for an application [View a larger version of this image](/images/guides/kots/application.png) +For applications installed with Replicated Embedded Cluster in a VM or bare metal server, the Admin Console also includes a **Cluster Management** tab where users can add and manage nodes in the embedded cluster, as shown below: + +![Admin console dashboard with Cluster Management tab](/images/gitea-ec-ready.png) + +[View a larger version of this image](/images/gitea-ec-ready.png) + ### KOTS CLI The KOTS command-line interface (CLI) is a kubectl plugin. Customers can run commands with the KOTS CLI to install and manage their application instances with KOTS programmatically. From 5036a18c281b7d7e9a281ff03960f9c055701311 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Mon, 2 Dec 2024 12:15:19 -0700 Subject: [PATCH 23/30] edits --- docs/intro-kots.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro-kots.mdx b/docs/intro-kots.mdx index 33c2cd4b6f..e3f9000a3a 100644 --- a/docs/intro-kots.mdx +++ b/docs/intro-kots.mdx @@ -35,7 +35,7 @@ KOTS can be used to install Kubernetes applications and Helm charts in the follo To install an application with KOTS, users first run an installation script that installs KOTS in the target cluster and deploys the KOTS Admin Console. After KOTS is installed, users can log in to the KOTS Admin Console to upload their license file, configure the application, run preflight checks, and install and deploy the application. -The following diagram demonstrates how a single release promoted to the Stable channel in the Vendor Portal can be installed using KOTS on a VM, in an air gap cluster, and in an existing internet-connected cluster: +The following diagram demonstrates how a single release promoted to the Stable channel in the Vendor Portal can be installed with KOTS in an embedded cluster on a VM, in an existing air-gapped cluster, and in an existing internet-connected cluster: Embedded cluster, air gap, and existing cluster app installation workflows From 49fb00bd6f0ad9c73cd74b1f60521b8372b34d5c Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Mon, 2 Dec 2024 12:22:36 -0700 Subject: [PATCH 24/30] edit diagram description --- docs/intro-replicated.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index 25fe20a3da..d075c1f11a 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -29,9 +29,9 @@ The following diagram demonstrates the process of using the Replicated Platform The diagram above shows an application that is packaged with the [**Replicated SDK**](replicated-sdk-overview). The application is tested in clusters provisioned with the [**Replicated Compatibility Matrix**](testing-about), then added to a new release in the [**Vendor Portal**](/vendor/releases-about) using an automated CI/CD pipeline. -The application is then installed by a customer ("Big Bank") in a VM. To install, the customer downloads their license, which grants proxy access to the application images through the [**Replicated proxy registry**](/vendor/private-images-about). They also download the installation assets for the [**Replicated Embedded Cluster**](/vendor/embedded-overview) installer. +The application is then installed by a customer ("Big Bank") on a VM. To install, the customer downloads their license, which grants proxy access to the application images through the [**Replicated proxy registry**](/vendor/private-images-about). They also download the installation assets for the [**Replicated Embedded Cluster**](/vendor/embedded-overview) installer. -Embedded Cluster runs [**preflight checks**](preflight-support-bundle-about) to verify that the environment meets the installation requirements, provisions a cluster on the VM, and uses [**Replicated KOTS**](intro-kots) to deploy the application. KOTS provides an [**Admin Console**](intro-kots#kots-admin-console) where the customer can manage the application and the cluster. +Embedded Cluster runs [**preflight checks**](preflight-support-bundle-about) to verify that the environment meets the installation requirements, provisions a cluster on the VM, and installs [**Replicated KOTS**](intro-kots) in the cluster. KOTS provides an [**Admin Console**](intro-kots#kots-admin-console) where the customer enters application-specific configurations, runs application preflight checks, optionally joins nodes to the cluster, and then deploys the application. After installation, customers can manage both the application and the cluster from the Admin Console. Finally, the diagram shows how [**instance data**](instance-insights-event-data) is automatically sent from the customer environment to the Vendor Portal by the Replicated SDK API and the KOTS Admin Console. Additionally, tooling from the open source [**Troubleshoot**](https://troubleshoot.sh/docs/collect/) project is used to generate and send [**support bundles**](preflight-support-bundle-about), which include logs and other important diagnostic data. From 641221f410cbf3f26d15c1117b023495ff4f8ef5 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Mon, 2 Dec 2024 12:41:33 -0700 Subject: [PATCH 25/30] edits --- docs/intro-replicated.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index d075c1f11a..b7cd2d0d68 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -49,7 +49,7 @@ For more information, see [About Compatibility Matrix](/vendor/testing-about). Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together as a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ with the application. -Additionally, each version of Embedded Cluster includes a specific version of the Replicated KOTS installer. KOTS is used to install the application and also provides the Admin Console. +Additionally, each version of Embedded Cluster includes a specific version of Replicated KOTS that is installed in the cluster during installation. KOTS is used by Embedded Cluster to deploy the application and also provides the Admin Console UI where users can manage both the application and the cluster. For more information, see [Using Embedded Cluster](/vendor/embedded-overview). @@ -57,7 +57,9 @@ For more information, see [Using Embedded Cluster](/vendor/embedded-overview). KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. -The Admin Console is the user interface for installing and managing applications with KOTS. KOTS also provides a CLI that can be used to programmatically install and manage applications. +KOTS is used by Replicated Embedded Cluster to deploy applications and also to provide the Admin Console UI where users can manage both the application and the cluster. Embedded Cluster automatically installs KOTS during installation. + +KOTS can also be used to install applications in existing Kubernetes clusters in customer-controlled environments, including clusters in air-gapped environments with limited or no outbound internet access. For more information, see [Introduction to KOTS](intro-kots). From 5cce2d99739f846175b4bf02b783a9e31d9da80d Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Mon, 2 Dec 2024 12:45:49 -0700 Subject: [PATCH 26/30] edits --- docs/intro-replicated.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index b7cd2d0d68..ba79817278 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -49,15 +49,15 @@ For more information, see [About Compatibility Matrix](/vendor/testing-about). Replicated Embedded Cluster is a Kubernetes installer based on the open source Kubernetes distribution k0s. With Embedded Cluster, users install and manage both the cluster and the application together as a single appliance on a VM or bare metal server. In this way, Kubernetes is _embedded_ with the application. -Additionally, each version of Embedded Cluster includes a specific version of Replicated KOTS that is installed in the cluster during installation. KOTS is used by Embedded Cluster to deploy the application and also provides the Admin Console UI where users can manage both the application and the cluster. +Additionally, each version of Embedded Cluster includes a specific version of [Replicated KOTS](#kots) that is installed in the cluster during installation. KOTS is used by Embedded Cluster to deploy the application and also provides the Admin Console UI where users can manage both the application and the cluster. For more information, see [Using Embedded Cluster](/vendor/embedded-overview). -### KOTS (Admin Console) +### KOTS (Admin Console) {#kots} KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. -KOTS is used by Replicated Embedded Cluster to deploy applications and also to provide the Admin Console UI where users can manage both the application and the cluster. Embedded Cluster automatically installs KOTS during installation. +KOTS is used by [Replicated Embedded Cluster](#embedded-cluster) to deploy applications and also to provide the Admin Console UI where users can manage both the application and the cluster. Embedded Cluster automatically installs KOTS during installation. KOTS can also be used to install applications in existing Kubernetes clusters in customer-controlled environments, including clusters in air-gapped environments with limited or no outbound internet access. @@ -151,7 +151,7 @@ Applications distributed with the Replicated Platform can support multiple diffe * Customers who are not experienced with Kubernetes or who prefer to deploy to a dedicated cluster in their environment can install on a VM or bare metal server with the Replicated Embedded Cluster installer. For more information, see [Using Embedded Cluster](/vendor/embedded-overview). * Customers familiar with Kubernetes and Helm can install in their own existing cluster using Helm. For more information, see [Installing with Helm](/vendor/install-with-helm). -* Customers with limited or no outbound internet access can securely access and push images to their own internal registry, then install using Helm or a Replicated installer. For more information, see [Air Gap Installation with Embedded Cluster](/enterprise/installing-embedded-air-gap) and [Installing and Updating with Helm in Air Gap Environments (Alpha)](/vendor/helm-install-airgap). +* Customers installing into environments with limited or no outbound internet access (often referred to as air-gapped environments) can securely access and push images to their own internal registry, then install using Helm or a Replicated installer. For more information, see [Air Gap Installation with Embedded Cluster](/enterprise/installing-embedded-air-gap) and [Installing and Updating with Helm in Air Gap Environments (Alpha)](/vendor/helm-install-airgap). ### Report From a14f8e6485343ab8ad12e79b3d66f300ac63c071 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Mon, 2 Dec 2024 12:47:50 -0700 Subject: [PATCH 27/30] edits --- docs/intro-replicated.mdx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/intro-replicated.mdx b/docs/intro-replicated.mdx index ba79817278..efe85d3873 100644 --- a/docs/intro-replicated.mdx +++ b/docs/intro-replicated.mdx @@ -57,9 +57,7 @@ For more information, see [Using Embedded Cluster](/vendor/embedded-overview). KOTS is a kubectl plugin and in-cluster Admin Console that installs Kubernetes applications in customer-controlled environments. -KOTS is used by [Replicated Embedded Cluster](#embedded-cluster) to deploy applications and also to provide the Admin Console UI where users can manage both the application and the cluster. Embedded Cluster automatically installs KOTS during installation. - -KOTS can also be used to install applications in existing Kubernetes clusters in customer-controlled environments, including clusters in air-gapped environments with limited or no outbound internet access. +KOTS is used by [Replicated Embedded Cluster](#embedded-cluster) to deploy applications and also to provide the Admin Console UI where users can manage both the application and the cluster. KOTS can also be used to install applications in existing Kubernetes clusters in customer-controlled environments, including clusters in air-gapped environments with limited or no outbound internet access. For more information, see [Introduction to KOTS](intro-kots). @@ -147,7 +145,7 @@ For more information about working with customers and custom license fields, see ### Install -Applications distributed with the Replicated Platform can support multiple different installation methods from the same application release, helping you to meet your customers where they are: +Applications distributed with the Replicated Platform can support multiple different installation methods from the same application release, helping you to meet your customers where they are. For example: * Customers who are not experienced with Kubernetes or who prefer to deploy to a dedicated cluster in their environment can install on a VM or bare metal server with the Replicated Embedded Cluster installer. For more information, see [Using Embedded Cluster](/vendor/embedded-overview). * Customers familiar with Kubernetes and Helm can install in their own existing cluster using Helm. For more information, see [Installing with Helm](/vendor/install-with-helm). From e90de437783efcb6375b156c1cfd262e6e560ef7 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Thu, 5 Dec 2024 15:31:54 -0700 Subject: [PATCH 28/30] md error --- netlify.toml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/netlify.toml b/netlify.toml index 0b94a25db8..cea4408a4f 100644 --- a/netlify.toml +++ b/netlify.toml @@ -128,19 +128,11 @@ [[redirects]] from="https://docs.replicated.com/vendor/helm-overview" -<<<<<<< HEAD to="https://docs.replicated.com/vendor/helm-native-about" -[[redirects]] - from="https://docs.replicated.com/vendor/helm-install" - to="https://docs.replicated.com/vendor/helm-native-about" -======= - to="https://docs.replicated.com/vendor/helm-install-overview" - [[redirects]] from="https://docs.replicated.com/vendor/helm-install" to="https://docs.replicated.com/vendor/helm-install-overview" ->>>>>>> main [[redirects]] from="https://docs.replicated.com/vendor/testing-replicated-instance-types" From 4c4f029265b6bd4a43f0f9641ec915c331510f93 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Thu, 5 Dec 2024 15:34:12 -0700 Subject: [PATCH 29/30] redundant redirect --- netlify.toml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/netlify.toml b/netlify.toml index cea4408a4f..1792fe6827 100644 --- a/netlify.toml +++ b/netlify.toml @@ -190,11 +190,7 @@ [[redirects]] from = "https://docs.replicated.com/vendor/embedded-kubernetes-overview" - to = "https://docs.replicated.com/vendor/embedded-overview" - -[[redirects]] - from = "https://docs.replicated.com/vendor/distributing-overview" - to = "https://docs.replicated.com/intro-replicated" + to = "https://docs.replicated.com/vendor/embedded-overview" ################################################### # Redirects To the Enterprise Section From 2be211f68780fcf2dd0adbe27c578e544ffc3205 Mon Sep 17 00:00:00 2001 From: Paige Calvert Date: Thu, 5 Dec 2024 15:37:11 -0700 Subject: [PATCH 30/30] fix redirect --- netlify.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netlify.toml b/netlify.toml index 1792fe6827..7d0cda8f20 100644 --- a/netlify.toml +++ b/netlify.toml @@ -128,7 +128,7 @@ [[redirects]] from="https://docs.replicated.com/vendor/helm-overview" - to="https://docs.replicated.com/vendor/helm-native-about" + to="https://docs.replicated.com/vendor/helm-install-overview" [[redirects]] from="https://docs.replicated.com/vendor/helm-install"