Skip to main content


Upload Kubernetes manifests from the local filesystem, creating a new version of the application that can be deployed. When you have a copy of an application that was created with kots pull or kots download, you can upload it back to the Admin Console using the kots upload command.


kubectl kots upload [source] [flags]
  • Replace [source] with a directory containing the manifests of your KOTS application (required).
  • Provide [flags] according to the table below

This command supports all global flags and also:

-h, --helphelp for upload
--namestringthe name of the kotsadm application to create
-n, --namespacestringthe namespace to upload to (default "default")
--slugstringthe application slug to use. if not present, a new one will be created
--upstream-uristringthe upstream uri that can be used to check for updates
--deployboolwhen set, automatically deploy the uploaded version
--skip-preflightsboolset to true to skip preflight checks
-o, --outputstringoutput format (currently supported: json) (defaults to plain text if not set)

Any plainText values in the upstream/userdata/config.yaml file will be re-encrypted using the application cipher automatically, if the matching config item is a password type. If both an encrypted and plainText value is provided on a single item, the plainText value will overwrite the encrypted value, if they differ.

About Strict Preflight Checks

If any strict preflight checks are configured, the --skip-preflights flag are not honored because the preflight checks must run and contain no failures before the application is deployed.

When the --deploy option is provided and there are strict preflight checks, the preflight checks always run. The deployment waits for up to 15 minutes for the preflight checks to complete. If the checks complete without strict preflight failures, the release deploys. If the checks do not complete within 15 minutes, the release does not deploy. If there are one or more strict preflight failures, the release does not deploy.

For more information about strict preflight checks, see Defining Preflight Checks.


kubectl kots upload ./manifests --name kots-sentry --namespace kots-sentry --slug kots-sentry --upstream-uri kots-sentry/unstable