Fury on VMs
This step-by-step tutorial helps you deploy a full Kubernetes Fury Cluster on a set of already existing VMs.
The goal of this tutorial is to introduce you to the main concepts of KFD and how to work with its tooling.
Prerequisites
This tutorial assumes some basic familiarity with Kubernetes.
To follow this tutorial, you need:
- kubectl - 1.27.x to interact with the cluster.
- furyagent - to provision initial cluster PKI, install the latest version following the instructions here
- Ansible - used by furyctl to execute the roles from KFD installers
- VMs OS: Rocky linux 8, Debian 12, or Ubuntu 20
- Valid FQDN for all the VMs, with a valid domain: for example, each VM should have a corresponding DNS entry like
worker1.example.tld,worker2.example.tld,master1.worker.tld, etc. - Static IP address for each VM.
- Two VMs for the LoadBalancer Nodes (at least 1vcpu 1GB ram each)
- An additional IP that will be used by keepalived to expose the two loadbalancers in HA, and a DNS record pointed to this IP for the control-plane address.
- Three VMs for the master nodes (at least 2vcpu and 4GB ram each)
- Three VMs for the worker nodes (at least 4vcpu and 8GB ram each)
rootor passwordless sudo user SSH access to the VMs
Step 0 - Setup and initialize the environment
-
Open a terminal
-
Clone the fury getting started repository containing all the example code used in this tutorial:
git clone https://github.com/sighupio/fury-getting-started/
cd fury-getting-started/fury-on-vms
Step 1 - Initialize the PKI
To initialize the Publick Key Infrastructure needed by the several components of the cluster to communicate securely, first, we need to initialize the CA certificates used by Kubernetes and the etcd database. To do that, you need to run the following command:
furyagent init master
furyagent init etcd
The
furyagentcommand needs the filefuryagent.yamlas a configuration, this file is already present in the getting started directory.
After the initalization of the PKI, you should have a pki folder with the following contents:
pki
├── etcd
│ ├── ca.crt
│ └── ca.key