Files
wild-cloud/docs/SETUP_FULL.md

3.0 KiB

Wild-cloud Setup

source env.sh

Initialize a personal wild-cloud in any empty directory, for example:

cd ~
mkdir ~/my-wild-cloud
cd my-wild-cloud
wild-init

Cloud configuration

cp config.example.yaml config.yaml
cp secrets.example.yaml secrets.yaml
Core Variables:

- wildcloud.root - Used by wild-config wildcloud.root command
- cluster.name - Cluster name

DNS/Network Variables:

- cloud.dns.ip - DNS server IP for dnsmasq
- cloud.domain - Main public domain
- cloud.internalDomain - Internal/private domain
- cloud.dhcpRange - DHCP range for dnsmasq
- cloud.router.ip - Gateway/router IP
- cloud.dnsmasq.interface - Network interface for dnsmasq
- cloud.dns.externalResolver - External DNS resolver

Cluster Variables:

- cluster.loadBalancerIp - Load balancer IP for services
- cluster.ipAddressPool - MetalLB IP address pool
- cluster.nodes.control.vip - Virtual IP for control plane
- cluster.nodes.control.node1/2/3.ip - Control plane node IPs
- cluster.nodes.control.node1/2/3.interface - Network interfaces
- cluster.nodes.control.node1/2/3.disk - Installation disks
- cluster.nodes.talos.version - Talos version
- cluster.nodes.talos.schematicId - Talos schematic ID

Certificate/DNS Variables:

- operator.email - Email for Let's Encrypt certificates
- cluster.certManager.cloudflare.domain - Domain for Cloudflare DNS challenge
- cluster.externalDns.ownerId - Unique identifier for ExternalDNS

Storage Variables:

- cloud.nfs.host - NFS server host
- cloud.nfs.mediaPath - NFS media path
- cloud.nfs.storageCapacity - Storage capacity for NFS PV

Registry Variables:

- cloud.dockerRegistryHost - Docker registry hostname

Copy setup files.

wild-setup

Dnsmasq

  • Install a Linux machine on your LAN. Record it's IP address in your config:cloud.dns.ip.
  • Ensure it is accessible with ssh.
  • From your wild-cloud directory, run wild-central-generate-setup.
  • Run cluster/dnsmasq/bin/create-setup-bundle.sh
  • Run cluster/dnsmasq/bin/transfer-setup-bundle.sh

Now ssh into your dnsmasq machine and do the following:

sudo -i
cd /root/dnsmasq-setup
./setup.sh

Cluster Setup

# ONE-TIME CLUSTER INITIALIZATION (run once per cluster)
./init-cluster.sh

Join control nodes

Boot each nodes with Talos ISO in maintenance mode.

./detect-node-hardware.sh <maintenance-ip> <node-number>
./generate-machine-configs.sh
talosctl apply-config --insecure -n 192.168.8.168 --file final/controlplane-node-1.yaml

Cluster bootstrap

After all control plane nodes are configured.

# Bootstrap the cluster using any control node
talosctl bootstrap --nodes 192.168.8.31 --endpoint 192.168.8.31

# Get kubeconfig
talosctl kubeconfig

# Verify cluster is ready
kubectl get nodes

Cluster services

./setup/cluster/setup-all.sh
./setup/cluster/validate-setup.sh

Installing Wild-Cloud apps

wild-apps-list
wild-app-fetch <app>
wild-app-config <app>
wild-app-deploy <app>
# Optional: Check in app templates.