Skip to main content

Installing with the Kubernetes Installer

This article refers to installing an application and the Replicated admin console on a cluster created by the Replicated Kubernetes installer.

The Kubernetes installer is based on the open source kURL project, which is maintained by Replicated. For more information about installing with kURL, including advanced installation options, see the kURL documentation.

Requirements

Before you install, ensure that you meet the system requirements. For more information, see Kubernetes installer requirements.

Install in an Online Environment

To install the admin console on a cluster created by the Kubernetes installer, run the installation script provided by the application vendor.

For example:

curl -sSL https://kurl.sh/APP-SLUG | sudo bash

Where APP-SLUG is the unique slug for the application. The application slug is included in the installation script provided by the vendor.

note

With KOTS v1.67.0 and later, you can install a specific version of the application. Use the app-version-label flag and the version label for a particular version of your vendor's application. For example, curl https://kurl.sh/supergoodtool | sudo bash -s app-version-label=3.1.0.

Install in an Air Gapped Environment

To install in an air gapped environment, download the kURL air gap .tar.gz, extract it, and run the install.sh script:

curl -LO https://k8s.kurl.sh/bundle/FILENAME.tar.gz
tar xvzf FILENAME.tar.gz
cat install.sh | sudo bash -s airgap

Where FILENAME is the name of the kURL air gap .tar.gz file.

note

You can construct the URL for the air gap bundle by prefixing the URL path for online installations as described in Install in an Online Environment above with /bundle and adding .tar.gz to the end.

note

The air gap .tar.gz includes only the admin console components, which are required to install the application.

After this command completes, you can install the application with the application .airgap bundle:

kubectl kots install APP-NAME \
--airgap-bundle PATH-TO-AIRGAP-BUNDLE \
--license-file PATH-TO-LICENSE-FILE \
--config-values PATH-TO-CONFIG-VALUES \
--namespace default \
--shared-password PASSWORD

Where:

  • APP-NAME is a name for the application.
  • PATH-TO-AIRGAP-BUNDLE is the path to the .airgap bundle file.
  • PATH-TO-LICENSE-FILE is the path to the license file.
  • PATH-TO-CONFIG-VALUES is the path to the ConfigValues manifest file.
  • PASSWORD is a shared password.

For more information about the kots install command, see install in the kots CLI documentation.

Install with High Availability

You can include the ha option to install with high availability. Both online and air gapped installations can be configured in high-availability mode.

When installing on a highly available cluster, the script will prompt for a load balancer address. The load balancer can be preconfigured by passing in the load-balancer-address=<host:port> flag.

This load balancer should be configured to distribute traffic to all healthy control plane nodes in its target list. This should be a TCP forwarding load balancer.

The health check for an apiserver is a TCP check on the port the kube-apiserver listens on (default value :6443).

For more information on the kube-apiserver load balancer see Create load balancer for kube-apiserver in the Kubernetes documentation.

In the absence of a load balancer, all traffic will be routed to the first primary.

Online

To install with high availability in an online environment, run:

curl -sSL https://kurl.sh/APP-SLUG | sudo bash -s ha

Where APP-SLUG is the unique slug for the application. The application slug is included in the installation script provided by the vendor.

Air Gap Environment

To install with high availability in an air gapped environment, run the following command after you untar the .tar.gz file:

cat install.sh | sudo bash -s airgap ha

Join Primary and Secondary Nodes

Visit the /cluster/manage page in the admin console to generate scripts for joining additional secondary and primary nodes.

For air gapped installations, the .airgap bundle must also be downloaded and extracted on the remote node prior to running the join script.