KOTS Add-On

The KOTS add-on installs an admin console for managing KOTS apps.

By default, this add-on requires an S3-compatible object store be available in the cluster. Both the Rook and the MinIO add-ons satisfy the object store requirement. To deploy KOTS without an object store, set the disableS3 flag in the installer to true. This will install KOTS as a StatefulSet using a persistent volume (PV) for storage.

Advanced Install Options

spec:
  kotsadm: 
    version: "latest"
    applicationSlug: "slug"
    uiBindPort: 8800
    hostname: "hostname"
    applicationNamespace: "kots"
    disableS3: true

Flag Usage
version The version of kotsadm to be installed.
applicationSlug The slug shown on the app settings page of vendor web
uiBindPort This is the port where the KOTS admin console can be interacted with via browser
hostname The hostname that the admin console will be exposed on
applicationNamespace An additional namespace that should be pre-created during the install (For applications that install to other namespaces outside of the one where kotsadm is running)
disableS3 Migrate application archives and support bundles from S3 and use a local volume in the kotsadm statefulset instead. Also changes nfs and hostpath snapshots from using minio to using the local-volume-provider plugin. The migration process is irreversible and will replace the kotsadm deployment with a statefulset. While this reduces KOTS's dependency on an object store for the application archives and support bundles, an object store is still required to deploy KOTS. Defaults to 'false.'

Effects of the disableS3 Flag

Object storage is used by the KOTS add-on in the following ways:

  1. Directly, as a way for the admin console to store support bundles and previous versions of your application.
  2. Directly, when hostpath or NFS snapshot storage locations are set in the admin console. The admin console will dynamically create a MinIO instance and attach it to the specified source.
  3. Indirectly, as part of the Registry add-on, to store container images in air gap deployments.
  4. Indirectly, as part of the Velero add-on, to store snapshots in the cluster using the Internal Storage option.

When the disableS3 flag is set to true, the admin console will switch to use a PV for all of the direct operations mentioned above. Necessary migrations will be performed. It will also have the following effects outside of the KOTS add-on:

  1. For new installs, the Registry add-on behavior will not change. It will use an object store if it is available, and otherwise it will use a PV. For upgrades or re-installs, a migration of the registry contents will only be performed from an object store to a PV if the object store is also removed from the installer spec.
  2. For new installs, the Velero add-on will use a PV instead of object storage for storing snapshots to the Internal Storage location. For upgrades or re-installs, snapshots stored to the Internal Storage location will be migrated from the object store to a PV.

Note: The flag must be set to perform migrations.

Airgap Example

For installing KOTS apps in airgap mode, the registry add-on must also be included.

apiVersion: "cluster.kurl.sh/v1beta1"
kind: "Installer"
spec:
  kubernetes:
    version: latest
  containerd: 
    version: latest
  weave:
    version: latest
  rook:
    version: latest
  ekco:
    version: latest
  registry:
    version: latest
  kotsadm: 
    version: latest

Online Example with MinIO

apiVersion: "cluster.kurl.sh/v1beta1"
kind: "Installer"
spec:
  kubernetes:
    version: latest
  containerd: 
    version: latest
  weave:
    version: latest
  openebs:
    version: latest
    isLocalPVEnabled: true
    localPVStorageClassName: default
  minio:
    version: latest
  registry:
    version: latest
  kotsadm: 
    version: latest

Example without Object Storage

apiVersion: "cluster.kurl.sh/v1beta1"
kind: "Installer"
spec:
  kubernetes:
    version: latest
  docker: 
    version: latest
  weave:
    version: latest
  longhorn:
    version: latest
  registry:
    version: latest
  kotsadm: 
    version: latest
    disableS3: true