add docs
This commit is contained in:
parent
04d764c492
commit
5d917e1bc3
84
README.md
Normal file
84
README.md
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
## `garage-cluster`
|
||||||
|
|
||||||
|
*Get started with Garage in Kubernetes!*
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
|
||||||
|
Extremely opinionated tools to deploy Garage to Kubernetes and manage it.
|
||||||
|
|
||||||
|
Actually, these are _my_ tools. You're welcome to borrow them.
|
||||||
|
|
||||||
|
### Creating a Garage Cluster
|
||||||
|
|
||||||
|
To create a Garage cluster, you must do the following:
|
||||||
|
|
||||||
|
* prepare your nodes:
|
||||||
|
|
||||||
|
* all nodes should participate even if they don't have storage for maximum
|
||||||
|
flexibility (load balancing, localhost endpoint for Garage). this repo
|
||||||
|
doesn't setup anything ot make use of this flexibility but it may or you
|
||||||
|
may. you'll want to remove capacity (`-c 10G`) from nodes which won't
|
||||||
|
store and add `-g` for gateway instead.
|
||||||
|
|
||||||
|
* nodes which will have storage should have that storage added via LVM so
|
||||||
|
that you can add storage in the future. This DaemonSet-based Garage
|
||||||
|
cluster does _not_ account for multiple HDDs even though they're supported
|
||||||
|
by Garage. To expand your storage, you'll need LVM.
|
||||||
|
|
||||||
|
* partition partitions, format them, and mount them
|
||||||
|
|
||||||
|
NVME_VG=nvme-vg
|
||||||
|
HDD_VG=hdd-vg
|
||||||
|
lvcreate -L 1G $NVME_VG -n garage-meta
|
||||||
|
mkfs.btrfs /dev/$NVME_VG/garage-meta
|
||||||
|
lvcreate -L 10G $HDD_VG -n garage-data
|
||||||
|
mkfs.xfs /dev/$HDD_VG/garage-data
|
||||||
|
echo "/dev/$NVME_VG/garage-meta /var/lib/garage/meta btrfs defaults 0 2" >> /etc/fstab
|
||||||
|
echo "/dev/$HDD_VG/garage-data /var/lib/garage/data xfs defaults 0 2" >> /etc/fstab
|
||||||
|
mount /var/lib/garage/{meta,data}
|
||||||
|
|
||||||
|
* modify the contents of `cm.yaml`:
|
||||||
|
|
||||||
|
* The daemonset will translate these entries into a `garage.toml` file for
|
||||||
|
you. to place something into a section, prefix it with a period.
|
||||||
|
|
||||||
|
* Settings to check: `replication_factor`, `s3_api.root_domain`,
|
||||||
|
`s3_web.root_domain`
|
||||||
|
|
||||||
|
* You may also include bootstrap peers here if you like. if you do not,
|
||||||
|
you'll need to connect them via the tools which may be more convenient
|
||||||
|
anyway. don't worry about this if you're not sure what to do yet.
|
||||||
|
|
||||||
|
* Modify the contents of `ingress.yaml` to match your controller's requirements
|
||||||
|
and/or your hostname and prefix.
|
||||||
|
|
||||||
|
* Apply the manifests:
|
||||||
|
|
||||||
|
kubectl apply -f .
|
||||||
|
echo "Ctrl-C to exit"
|
||||||
|
kubectl get ds -w
|
||||||
|
|
||||||
|
* Bootstrap the nodes once they've started:
|
||||||
|
|
||||||
|
./tools connect
|
||||||
|
|
||||||
|
* Alias `garage` to use your kubernetes pods:
|
||||||
|
|
||||||
|
./tools env >> ~/.bashrc
|
||||||
|
|
||||||
|
* Generate a sample layout to start:
|
||||||
|
|
||||||
|
If you have the node feature discovery plugin, this may expose likely capacity
|
||||||
|
values. If you do not have the plugin, it will default to 10G for every node.
|
||||||
|
|
||||||
|
You should almost certainly edit the resulting commands before applying them to
|
||||||
|
your cluster. `$PWD/tools` is used to make the resulting script relocatable.
|
||||||
|
|
||||||
|
$PWD/tools generate-layout -z my-zone > run-layout.sh
|
||||||
|
$EDITOR run-layout.sh
|
||||||
|
./run-layout.sh
|
||||||
|
garage layout show
|
||||||
|
read -p 'everything look good? press enter to continue or ctrl-c to abort'
|
||||||
|
garage layout apply
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user