k8s-clusters/home
2022-07-05 17:14:31 -05:00
..
manifests Add alpine playground that should really be a deployment 2022-07-05 17:14:31 -05:00
talos Cleanup and add echoserver 2022-07-05 15:53:37 -05:00
.gitignore Add talos cluster stuff 2022-07-03 16:19:22 -05:00
readme.md CASING 2022-07-05 15:55:25 -05:00

Home Cluster

NOTE: Scripts below are in fish shell.

TODO

Setup

Networking

  • Prepare networking
    • Internally:
      • Add a DNS entry for the cluster endpoint (router's /etc/hosts + dnsmasq) to point to the initial node
    • Externally:
      • Add a DNS entry for the cluster endpoint to point to the router
      • Setup the router to forward external requests to the initial node

Setup Kubernetes Cluster

Source: https://www.talos.dev/v1.1/introduction/getting-started/

  • Setup talos directory if needed
    • mkdir -p talos; cd talos
  • Boot the Talos image on the initial node
  • If you are not using this configuration:
    • talosctl gen config "$CLUSTER_NAME" "$CLUSTER_ENDPOINT"
    • Edit files as needed
    • Encrypt via sops with age
      • for f in *; sops --encrypt --age-key "$AGE_KEY" --in-place "$f"; end
  • Apply the control plane config to the initial node
    • sops exec-file controlplane.yaml 'talosctl apply-config --insecure --nodes "$NODE_ADDR" --file {}'
    • You will need to wait a bit for the configuration to be applied, Talos to install itself, for the node to reboot, and for post-boot initialization
  • Setup the client to communicate with the newly-configured node
    • sops --set '["contexts"]["'"$CLUSTER_NAME"'"]["endpoints"] ["'"$NODE_ADDR"'"]' talosconfig
      • Optionally also make this the default in ~/.talos/config with sops exec-file talosconfig 'talosctl config merge {}'
  • Bootstrap the cluster
    • talosctl bootstrap --nodes "$NODE_ADDR"
    • You will need to wait a bit for Kubernetes to initialize
  • Pull down the kubeconfig
    • talosctl kubeconfig

Once the cluster has finished initializing and starting up, you should be able to kubectl get nodes.

Adding Nodes

NOTE: UNTESTED

  • Boot the Talos image on the target node
  • Apply the appropriate configuration to the target node
    • sops exec-file "$CONFIG_FILE" 'talosctl apply-config --insecure --nodes "$NODE_ADDR" --file {}'
    • You will need to wait a bit for Kubernetes to initialize, start up, and then join the cluster

Untaint Masters

Since we're "frugal" (cheap) and we want to use all the hardware for all the things:

kubectl taint nodes --all node-role.kubernetes.io/master-

Apply Initialization Manifests

kubectl apply -k manifests/initialization

Setting up GitOps

TODO

Storage

TODO

Load Balancing

I can probably handle this with my router?

TODO