Consul
Install Consul on K8s CLI
Install Consul on Kubernetes from Consul K8s CLI
This topic describes how to install Consul on Kubernetes using the Consul K8s CLI tool. The Consul K8s CLI tool enables you to quickly install and interact with Consul on Kubernetes. Use the Consul K8s CLI tool to install Consul on Kubernetes if you are deploying a single cluster. We recommend using the Helm chart installation method if you are installing Consul on Kubernetes for multi-cluster deployments that involve cross-partition or cross datacenter communication.
Introduction
If it is your first time installing Consul on Kubernetes, then you must first install the Consul K8s CLI tool. You can install Consul on Kubernetes using the Consul K8s tool after installing the CLI.
Requirements
- The
kubectl
client must already be configured to authenticate to the Kubernetes cluster using a validkubeconfig
file. - Install one of the following package managers so that you can install the Consul K8s CLI tool. The installation instructions also provide commands for installing and using the package managers:
- MacOS: Homebrew
- Ubuntu/Debian: apt
- CentOS/RHEL: yum
You must install the correct version of the CLI for your Consul on Kubernetes deployment. To deploy a previous version of Consul on Kubernetes, download the specific version of the CLI that matches the version of the control plane that you would like to deploy. Refer to the compatibility matrix for details.
Install the CLI
The following instructions describe how to install the latest version of the Consul K8s CLI tool, as well as earlier versions, so that you can install an appropriate version of tool for your control plane.
Install the latest version
Complete the following instructions for a fresh installation of Consul on Kubernetes.
The Homebrew package manager is required to complete the following installation instructions. The Homebrew formulae always installs the latest version of a binary.
Install the HashiCorp
tap
, which is a repository of all Homebrew packages for HashiCorp:$ brew tap hashicorp/tap
Install the Consul K8s CLI with
hashicorp/tap/consul
formula.$ brew install hashicorp/tap/consul-k8s
If you have already provisioned a Kubernetes cluster and have already configured access to the cluster via a
kubeconfig
file, you are ready to install Consul K8s. Issue theinstall
subcommand to install Consul on Kubernetes:$ consul-k8s install <OPTIONS>
(Optional) Issue the
consul-k8s version
command to verify the installation:$ consul-k8s version consul-k8s 0.39.0
Install a previous version
Complete the following instructions to install a specific version of the CLI so that your tool is compatible with your Consul on Kubernetes control plane. Refer to the compatibility matrix for additional information.
Download the appropriate version of Consul K8s CLI using the following
curl
command. Set the$VERSION
environment variable to the appropriate version for your deployment.$ export VERSION=0.39.0 && \ curl --location "https://releases.hashicorp.com/consul-k8s/${VERSION}/consul-k8s_${VERSION}_darwin_amd64.zip" --output consul-k8s-cli.zip
Unzip the zip file output to extract the
consul-k8s
CLI binary. This overwrites existing files and also creates a.consul-k8s
subdirectory in your$HOME
folder.$ unzip -o consul-k8s-cli.zip -d ~/.consul-k8s
Add the path to your directory. In order to persist the
$PATH
across sessions, you will need to add this to your shellrc (i.e. shell run commands) file for the shell used by your terminal.$ export PATH=$PATH:$HOME/.consul-k8s/
(Optional) Issue the
consul-k8s version
command to verify the installation.$ consul-k8s version consul-k8s 0.39.0
Install Consul on Kubernetes
After installing the Consul K8s CLI tool (consul-k8s
), issue the install
subcommand and any additional options to install Consul on Kubernetes. Refer to the Consul K8s CLI reference for details about all commands and available options. If you do not include any additional options, the consul-k8s
CLI installs Consul on Kubernetes using the default settings form the Consul Helm chart values. The following example installs Consul on Kubernetes with service mesh and CRDs enabled.
$ consul-k8s install -set connectInject.enabled=true -set controller.enabled=true
==> Pre-Install Checks
No existing installations found.
✓ No previous persistent volume claims found
✓ No previous secrets found
==> Consul Installation Summary
Installation name: consul
Namespace: consul
Overrides:
connectInject:
enabled: true
controller:
enabled: true
Proceed with installation? (y/N) y
==> Running Installation
✓ Downloaded charts
--> creating 1 resource(s)
--> creating 45 resource(s)
--> beginning wait for 45 resources with timeout of 10m0s
✓ Consul installed into namespace "consul"
You can include the -auto-approve
option set to true
to proceed with the installation if the pre-install checks pass.
The pre-install checks may fail if existing PersistentVolumeClaims
(PVC) are detected. Refer to the uninstall instructions for information about removing PVCs.
Check the Consul cluster status
Issue the consul-k8s status
command to view the status of the installed Consul cluster.
$ consul-k8s status
==> Consul-K8s Status Summary
NAME | NAMESPACE | STATUS | CHARTVERSION | APPVERSION | REVISION | LAST UPDATED
---------+-----------+----------+--------------+------------+----------+--------------------------
consul | consul | deployed | 0.40.0 | 1.11.2 | 1 | 2022/01/31 16:58:51 PST
==> Config:
connectInject:
enabled: true
controller:
enabled: true
global:
name: consul
✓ Consul servers healthy (3/3)
✓ Consul clients healthy (3/3)