A new platform for documentation and tutorials is launching soon.
We are migrating Consul documentation into HashiCorp Developer, our new developer experience.
»Self Hosted Kubernetes
Except for creating persistent volumes and ensuring there is a storage class configured (see below), installing Consul on your self-hosted Kubernetes cluster is the same process as installing Consul on a cloud-hosted Kubernetes cluster. See the Installation Overview for install instructions.
»Predefined Persistent Volume Claims (PVCs)
If running a self-hosted Kubernetes installation, you may need to pre-create the persistent volumes for the stateful set that the Consul servers run in.
The only way to use a pre-created PVC is to name them in the format Kubernetes expects:
data-<kubernetes namespace>-<helm release name>-consul-server-<ordinal>
The Kubernetes namespace you are installing into, Helm release name, and ordinal must match between your Consul servers and your pre-created PVCs. You only need as many PVCs as you have Consul servers. For example, given a Kubernetes namespace of "vault," a release name of "consul," and 5 servers, you would need to create PVCs with the following names:
data-vault-consul-consul-server-0 data-vault-consul-consul-server-1 data-vault-consul-consul-server-2 data-vault-consul-consul-server-3 data-vault-consul-consul-server-4
Your Kubernetes installation must either have a default storage class specified (see https://kubernetes.io/docs/concepts/storage/storage-classes/ and https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/) or you must specify the storage class for the Consul servers:
server: storageClass: your-class
See the Helm reference for that setting for more information.